Linux运维——网络管理

news2025/2/27 0:03:49

Linux网络管理

  • 一、Linux网络应用要点
  • 二、命令常见用法
    • 2.1、curl
      • 2.1.1、发送GET请求
      • 2.1.2、发送POST请求
      • 2.1.3、设置请求头
      • 2.1.4、处理cookies
      • 2.1.5、处理重定向
      • 2.1.6、调试和详细信息
      • 2.1.7、使用代理
      • 2.1.8、文件上传
      • 2.1.9、其它常用选项
      • 2.1.10、综合示例
    • 2.2、wget
      • 2.2.1、基本用法
      • 2.2.2、断点续传
      • 2.2.3、批量下载
      • 2.2.4、递归下载
      • 2.2.5、限制下载速度
      • 2.2.6、后台下载
      • 2.2.7、处理 cookies
      • 2.2.8、设置用户代理
      • 2.2.9、下载 FTP 文件
      • 2.2.10、其他常用选项
      • 2.2.11、综合示例
    • 2.3、telnet
      • 2.3.1、基本用法
      • 2.3.2、测试端口连通性
      • 2.3.3、交互模式
      • 2.3.4、退出 telnet
      • 2.3.5、 常见用途
      • 2.3.6、注意事项
    • 2.4、IP
      • 2.4.1、 查看网络接口信息
      • 2.4.2、启用或禁用网络接口
      • 2.4.3、查看 IP 地址
      • 2.4.4、添加或删除 IP 地址
      • 2.4.5、查看路由表
      • 2.4.6、添加或删除路由
      • 2.4.7、查看 ARP 表
      • 2.4.8、查看网络统计信息
      • 2.4.9、修改接口属性
      • 2.4.10、综合示例
    • 2.5、hostname
      • 2.5.1、查看当前主机名
      • 2.5.2、临时修改主机名
      • 2.5.3、永久修改主机名
      • 2.5.4、查看完整主机名(FQDN)
      • 2.5.5、查看主机名的其他信息
      • 2.5.6、设置主机名的其他选项
      • 2.5.7、综合示例
    • 2.6、ifconfig
      • 2.6.1、查看网络接口信息
      • 2.6.2、启用或禁用网络接口
      • 2.6.3、配置 IP 地址
      • 2.6.4、修改 MAC 地址
      • 2.6.5、查看网络接口统计信息
      • 2.6.6、设置 MTU(最大传输单元)
      • 2.6.7、综合示例
      • 2.6.8、注意事项
    • 2.7、route
      • 2.7.1、查看路由表
      • 2.7.2、添加路由
      • 2.7.3、删除路由
      • 2.7.4、修改路由
      • 2.7.5、其他常用选项
      • 2.7.6、综合示例
      • 2.7.7、注意事项
    • 2.8、ssh
    • 2.9、ssh-keygen
    • 2.10、firewalld
      • 2.10.1、启动、停止和重启 firewalld
      • 2.10.2、查看 firewalld 状态
      • 2.10.3、管理区域(Zones)
      • 2.10.4、管理服务(Services)
      • 2.10.5、管理端口
      • 2.10.6、管理源地址
      • 2.10.7、重载配置
      • 2.10.8、高级功能
      • 2.10.9、备份和恢复配置
      • 2.10.10、日志管理
      • 2.10.11、注意事项
    • 2.11、iptables
      • 2.11.1、基本概念
      • 2.11.2、基本语法
      • 2.11.3、常用操作
      • 2.11.4、保护和恢复规则
      • 2.11.5、调试和日志
      • 2.11.6、注意事项
    • 2.12、host
      • 2.12.1、基本用法
      • 2.12.2、常用操作
      • 2.12.3、高级用法
      • 2.12.4、注意事项
      • 2.14.5、与其它工具比较
    • 2.13、nslookup
      • 2.13.1、基本用法
      • 2.13.2、常用操作
      • 2.13.3、交互模式
      • 2.13.4、高级用法
      • 2.13.5、注意事项
      • 2.13.6、与其他工具的比较
    • 2.14、nc/netcat
      • 2.14.1、基本用法
      • 2.14.2、常用操作
      • 2.14.3、高级用法
      • 2.14.4、注意事项
      • 2.14.5、与其它工具比较
    • 2.15、ping
      • 2.15.1、基本用法
      • 2.15.2、常用操作
      • 2.15.3、输出解析
      • 2.15.4、高级用法
      • 2.15.4、注意事项
      • 2.15.5、与其他工具的比较
    • 2.16、traceroute
      • 2.16.1、基本用法
      • 2.16.2、常用操作
      • 2.16.3、输出解析
      • 2.16.4、高级用法
      • 2.16.5、注意事项
      • 2.16.6、与其他工具的比较
    • 2.17、netstat
      • 2.17.1、基本用法
      • 2.17.2、常用操作
      • 2.17.3、输出解析
      • 2.17.4、高级用法
      • 2.17.5、注意事项
      • 2.17.6、与其它工具的比较

一、Linux网络应用要点

  • 下载文件 - 使用 curlwget
  • telnet 方式登录远程主机,对远程主机进行管理 - 使用 telnet
  • 查看或操纵 Linux 主机的路由、网络设备、策略路由和隧道 - 使用 ip
  • 查看和设置系统的主机名 - 使用 hostname
  • 查看和配置 Linux 内核中网络接口的网络参数 - 使用 ifconfig
  • 查看和设置 Linux 内核中的网络路由表 - 使用 route
  • ssh 方式连接远程主机 - 使用 ssh
  • 为 ssh 生成、管理和转换认证密钥 - 使用 ssh-keygen
  • 查看、设置防火墙(Centos7),使用 firewalld
  • 查看、设置防火墙(Centos7 以前),使用 iptables
  • 查看域名信息 - 使用 host, nslookup
  • 设置路由 - 使用 nc/netcat
  • 测试主机之间网络是否连通 - 使用 ping
  • 追踪数据在网络上的传输时的全部路径 - 使用 traceroute
  • 查看当前工作的端口信息 - 使用 netstat

二、命令常见用法

2.1、curl

curl 命令是一个利用 URL 规则在命令行下工作的文件传输工具。它支持文件的上传和下载,所以是综合传输工具,但按传统,习惯称 curl 为下载工具。作为一款强力工具,curl 支持包括 HTTP、HTTPS、ftp 等众多协议,还支持 POST、cookies、认证、从指定偏移处下载部分文件、用户代理字符串、限速、文件大小、进度条等特征。做网页处理流程和数据检索自动化,curl 可以祝一臂之力。

2.1.1、发送GET请求

curl <URL>
# 示例:
curl https://example.com

保存输出到文件:

curl -o <文件名> <URL>
# 示例:
curl -o output.html https://example.com

自动命名保存文件:

curl -O <URL>
# 示例:
curl -O https://example.com/index.html

2.1.2、发送POST请求

发送表单数据:

curl -X POST -d "key1=value1&key2=value2" <URL>
# 示例:
curl -X POST -d "username=admin&password=123456" https://example.com/login

发送 JSON 数据:

curl -X POST -H "Content-Type: application/json" -d '{"key1":"value1", "key2":"value2"}' <URL>
# 示例:
curl -X POST -H "Content-Type: application/json" -d '{"name":"John", "age":30}' https://example.com/api

2.1.3、设置请求头

curl -H "HeaderName: HeaderValue" <URL>
# 示例:
curl -H "Authorization: Bearer token123" https://example.com/api

2.1.4、处理cookies

发送 cookies:

curl -b "name=value" <URL>
# 示例:
curl -b "sessionid=abc123" https://example.com

保存 cookies 到文件:

curl -c <cookies文件> <URL>
# 示例:
curl -c cookies.txt https://example.com

使用 cookies 文件:

curl -b <cookies文件> <URL>
# 示例:
curl -b cookies.txt https://example.com

2.1.5、处理重定向

自动跟随重定向:

curl -L <URL>
# 示例:
curl -L https://example.com

限制重定向次数:

curl -L --max-redirs <次数> <URL>
# 示例:
curl -L --max-redirs 5 https://example.com

2.1.6、调试和详细信息

显示请求和响应头:

curl -v <URL>
# 示例:
curl -v https://example.com

仅显示响应头:

curl -I <URL>
# 示例:
curl -I https://example.com

2.1.7、使用代理

设置 HTTP 代理:

curl -x <代理地址> <URL>
# 示例:
curl -x http://proxy.example.com:8080 https://example.com

设置 SOCKS 代理:

curl --socks5 <代理地址> <URL>
# 示例:
curl --socks5 127.0.0.1:1080 https://example.com

2.1.8、文件上传

上传文件:

curl -F "file=@<文件路径>" <URL>
# 示例:
curl -F "file=@/path/to/file.txt" https://example.com/upload

上传文件并设置文件名:

curl -F "file=@<文件路径>;filename=<新文件名>" <URL>
# 示例:
curl -F "file=@/path/to/file.txt;filename=newname.txt" https://example.com/upload

2.1.9、其它常用选项

限制下载速度:

curl --limit-rate <速度> <URL>
# 示例:
curl --limit-rate 100K https://example.com/file.zip

断点续传:

curl -C - -o <文件名> <URL>
# 示例:
curl -C - -o file.zip https://example.com/file.zip

忽略 SSL 证书验证:

curl -k <URL>
# 示例:
curl -k https://example.com

2.1.10、综合示例

下载文件并保存:

curl -o file.zip https://example.com/file.zip

发送 POST 请求并保存响应:

curl -X POST -d "param1=value1&param2=value2" -o response.txt https://example.com/api

调试请求:

curl -v -H "Authorization: Bearer token123" https://example.com/api

下载文件,指定下载路径,并查看进度

curl http://man.linuxde.net/test.iso -o filename.iso --progress
########################################## 100.0%

2.2、wget

wget 是一个命令行工具,用于从网络上下载文件,支持 HTTP、HTTPS 和 FTP 协议。它非常适合批量下载、递归下载以及断点续传等操作。

2.2.1、基本用法

下载单个文件:

wget <URL>
# 示例:
wget https://example.com/file.zip

下载并指定保存文件名:

wget -O <文件名> <URL>
# 示例:
wget -O myfile.zip https://example.com/file.zip

2.2.2、断点续传

继续未完成的下载

wget -c <URL>
# 示例:
wget -c https://example.com/file.zip

2.2.3、批量下载

从文件列表中下载

# 将多个 URL 保存在一个文件中(如 urls.txt),然后使用:
wget -i <文件>
# 示例:
wget -i urls.txt

2.2.4、递归下载

下载整个网站:

wget -r <URL>
# 示例:
wget -r https://example.com

限制递归深度:

wget -r -l <深度> <URL>
# 示例:
wget -r -l 2 https://example.com

下载特定类型的文件:

wget -r -A <文件类型> <URL>
# 示例:
wget -r -A "*.jpg" https://example.com

2.2.5、限制下载速度

wget --limit-rate=<速度> <URL>
# 示例:
wget --limit-rate=100k https://example.com/file.zip

2.2.6、后台下载

wget -b <URL>
# 示例:
wget -b https://example.com/file.zip

2.2.7、处理 cookies

使用 cookies 文件:

wget --load-cookies <cookies文件> <URL>
# 示例:
wget --load-cookies cookies.txt https://example.com

2.2.8、设置用户代理

wget --user-agent=<用户代理字符串> <URL>
# 示例:
wget --user-agent="Mozilla/5.0" https://example.com

2.2.9、下载 FTP 文件

下载 FTP 文件:

wget ftp://example.com/file.zip

使用用户名和密码:

wget --ftp-user=<用户名> --ftp-password=<密码> ftp://example.com/file.zip
# 示例:
wget --ftp-user=admin --ftp-password=123456 ftp://example.com/file.zip

2.2.10、其他常用选项

忽略 SSL 证书验证:

wget --no-check-certificate <URL>
# 示例:
wget --no-check-certificate https://example.com

限制重试次数:

wget --tries=<次数> <URL>
# 示例:
wget --tries=5 https://example.com

静默模式(不显示输出):

wget -q <URL>
# 示例:
wget -q https://example.com

2.2.11、综合示例

下载整个网站并限制速度:

wget -r --limit-rate=100k https://example.com

断点续传下载大文件:

wget -c https://example.com/largefile.zip

批量下载图片:

wget -r -A "*.jpg" https://example.com/images

2.3、telnet

telnet 是一个用于远程登录和管理网络设备的命令行工具,基于 Telnet 协议。它也可以用于测试网络服务的连通性。

2.3.1、基本用法

连接到远程主机

telnet <主机名或IP> <端口>
# 示例:
telnet example.com 23

2.3.2、测试端口连通性

telnet 常用于测试某个端口是否开放。例如,测试 example.com 的 80 端口:

telnet example.com 80
# 如果连接成功,会显示 Connected to example.com。
# 如果连接失败,会显示 Connection refused 或超时。

2.3.3、交互模式

连接成功后,telnet 会进入交互模式,可以输入命令与远程主机通信。例如:

telnet example.com 23
#输入用户名和密码(如果需要)。
#输入命令与远程主机交互。

2.3.4、退出 telnet

在交互模式下,输入以下命令退出:

Ctrl + ]
# 然后输入 quit 并按回车:
telnet> quit

2.3.5、 常见用途

测试 HTTP 服务:

telnet example.com 80
# 连接成功后,输入:
GET / HTTP/1.1
Host: example.com
按两次回车,查看服务器返回的 HTTP 响应。

测试 SMTP 服务:

telnet example.com 25
# 连接成功后,输入 SMTP 命令与服务器交互,例如:
HELO example.com
MAIL FROM:<sender@example.com>
RCPT TO:<recipient@example.com>
DATA
Subject: Test Email

This is a test email.
.
QUIT

测试 MySQL 服务:

telnet example.com 3306
# 如果端口开放,会显示 MySQL 的版本信息。

2.3.6、注意事项

  1. 安全性:Telnet 协议是明文传输,不安全,建议使用 SSH 替代。
  2. 安装:如果系统未安装 telnet,可以通过以下命令安装:
# Ubuntu/Debian:
sudo apt install telnet
# CentOS/RHEL:
sudo yum install telnet

2.4、IP

ip 命令是 Linux 系统中用于管理网络接口、路由、ARP 表等网络配置的强大工具,取代了旧的 ifconfig 和 route 命令。

2.4.1、 查看网络接口信息

查看所有网络接口:

ip link show
# 或简写:
ip l

查看指定网络接口:

ip link show <接口名>
# 示例:
ip link show eth0

2.4.2、启用或禁用网络接口

启用接口:

ip link set <接口名> up
# 示例:
ip link set eth0 up

禁用接口:

ip link set <接口名> down
# 示例:
ip link set eth0 down

2.4.3、查看 IP 地址

查看所有接口的 IP 地址:

ip addr show
# 或简写:
ip a

查看指定接口的 IP 地址:

ip addr show <接口名>
# 示例:
ip addr show eth0

2.4.4、添加或删除 IP 地址

添加 IP 地址:

ip addr add <IP地址>/<子网掩码> dev <接口名>
# 示例:
ip addr add 192.168.1.100/24 dev eth0

删除 IP 地址:

ip addr del <IP地址>/<子网掩码> dev <接口名>
# 示例:
ip addr del 192.168.1.100/24 dev eth0

2.4.5、查看路由表

查看路由表:

ip route show
# 或简写:
ip r

查看指定网络的路由:

ip route show to <网络地址>
# 示例:
ip route show to 192.168.1.0/24

2.4.6、添加或删除路由

添加路由:

ip route add <目标网络> via <网关> dev <接口名>
# 示例:
ip route add 192.168.2.0/24 via 192.168.1.1 dev eth0

删除路由:

ip route del <目标网络>
# 示例:
ip route del 192.168.2.0/24

2.4.7、查看 ARP 表

查看 ARP 表:

ip neigh show
# 或简写:
ip n

删除 ARP 条目:

ip neigh del <IP地址> dev <接口名>
# 示例:
ip neigh del 192.168.1.1 dev eth0

2.4.8、查看网络统计信息

查看网络接口统计信息

ip -s link show <接口名>
# 示例:
ip -s link show eth0

2.4.9、修改接口属性

修改接口 MTU:

ip link set <接口名> mtu <MTU值>
# 示例:
ip link set eth0 mtu 1500

修改接口 MAC 地址:

ip link set <接口名> address <MAC地址>
# 示例:
ip link set eth0 address 00:11:22:33:44:55

2.4.10、综合示例

查看所有网络接口及其 IP 地址:

ip a

添加 IP 地址并启用接口:

ip addr add 192.168.1.100/24 dev eth0
ip link set eth0 up

添加默认网关:

ip route add default via 192.168.1.1 dev eth0

查看路由表:

ip r

2.5、hostname

hostname 命令用于查看和设置系统的主机名称。环境变量 HOSTNAME 也保存了当前的主机名。在使用 hostname 命令设置主机名后,系统并不会永久保存新的主机名,重新启动机器之后还是原来的主机名。如果需要永久修改主机名,需要同时修改 /etc/hosts 和 /etc/sysconfig/network 的相关内容。

2.5.1、查看当前主机名

hostname
#这会显示当前系统的主机名。

2.5.2、临时修改主机名

hostname <新主机名>
# 示例:
hostname myserver
# 这种修改是临时的,重启后会恢复为原来的主机名。

2.5.3、永久修改主机名

要永久修改主机名,需要编辑相关配置文件,具体方法因 Linux 发行版而异。

对于大多数 Linux 发行版(如 Ubuntu、Debian、CentOS 等):

  1. 编辑 /etc/hostname 文件:
sudo nano /etc/hostname
# 将文件内容替换为新主机名,例如:
myserver
  1. 更新 /etc/hosts 文件:
sudo nano /etc/hosts
# 找到包含旧主机名的行,将其替换为新主机名,例如:
复制
127.0.1.1 myserver
  1. 重启系统或使用以下命令立即生效:
sudo hostnamectl set-hostname <新主机名>

对于使用 systemd 的系统:

sudo hostnamectl set-hostname <新主机名>
# 示例:
sudo hostnamectl set-hostname myserver

2.5.4、查看完整主机名(FQDN)

hostname --fqdn
# 这会显示完整的主机名(Fully Qualified Domain Name,FQDN)。

2.5.5、查看主机名的其他信息

查看主机名的 IP 地址:

hostname -i

查看主机名的别名:

hostname -a

查看主机名的域名部分:

hostname -d

2.5.6、设置主机名的其他选项

设置主机名的别名:

hostname -A <别名>

设置主机名的域名:

hostname -b <域名>

2.5.7、综合示例

查看当前主机名:

hostname

临时修改主机名:

hostname temp-server

永久修改主机名:

sudo hostnamectl set-hostname myserver

查看完整主机名:

hostname --fqdn

2.6、ifconfig

ifconfig 命令被用于查看和配置 Linux 内核中网络接口的网络参数。用 ifconfig 命令配置的网卡信息,在网卡重启后机器重启后,配置就不存在。要想将上述的配置信息永远的存的电脑里,那就要修改网卡的配置文件了。

2.6.1、查看网络接口信息

查看所有网络接口:

ifconfig

查看指定网络接口:

ifconfig <接口名>
# 示例:
ifconfig eth0

2.6.2、启用或禁用网络接口

启用接口:

sudo ifconfig <接口名> up
# 示例:
sudo ifconfig eth0 up

禁用接口:

sudo ifconfig <接口名> down
# 示例:
sudo ifconfig eth0 down

2.6.3、配置 IP 地址

设置 IP 地址:

sudo ifconfig <接口名> <IP地址> netmask <子网掩码>
# 示例:
sudo ifconfig eth0 192.168.1.100 netmask 255.255.255.0

添加多个 IP 地址:

sudo ifconfig <接口名>:<别名> <IP地址> netmask <子网掩码>
# 示例:
sudo ifconfig eth0:0 192.168.1.101 netmask 255.255.255.0

2.6.4、修改 MAC 地址

临时修改 MAC 地址

sudo ifconfig <接口名> hw ether <MAC地址>
# 示例:
sudo ifconfig eth0 hw ether 00:11:22:33:44:55

2.6.5、查看网络接口统计信息

查看所有接口的统计信息:

ifconfig -a

查看指定接口的统计信息:

ifconfig <接口名>
# 示例:
ifconfig eth0

2.6.6、设置 MTU(最大传输单元)

sudo ifconfig <接口名> mtu <MTU值>
# 示例:
sudo ifconfig eth0 mtu 1500

2.6.7、综合示例

查看所有网络接口:

ifconfig

启用网络接口并设置 IP 地址

sudo ifconfig eth0 up
sudo ifconfig eth0 192.168.1.100 netmask 255.255.255.0

查看指定接口的详细信息

ifconfig eth0

2.6.8、注意事项

  • 权限:修改网络配置通常需要 sudo 权限。
  • 临时性:使用 ifconfig 修改的配置是临时的,重启后会失效。要永久修改网络配置,需要编辑网络配置文件(如 /etc/network/interfaces 或使用 netplan)。
  • 替代工具:现代 Linux 系统推荐使用 ip 命令替代 ifconfig,因为 ifconfig 的功能较为有限。

2.7、route

route 命令用于查看和操作内核的 IP 路由表。它可以显示、添加、删除或修改路由规则。尽管现代 Linux 系统推荐使用 ip route 命令替代 route,但 route 仍然被广泛使用。

2.7.1、查看路由表

查看当前路由表

route -n
# -n 选项表示以数字形式显示 IP 地址和端口,避免 DNS 解析。

2.7.2、添加路由

添加默认网关:

sudo route add default gw <网关地址> <接口名>
# 示例:
sudo route add default gw 192.168.1.1 eth0

添加特定网络的路由:

sudo route add -net <目标网络> netmask <子网掩码> gw <网关地址> dev <接口名>
# 示例:
sudo route add -net 192.168.2.0 netmask 255.255.255.0 gw 192.168.1.1 dev eth0

添加主机路由:

sudo route add -host <目标IP> gw <网关地址> dev <接口名>
# 示例:
sudo route add -host 192.168.2.100 gw 192.168.1.1 dev eth0

2.7.3、删除路由

删除默认网关:

sudo route del default gw <网关地址> <接口名>
# 示例:
sudo route del default gw 192.168.1.1 eth0

删除特定网络的路由

sudo route del -net <目标网络> netmask <子网掩码>
# 示例:
sudo route del -net 192.168.2.0 netmask 255.255.255.0

删除主机路由

sudo route del -host <目标IP>
# 示例:
sudo route del -host 192.168.2.100

2.7.4、修改路由

修改默认网关:

sudo route change default gw <新网关地址> <接口名>
# 示例:
sudo route change default gw 192.168.1.254 eth0

2.7.5、其他常用选项

显示详细信息

route -v

显示所有路由(包括未激活的路由)

route -ee

2.7.6、综合示例

查看路由表

route -n

添加默认网关

sudo route add default gw 192.168.1.1 eth0

添加特定网络的路由

sudo route add -net 192.168.2.0 netmask 255.255.255.0 gw 192.168.1.1 dev eth0

删除特定网络的路由

sudo route del -net 192.168.2.0 netmask 255.255.255.0

2.7.7、注意事项

注意事项

  • 权限:修改路由表通常需要 sudo 权限。
  • 临时性:使用 route 命令修改的路由是临时的,重启后会失效。要永久修改路由,需要编辑网络配置文件(如 /etc/network/interfaces 或使用 netplan)。
  • 替代工具:现代 Linux 系统推荐使用 ip route 命令替代 route,因为 ip route 功能更强大且更灵活。

2.8、ssh

ssh 命令是 openssh 套件中的客户端连接工具,可以给予 ssh 加密协议实现安全的远程登录服务器。

ssh [选项] [用户名@]主机名或IP地址

常用选项:

  • -p <端口号>:指定远程主机的SSH端口(默认是22)。
  • -i <私钥文件>:指定用于身份验证的私钥文件。
  • -l <用户名>:指定登录用户名。
  • -v:详细模式,显示调试信息(可以多次使用,如 -vvv 以增加详细程度)。
  • -X:启用X11转发,允许在远程主机上运行图形应用程序。
  • -L <本地端口>:<远程主机>:<远程端口>:设置本地端口转发。
  • -R <远程端口>:<本地主机>:<本地端口>:设置远程端口转发。
  • -D <本地端口>:设置动态端口转发(SOCKS代理)。

使用示例:
基本远程登录

ssh user@192.168.1.100
#这将使用用户名 user 登录到 IP 地址为 192.168.1.100 的远程主机。

指定端口

ssh -p 2222 user@192.168.1.100
# 这将连接到远程主机的 2222 端口。

使用私钥文件

ssh -i /path/to/private_key user@192.168.1.100
#这将使用指定的私钥文件进行身份验证。

启用X11转发

ssh -X user@192.168.1.100
#这将启用X11转发,允许在远程主机上运行图形应用程序。

本地端口转发

ssh -L 8080:localhost:80 user@192.168.1.100
# 这将把本地的 8080 端口转发到远程主机的 80 端口。

远程端口转发

ssh -R 8080:localhost:80 user@192.168.1.100
#这将把远程主机的 8080 端口转发到本地的 80 端口。

动态端口转发(SOCKS代理)

ssh -D 1080 user@192.168.1.100
# 这将设置一个动态端口转发,创建一个SOCKS代理,可以通过本地 1080 端口访问远程网络。

退出SSH会话

在SSH会话中,你可以通过输入 exit 或按 Ctrl+D 来退出并关闭连接。

其他注意事项:

  • 配置文件:SSH的配置文件通常位于 ~/.ssh/config,你可以在其中定义主机别名、端口、用户名等,简化命令行操作。
  • 公钥认证:为了提高安全性,建议使用公钥认证而不是密码认证。你可以使用 ssh-keygen 生成密钥对,并将公钥添加到远程主机的 ~/.ssh/authorized_keys 文件中。

示例配置文件:

Host myserver
    HostName 192.168.1.100
    User user
    Port 2222
    IdentityFile /path/to/private_key

2.9、ssh-keygen

ssh-keygen 命令用于为 ssh 生成、管理和转换认证密钥,它支持 RSA 和 DSA 两种认证密钥。

ssh-kengen [选项]

常用选项:

  • -t <密钥类型> 指定密钥类型,如 rsa, ed25519, ecdsa 等。默认是 rsa。
  • -b <密钥长度> 指定密钥的位数(仅适用于 rsa 和 ecdsa)。例如 -b 4096。
  • -C <注释> 为密钥添加注释,通常是电子邮件或描述。
  • -f <文件名> 指定生成的密钥文件的路径和名称。
  • -N <密码> 为私钥设置密码(passphrase)。
  • -p 更改现有私钥的密码。
  • -q 静默模式,不显示输出。
  • -y 从私钥生成公钥。

使用示例:
生成默认的 RSA 密钥对

ssh-keygen
# 默认生成 ~/.ssh/id_rsa(私钥)和 ~/.ssh/id_rsa.pub(公钥)。
# 会提示你输入保存路径和密码(可选)。

生成指定类型的密钥对

ssh-keygen -t ed25519
# 生成 ed25519 类型的密钥对,默认保存为 ~/.ssh/id_ed25519 和 ~/.ssh/id_ed25519.pub。

指定密钥长度

ssh-keygen -t rsa -b 4096
# 生成 4096 位的 RSA 密钥对。

指定密钥文件路径

ssh-keygen -f ~/.ssh/my_key
# 生成密钥对并保存为 ~/.ssh/my_key(私钥)和 ~/.ssh/my_key.pub(公钥)。

为密钥添加注释

# ssh-keygen -C "my_email@example.com"
在公钥中添加注释 my_email@example.com。

为私钥设置密码

ssh-keygen -N "my_passphrase"
# 为生成的私钥设置密码 my_passphrase。

更改现有私钥的密码

ssh-keygen -p -f ~/.ssh/id_rsa
# 更改 ~/.ssh/id_rsa 私钥的密码。

从私钥生成公钥

ssh-keygen -y -f ~/.ssh/id_rsa > ~/.ssh/id_rsa.pub
# 从私钥 ~/.ssh/id_rsa 生成公钥并保存到 ~/.ssh/id_rsa.pub。

密钥对的使用:

将公钥添加到远程主机

将生成的公钥(如 ~/.ssh/id_rsa.pub)内容复制到远程主机的 ~/.ssh/authorized_keys 文件中。

可以使用以下命令自动完成:

ssh-copy-id -i ~/.ssh/id_rsa.pub user@remote_host

使用密钥登录远程主机

ssh -i ~/.ssh/my_key user@remote_host

注意事项:

  • 密钥类型选择:
    • ed25519:推荐使用,安全性高且性能好。
    • rsa:兼容性好,但建议密钥长度至少为 4096 位。
    • ecdsa:基于椭圆曲线,安全性高,但兼容性稍差。
  • 私钥保护:私钥文件应妥善保管,避免泄露。可以为私钥设置密码以增加安全性。
  • 默认路径:SSH 默认会查找 ~/.ssh/id_rsa 或 ~/.ssh/id_ed25519 等密钥文件。如果使用其他路径,需要通过 -i 选项指定。

2.10、firewalld

firewalld 是一个动态管理防火墙的工具,它提供了对网络流量进行控制的接口,支持区域(zones)和服务(services)的概念。以下是 firewalld 的常用命令和操作。

2.10.1、启动、停止和重启 firewalld

# 启动 firewalld
sudo systemctl start firewalld

# 停止 firewalld
sudo systemctl stop firewalld

# 重启 firewalld
sudo systemctl restart firewalld

# 设置 firewalld 开机自启
sudo systemctl enable firewalld

# 禁用 firewalld 开机自启
sudo systemctl disable firewalld

# 检查 firewalld 状态
sudo systemctl status firewalld

2.10.2、查看 firewalld 状态

# 查看 firewalld 是否运行
sudo firewall-cmd --state

# 查看默认区域
sudo firewall-cmd --get-default-zone

# 查看所有区域
sudo firewall-cmd --get-zones

# 查看当前区域的配置
sudo firewall-cmd --list-all

# 查看指定区域的配置
sudo firewall-cmd --zone=public --list-all

2.10.3、管理区域(Zones)

区域是 firewalld 的核心概念,每个区域定义了不同的信任级别和规则。

# 设置默认区域
sudo firewall-cmd --set-default-zone=public

# 查看当前活动的区域
sudo firewall-cmd --get-active-zones

# 将网络接口绑定到指定区域
sudo firewall-cmd --zone=work --change-interface=eth0

# 查看指定接口的区域
sudo firewall-cmd --get-zone-of-interface=eth0

2.10.4、管理服务(Services)

服务是预定义的规则集合,用于允许特定类型的流量。

# 查看所有预定义的服务
sudo firewall-cmd --get-services

# 允许某个服务(如 http)
sudo firewall-cmd --zone=public --add-service=http

# 永久允许某个服务
sudo firewall-cmd --zone=public --add-service=http --permanent

# 移除某个服务
sudo firewall-cmd --zone=public --remove-service=http

# 永久移除某个服务
sudo firewall-cmd --zone=public --remove-service=http --permanent

2.10.5、管理端口

# 允许某个端口(如 8080)
sudo firewall-cmd --zone=public --add-port=8080/tcp

# 永久允许某个端口
sudo firewall-cmd --zone=public --add-port=8080/tcp --permanent

# 移除某个端口
sudo firewall-cmd --zone=public --remove-port=8080/tcp

# 永久移除某个端口
sudo firewall-cmd --zone=public --remove-port=8080/tcp --permanent

2.10.6、管理源地址

# 允许某个 IP 地址访问
sudo firewall-cmd --zone=public --add-source=192.168.1.100

# 永久允许某个 IP 地址访问
sudo firewall-cmd --zone=public --add-source=192.168.1.100 --permanent

# 移除某个 IP 地址的访问权限
sudo firewall-cmd --zone=public --remove-source=192.168.1.100

# 永久移除某个 IP 地址的访问权限
sudo firewall-cmd --zone=public --remove-source=192.168.1.100 --permanent

2.10.7、重载配置

在修改了永久规则后,需要重载配置使其生效。

sudo firewall-cmd --reload

2.10.8、高级功能

端口转发

# 将本地端口 8080 转发到 80
sudo firewall-cmd --zone=public --add-forward-port=port=8080:proto=tcp:toport=80

# 永久生效
sudo firewall-cmd --zone=public --add-forward-port=port=8080:proto=tcp:toport=80 --permanent

富规则(Rich Rules)

# 富规则允许更复杂的规则配置。
# 允许某个 IP 访问特定端口
sudo firewall-cmd --zone=public --add-rich-rule='rule family="ipv4" source address="192.168.1.100" port protocol="tcp" port="22" accept'
# 永久生效
sudo firewall-cmd --zone=public --add-rich-rule='rule family="ipv4" source address="192.168.1.100" port protocol="tcp" port="22" accept' --permanent

2.10.9、备份和恢复配置

# 备份配置
sudo cp /etc/firewalld/firewalld.conf /etc/firewalld/firewalld.conf.bak

# 恢复配置
sudo cp /etc/firewalld/firewalld.conf.bak /etc/firewalld/firewalld.conf
sudo firewall-cmd --reload

2.10.10、日志管理

# 查看 firewalld 日志
sudo journalctl -u firewalld

# 实时查看日志
sudo journalctl -u firewalld -f

2.10.11、注意事项

  • 永久规则:使用 --permanent 选项的规则需要重载(–reload)后才能生效。
  • 区域选择:根据网络环境选择合适的区域(如 public、work、home 等)。
  • 测试规则:在应用新规则前,建议先测试,避免意外阻断网络连接。

2.11、iptables

iptables 命令是 Linux 上常用的防火墙软件,是 netfilter 项目的一部分。可以直接配置,也可以通过许多前端和图形界面配置。

2.11.1、基本概念

  • 表(Tables):iptables 有多个表,每个表用于不同的功能:
    • filter:默认表,用于过滤数据包(允许或拒绝)。
    • nat:用于网络地址转换(NAT)。
    • mangle:用于修改数据包头(如 TTL、TOS)。
    • raw:用于配置数据包是否被连接跟踪。
  • 链(Chains):每个表包含多个链,链是规则的集合:
    • INPUT:处理进入本机的数据包。
    • OUTPUT:处理从本机发出的数据包。
    • FORWARD:处理转发的数据包。
    • PREROUTING:用于 nat 表,在路由之前修改数据包。
    • POSTROUTING:用于 nat 表,在路由之后修改数据包。
  • 规则(Rules):每条规则定义了对数据包的处理方式(如允许、拒绝、丢弃)。

2.11.2、基本语法

iptables [-t 表名] 命令 [链名] [规则] [动作]

常用命令:

  • -A 在链的末尾添加规则。
  • -I 在链的开头或指定位置插入规则。
  • -D 删除链中的规则。
  • -L 列出链中的规则。
  • -F 清空链中的所有规则。
  • -P 设置链的默认策略(如 ACCEPT、DROP)。
  • -N 创建新的用户自定义链。
  • -X 删除用户自定义链。
  • -E 重命名用户自定义链。

常用选项:

  • -p 指定协议(如 tcp、udp、icmp)。
  • --dport 指定目标端口。
  • --sport 指定源端口。
  • -s 指定源地址。
  • -d 指定目标地址。
  • -i 指定输入网络接口。
  • -o 指定输出网络接口。
  • -j 指定动作(如 ACCEPT、DROP、REJECT)。
  • -m 使用扩展模块(如 state、multiport)。

2.11.3、常用操作

查看规则:

# 查看 filter 表的规则
iptables -L -n -v

# 查看 nat 表的规则
iptables -t nat -L -n -v

清空规则:

# 清空 filter 表的所有规则
iptables -F

# 清空 nat 表的所有规则
iptables -t nat -F

设置默认策略:

# 设置 INPUT 链的默认策略为 DROP
iptables -P INPUT DROP

# 设置 OUTPUT 链的默认策略为 ACCEPT
iptables -P OUTPUT ACCEPT

# 设置 FORWARD 链的默认策略为 DROP
iptables -P FORWARD DROP

允许或拒绝流量:

# 允许来自 192.168.1.0/24 的流量
iptables -A INPUT -s 192.168.1.0/24 -j ACCEPT

# 拒绝来自 192.168.1.100 的流量
iptables -A INPUT -s 192.168.1.100 -j DROP

# 允许访问本机的 22 端口(SSH)
iptables -A INPUT -p tcp --dport 22 -j ACCEPT

# 允许本机访问外部 80 端口(HTTP)
iptables -A OUTPUT -p tcp --dport 80 -j ACCEPT

使用扩展模块:

# 允许已建立的连接和相关的流量
iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT

# 允许访问多个端口(如 80 和 443)
iptables -A INPUT -p tcp -m multiport --dports 80,443 -j ACCEPT

NAT配置:

# 启用 IP 转发
echo 1 > /proc/sys/net/ipv4/ip_forward

# 配置源地址转换(SNAT)
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

# 配置目标地址转换(DNAT)
iptables -t nat -A PREROUTING -p tcp --dport 80 -j DNAT --to-destination 192.168.1.100:8080

2.11.4、保护和恢复规则

iptables 的规则在重启后会丢失,需要手动保存和恢复。
保存规则

# 保存规则到文件
iptables-save > /etc/iptables/rules.v4
恢复规则

# 从文件恢复规则
iptables-restore < /etc/iptables/rules.v4

# 自动保存和恢复
# 在 Debian/Ubuntu 系统中,可以使用 iptables-persistent 包:
sudo apt install iptables-persistent
sudo netfilter-persistent save
sudo netfilter-persistent reload

2.11.5、调试和日志

# 记录被拒绝的数据包
iptables -A INPUT -j LOG --log-prefix "iptables-dropped: "

# 查看日志
tail -f /var/log/syslog

2.11.6、注意事项

  • 谨慎操作:在远程服务器上配置 iptables 时,确保不会阻断自己的连接(如 SSH)。
  • 测试规则:在应用新规则前,建议先测试,避免意外阻断网络连接。
  • 备份规则:在修改规则前,备份现有规则,以便恢复。

2.12、host

host 是一个用于查询 DNS(域名系统)信息的命令行工具。它可以用来查找域名的 IP 地址、反向查找 IP 地址对应的域名,以及查询域名的其他 DNS 记录(如 MX、NS 等)。以下是 host 命令的基本用法和常见操作。

2.12.1、基本用法

host [选项] 域名或IP地址 【DNS服务器】

常用选项:

  • -a 显示所有 DNS 记录(相当于 -t ANY)。
  • -t <类型> 查询指定类型的 DNS 记录(如 A、MX、NS、TXT 等)。
  • -4 仅使用 IPv4 查询。
  • -6 仅使用 IPv6 查询。
  • -C 查询域名的 SOA 记录。
  • -v 显示详细信息。
  • -r 禁用递归查询。
  • -W <超时> 设置查询超时时间(秒)。

2.12.2、常用操作

查询域名的 IP 地址:

host example.com
# 输出示例:
example.com has address 93.184.216.34
example.com has IPv6 address 2606:2800:220:1:248:1893:25c8:1946

查询指定类型的 DNS 记录:

# 查询 MX 记录(邮件服务器)
host -t MX example.com

# 查询 NS 记录(域名服务器)
host -t NS example.com

# 查询 TXT 记录(文本记录)
host -t TXT example.com

查询所有 DNS 记录:

host -a example.com

反向查找 IP 地址对应的域名:

host 93.184.216.34
# 输出示例
34.216.184.93.in-addr.arpa domain name pointer example.com.

指定 DNS 服务器查询:

host example.com 8.8.8.8
#这将使用 Google 的公共 DNS 服务器(8.8.8.8)进行查询。

查询域名的 SOA 记录:

host -C example.com

查询 IPv6 地址:

host -t AAAA example.com

设置查询超时时间:

host -W 5 example.com
# 这将设置查询超时时间为 5 秒。

2.12.3、高级用法

查询域名的 SPF 记录:

host -t TXT example.com
# SPF 记录通常以 v=spf1 开头。

查询域名的 CNAME 记录:

host -t CNAME www.example.com

查询域名的 PTR 记录:

host -t PTR 34.216.184.93.in-addr.arpa

禁用递归查询:

host -r example.com

2.12.4、注意事项

  • DNS 缓存:查询结果可能受到本地 DNS 缓存的影响。如果需要最新结果,可以刷新 DNS 缓存。
  • DNS 服务器:默认情况下,host 使用系统配置的 DNS 服务器。可以通过指定 DNS 服务器来覆盖默认设置。
  • 超时设置:如果网络较慢,可以增加超时时间以避免查询失败。

2.14.5、与其它工具比较

  • nslookup:功能类似,但交互性更强。
  • dig:功能更强大,适合高级用户。

2.13、nslookup

nslookup 是一个用于查询 DNS(域名系统)信息的命令行工具。它可以用来查找域名的 IP 地址、反向查找 IP 地址对应的域名,以及查询域名的其他 DNS 记录(如 MX、NS 等)。以下是 nslookup 命令的基本用法和常见操作。

2.13.1、基本用法

nslookup [选项] [域名或IP地址] [DNS服务器]

常用选项:

  • -type=<记录类型> 查询指定类型的 DNS 记录(如 A、MX、NS、TXT 等)。
  • -debug 显示详细的调试信息。
  • -timeout=<秒> 设置查询超时时间。
  • -port=<端口> 指定 DNS 服务器的端口(默认是 53)。

2.13.2、常用操作

查询域名的 IP 地址:

nslookup example.com
# 输出示例:
Server:         8.8.8.8
Address:        8.8.8.8#53

Non-authoritative answer:
Name:   example.com
Address: 93.184.216.34

查询指定类型的 DNS 记录:

# 查询 MX 记录(邮件服务器)
nslookup -type=MX example.com

# 查询 NS 记录(域名服务器)
nslookup -type=NS example.com

# 查询 TXT 记录(文本记录)
nslookup -type=TXT example.com

反向查找 IP 地址对应的域名:

nslookup 93.184.216.34
# 输出示例:
34.216.184.93.in-addr.arpa     name = example.com.

指定 DNS 服务器查询:

nslookup example.com 8.8.8.8
# 这将使用 Google 的公共 DNS 服务器(8.8.8.8)进行查询。

查询域名的 SOA 记录

nslookup -type=SOA example.com

查询 IPv6 地址

nslookup -type=AAAA example.com

设置查询超时时间

nslookup -timeout=5 example.com
# 这将设置查询超时时间为 5 秒。

2.13.3、交互模式

nslookup 支持交互模式,可以在命令行中输入 nslookup 进入交互模式,然后输入查询命令。

nslookup
> example.com
> set type=MX
> example.com
> exit

2.13.4、高级用法

查询域名的 SPF 记录:

nslookup -type=TXT example.com
# SPF 记录通常以 v=spf1 开头。

查询域名的 CNAME 记录:

nslookup -type=CNAME www.example.com

查询域名的 PTR 记录:

nslookup -type=PTR 34.216.184.93.in-addr.arpa

显示详细的调试信息:

nslookup -debug example.com

2.13.5、注意事项

  • DNS 缓存:查询结果可能受到本地 DNS 缓存的影响。如果需要最新结果,可以刷新 DNS 缓存。
  • DNS 服务器:默认情况下,nslookup 使用系统配置的 DNS 服务器。可以通过指定 DNS 服务器来覆盖默认设置。
  • 超时设置:如果网络较慢,可以增加超时时间以避免查询失败。

2.13.6、与其他工具的比较

  • host:功能类似,但输出更简洁。
  • dig:功能更强大,适合高级用户。

2.14、nc/netcat

netcat(通常简称为 nc)是一个功能强大的网络工具,被称为“网络瑞士军刀”。它可以用于创建 TCP/UDP 连接、端口扫描、文件传输、端口监听等。

2.14.1、基本用法

nc [选项] [主机名或IP地址] [端口]

常用选项:

  • -l 监听模式(作为服务器)。
  • -p <端口> 指定本地端口(通常用于监听模式)。
  • -u 使用 UDP 协议(默认是 TCP)。
  • -v 显示详细信息(verbose)。
  • -vv 显示更详细的信息。
  • -z 端口扫描模式(不发送数据)。
  • -w <秒> 设置超时时间。
  • -n 直接使用 IP 地址,不进行 DNS 解析。
  • -e <命令> 在连接后执行指定命令(常用于反向 Shell)。

2.14.2、常用操作

连接到远程服务器

nc example.com 80
# 连接到 example.com 的 80 端口(HTTP 服务)。连接成功后,可以手动输入 HTTP 请求,例如:
GET / HTTP/1.1
Host: example.com

监听端口(作为服务器)

nc -l -p 1234
#在本地 1234 端口监听连接。其他设备可以通过 nc <IP地址> 1234 连接到该端口。

文件传输

# 发送文件(从客户端到服务器):
nc -l -p 1234 > received_file.txt  # 服务器端
nc example.com 1234 < file_to_send.txt  # 客户端
# 接收文件(从服务器到客户端):
nc -l -p 1234 < file_to_send.txt  # 服务器端
nc example.com 1234 > received_file.txt  # 客户端

端口扫描

nc -zv example.com 20-30
#扫描 example.com 的 20 到 30 端口,检查哪些端口是开放的。

使用 UDP 协议

nc -u example.com 53
#使用 UDP 协议连接到 example.com 的 53 端口(DNS 服务)。

反向 Shell

# 服务器端(监听连接):
nc -l -p 1234
# 客户端(连接并执行 Shell):
nc example.com 1234 -e /bin/bash
# 连接成功后,服务器端可以执行 Shell 命令。

聊天模式

# 服务器端:
nc -l -p 1234
# 客户端:
nc example.com 1234
# 连接成功后,双方可以实时发送消息。

测试网络连通性

nc -zv example.com 80
# 测试 example.com 的 80 端口是否开放。

设置超时时间

nc -w 5 example.com 80
# 设置连接超时时间为 5 秒。

直接使用 IP 地址

nc -n 192.168.1.1 80
# 直接使用 IP 地址,不进行 DNS 解析。

2.14.3、高级用法

创建 HTTP 服务器

echo -e "HTTP/1.1 200 OK\n\nHello, World!" | nc -l -p 8080
# 在本地 8080 端口创建一个简单的 HTTP 服务器。访问 http://<IP地址>:8080 可以看到 "Hello, World!"。

创建反向代理

nc -l -p 1234 | nc example.com 80
# 将本地 1234 端口的流量转发到 example.com 的 80 端口。

测试 SMTP 服务器

nc example.com 25
# 连接到 example.com 的 25 端口(SMTP 服务),可以手动输入 SMTP 命令进行测试。

测试 DNS 服务器

nc -u example.com 53
# 连接到 example.com 的 53 端口(DNS 服务),可以手动发送 DNS 查询。

2.14.4、注意事项

  • 安全性:netcat 功能强大,但使用不当可能导致安全风险(如反向 Shell)。在生产环境中应谨慎使用。
  • 防火墙:确保防火墙允许相关端口的流量。
  • 版本差异:不同操作系统上的 netcat 版本可能略有差异,某些选项可能不可用。

2.14.5、与其它工具比较

  • telnet:功能类似,但 netcat 更强大。
  • socat:功能更强大,支持更多协议和高级功能。
  • nmap:更适合端口扫描和网络探测。

2.15、ping

ping 命令用来测试主机之间网络的连通性。执行 ping 指令会使用 ICMP 传输协议,发出要求回应的信息,若远端主机的网络功能没有问题,就会回应该信息,因而得知该主机运作正常。

2.15.1、基本用法

ping [选项] [目标主机名或IP地址]

常用选项:

  • -c <次数> 指定发送的 ICMP 包次数。
  • -i <秒> 设置发送 ICMP 包的时间间隔(默认 1 秒)。
  • -s <字节> 设置 ICMP 包的大小(默认 56 字节)。
  • -t <TTL> 设置 ICMP 包的生存时间(TTL)。
  • -W <秒> 设置等待响应的超时时间。
  • -q 静默模式,只显示统计信息。
  • -v 显示详细信息。
  • -4 强制使用 IPv4。
  • -6 强制使用 IPv6。

2.15.2、常用操作

测试网络连通性

ping example.com
#持续向 example.com 发送 ICMP 包,直到手动停止(按 Ctrl+C)。

指定发送次数

ping -c 5 example.com
#向 example.com 发送 5 个 ICMP 包后停止。

设置发送间隔

ping -i 2 example.com
# 每隔 2 秒发送一个 ICMP 包。

设置包大小

ping -s 1000 example.com
# 发送大小为 1000 字节的 ICMP 包。

设置超时时间

ping -W 3 example.com
# 等待响应的超时时间为 3 秒。

静默模式

ping -c 5 -q example.com
# 只显示统计信息,不显示每个 ICMP 包的详细信息。

强制使用 IPv4 或 IPv6

ping -4 example.com  # 强制使用 IPv4
ping -6 example.com  # 强制使用 IPv6

2.15.3、输出解析

ping 命令的典型输出如下:

PING example.com (93.184.216.34): 56 data bytes
64 bytes from 93.184.216.34: icmp_seq=0 ttl=55 time=25.3 ms
64 bytes from 93.184.216.34: icmp_seq=1 ttl=55 time=24.8 ms
64 bytes from 93.184.216.34: icmp_seq=2 ttl=55 time=25.1 ms

--- example.com ping statistics ---
3 packets transmitted, 3 packets received, 0.0% packet loss
round-trip min/avg/max/stddev = 24.8/25.1/25.3/0.2 ms
  • icmp_seq:ICMP 包的序列号。
  • ttl:包的生存时间(Time To Live)。
  • time:包的往返时间(Round-Trip Time, RTT)。
  • packet loss:丢包率。
  • min/avg/max/stddev:最小、平均、最大和标准偏差的往返时间。

2.15.4、高级用法

测试本地网络

ping 127.0.0.1
# 测试本地环回接口,检查网络协议栈是否正常。

测试局域网设备

ping 192.168.1.1
# 测试局域网中的设备(如路由器)是否可达。

测试 DNS 解析

ping example.com
# 测试 DNS 解析是否正常,同时检查目标主机是否可达。

测试网络性能

ping -c 10 -i 0.5 example.com
# 通过发送 10 个 ICMP 包,间隔 0.5 秒,测试网络延迟和稳定性。

检查 MTU 大小

ping -s 1472 -M do example.com
# 测试最大传输单元(MTU)大小。如果包大小超过 MTU,会收到“Packet needs to be fragmented”的提示。

2.15.4、注意事项

  • 权限:在某些系统中,ping 需要管理员权限(如 Linux 中使用 sudo)。
  • 防火墙:目标主机的防火墙可能阻止 ICMP 包,导致 ping 失败。
  • 网络问题:如果 ping 失败,可能是网络配置、路由或硬件问题。

2.15.5、与其他工具的比较

  • traceroute:用于追踪数据包从源到目标的路径。
  • mtr:结合 ping 和 traceroute 的功能,实时显示网络状况。
  • fping:快速并行 ping 多个主机。

2.16、traceroute

traceroute 是一个网络诊断工具,用于追踪数据包从源主机到目标主机的路径。它通过发送一系列 ICMP 或 UDP 包,并逐步增加 TTL(Time To Live)值,从而显示数据包经过的每一跳(路由器或网关)的 IP 地址和延迟信息。它默认发送的数据包大小是 40 字节。

2.16.1、基本用法

traceroute [选项] [目标主机名或IP地址]

常用选项:

  • -I 使用 ICMP 包(默认使用 UDP 包)。
  • -T 使用 TCP SYN 包。
  • -n 不解析主机名,直接显示 IP 地址。
  • -m <最大跳数> 设置最大跳数(默认 30)。
  • -q <查询次数> 每跳发送的查询次数(默认 3)。
  • -w <超时时间> 设置等待响应的超时时间(秒)。
  • -4 强制使用 IPv4。
  • -6 强制使用 IPv6。

2.16.2、常用操作

追踪路径

traceroute example.com
# 追踪数据包到 example.com 的路径。

使用 ICMP 包

traceroute -I example.com
# 使用 ICMP 包代替默认的 UDP 包。

不解析主机名

traceroute -n example.com
# 直接显示 IP 地址,不解析主机名。

设置最大跳数

traceroute -m 20 example.com
# 设置最大跳数为 20。

设置查询次数

traceroute -q 5 example.com
# 每跳发送 5 个查询包。

设置超时时间

traceroute -w 2 example.com
# 设置等待响应的超时时间为 2 秒。

强制使用 IPv4 或 IPv6

traceroute -4 example.com  # 强制使用 IPv4
traceroute -6 example.com  # 强制使用 IPv6

2.16.3、输出解析

traceroute 命令的典型输出如下:

traceroute to example.com (93.184.216.34), 30 hops max, 60 byte packets
 1  192.168.1.1 (192.168.1.1)  1.234 ms  1.345 ms  1.456 ms
 2  10.0.0.1 (10.0.0.1)  5.678 ms  5.789 ms  5.890 ms
 3  203.0.113.1 (203.0.113.1)  10.123 ms  10.234 ms  10.345 ms
 4  93.184.216.34 (93.184.216.34)  25.678 ms  25.789 ms  25.890 ms
  • 跳数:每行的第一个数字表示跳数(即经过的路由器数量)。
  • IP 地址和主机名:显示每一跳的 IP 地址和主机名(如果启用解析)。
  • 延迟:每跳的延迟时间(通常显示 3 个值,分别对应 3 次查询)。

2.16.4、高级用法

追踪本地网络

traceroute 192.168.1.1
# 追踪局域网中的设备(如路由器)路径。

追踪 IPv6 地址

traceroute -6 example.com
# 追踪 IPv6 地址的路径。

使用 TCP SYN 包

traceroute -T example.com
# 使用 TCP SYN 包代替默认的 UDP 包。

检查防火墙规则

traceroute -T -p 80 example.com
# 使用 TCP SYN 包并指定端口(如 80),检查防火墙是否允许该端口的流量。

设置包大小

traceroute -s 100 example.com
# 设置 ICMP 包的大小为 100 字节。

2.16.5、注意事项

  • 权限:在某些系统中,traceroute 需要管理员权限(如 Linux 中使用 sudo)。
  • 防火墙:目标主机的防火墙可能阻止 ICMP 或 UDP 包,导致某些跳无法显示。
  • 网络问题:如果 traceroute 显示 *,表示该跳未响应,可能是网络配置或硬件问题。

2.16.6、与其他工具的比较

  • ping:测试主机之间的连通性和延迟。
  • mtr:结合 ping 和 traceroute 的功能,实时显示网络状况。
  • pathping(Windows):结合 ping 和 tracert 的功能,提供更详细的统计信息。

2.17、netstat

netstat 是一个功能强大的网络工具,用于显示网络连接、路由表、接口统计信息、伪装连接、多播成员等信息。它可以帮助你监控和分析网络活动。

2.17.1、基本用法

netstat [选项]

常用选项:

  • -a 显示所有连接和监听端口。
  • -t 显示 TCP 连接。
  • -u 显示 UDP 连接。
  • -n 以数字形式显示地址和端口号(不解析主机名和服务名)。
  • -p 显示进程 ID 和程序名称。
  • -r 显示路由表。
  • -s 显示每个协议的统计信息。
  • -l 显示监听中的端口。
  • -c 持续输出信息(实时刷新)。
  • -i 显示网络接口的统计信息。
  • -g 显示多播组成员信息。

2.17.2、常用操作

显示所有连接和监听端口

netstat -a
# 显示所有活动的网络连接和监听端口。

显示 TCP 连接

netstat -at
# 显示所有 TCP 连接。

显示 UDP 连接

netstat -au
# 显示所有 UDP 连接。

以数字形式显示地址和端口

netstat -an
# 显示所有连接,但不解析主机名和服务名。

显示进程 ID 和程序名称

netstat -tunp
# 显示 TCP 和 UDP 连接,并显示进程 ID 和程序名称。

显示路由表

netstat -r
# 显示系统的路由表。

显示协议统计信息

netstat -s
# 显示每个协议(如 TCP、UDP、ICMP 等)的统计信息。

显示监听中的端口

netstat -l
# 显示所有监听中的端口。

持续输出信息

netstat -c
# 持续输出网络连接信息,类似于实时监控。

显示网络接口统计信息

netstat -i
# 显示网络接口的统计信息,包括接收和发送的数据包数量。

显示多播组成员信息

netstat -g
# 显示多播组成员信息。

2.17.3、输出解析

连接信息

Proto Recv-Q Send-Q Local Address           Foreign Address         State
tcp        0      0 192.168.1.100:22       192.168.1.1:54321       ESTABLISHED
  • Proto:协议类型(如 TCP、UDP)。
  • Recv-Q:接收队列中的数据量。
  • Send-Q:发送队列中的数据量。
  • Local Address:本地地址和端口。
  • Foreign Address:远程地址和端口。
  • State:连接状态(如 ESTABLISHED、LISTENING)。

路由表

Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         192.168.1.1     0.0.0.0         UG    100    0        0 eth0
192.168.1.0     0.0.0.0         255.255.255.0   U     100    0        0 eth0
  • Destination:目标网络或主机。
  • Gateway:网关地址。
  • Genmask:子网掩码。
  • Flags:路由标志(如 U=活动,G=网关)。
  • Metric:路由成本。
  • Iface:网络接口。

接口统计信息

Iface   MTU Met   RX-OK RX-ERR RX-DRP RX-OVR    TX-OK TX-ERR TX-DRP TX-OVR Flg
eth0   1500 0     12345   0     0     0         6789   0     0     0     BMRU
  • Iface:网络接口名称。
  • MTU:最大传输单元。
  • RX-OK/TX-OK:成功接收/发送的数据包数量。
  • RX-ERR/TX-ERR:接收/发送错误的数据包数量。
  • RX-DRP/TX-DRP:丢弃的接收/发送数据包数量。
  • RX-OVR/TX-OVR:接收/发送溢出的数据包数量。
  • Flg:接口标志(如 B=广播,M=多播,R=运行,U=活动)。

2.17.4、高级用法

显示 TCP 连接的进程信息

netstat -tnp
# 显示所有 TCP 连接,并显示进程 ID 和程序名称。

显示 UDP 连接的进程信息

netstat -unp
# 显示所有 UDP 连接,并显示进程 ID 和程序名称。

显示监听中的 TCP 端口

netstat -ltn
# 显示所有监听中的 TCP 端口,并以数字形式显示地址和端口。

显示监听中的 UDP 端口

netstat -lun
# 显示所有监听中的 UDP 端口,并以数字形式显示地址和端口。

显示所有网络接口的详细信息

netstat -ie
# 显示所有网络接口的详细信息,包括 IP 地址、MAC 地址等。

显示多播组成员信息

netstat -g
# 显示多播组成员信息,包括接口和多播地址。

2.17.5、注意事项

  • 权限:在某些系统中,netstat 需要管理员权限(如 Linux 中使用 sudo)。
  • 替代工具:在某些现代 Linux 发行版中,ss 和 ip 命令已逐渐取代 netstat,功能更强大且性能更好。

2.17.6、与其它工具的比较

  • ss:显示套接字统计信息,功能更强大且性能更好。
  • ip:显示和配置网络接口、路由、地址等信息。
  • lsof:显示打开的文件和网络连接。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2306607.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

洛谷 P8705:[蓝桥杯 2020 省 B1] 填空题之“试题 E :矩阵” ← 卡特兰数

【题目来源】 https://www.luogu.com.cn/problem/P8705 【题目描述】 把 1∼2020 放在 21010 的矩阵里。要求同一行中右边的比左边大&#xff0c;同一列中下边的比上边的大。一共有多少种方案? 答案很大&#xff0c;你只需要给出方案数除以 2020 的余数即可。 【答案提交】 …

【无标题】网络安全公钥密码体制

第一节 网络安全 概述 一、基本概念 网络安全通信所需要的基本属性“ 机密性&#xff1b;消息完整性&#xff1b;可访问性与可用性&#xff1b;身份认证。 二、网络安全威胁 窃听&#xff1b;插入&#xff1b;假冒&#xff1b;劫持&#xff1b;拒绝服务Dos和分布式拒绝服务…

【含开题报告+文档+PPT+源码】基于SpringBoot的进销存管理系统的设计与实现

开题报告 本文提出并研发了一款基于Spring Boot框架构建的进销存管理系统&#xff0c;该系统集成了全方位的企业运营管理功能&#xff0c;涵盖了用户登录验证、系统公告管理、员工信息与权限管理、物料全流程&#xff08;采购入库、销售出库、退货处理&#xff09;控制、部门组…

Linux-SaltStack配置

文章目录 SaltStack配置 &#x1f3e1;作者主页&#xff1a;点击&#xff01; &#x1f916;Linux专栏&#xff1a;点击&#xff01; ⏰️创作时间&#xff1a;2025年02月24日20点51分 SaltStack配置 SaltStack 中既支持SSH协议也支持我们的一个客户端 #获取公钥&#xff08;…

事务的4个特性和4个隔离级别

事务的4个特性和4个隔离级别 1. 什么是事务2. 事务的ACID特性2.1 原子性2.2 一致性2.3 持久性2.4 隔离性 3. 事务的创建4. 事务并发时出现的问题4.1 DIRTY READ 脏读4.2 NON - REPEATABLR READ 不可重复读4.3 PHANTOM READ 幻读 5. 事务的隔离级别5.1 READ UNCOMMITTED 读未提交…

对计算机中缓存的理解和使用Redis作为缓存

使用Redis作为缓存缓存例子缓存的引入 Redis缓存的实现 使用Redis作为缓存 缓存 ​什么是缓存&#xff0c;第一次接触这个东西是在考研学习408的时候&#xff0c;计算机组成原理里面学习到Cache缓存&#xff0c;用于降低由于内存和CPU的速度的差异带来的延迟。它是在CPU和内存…

SOME/IP-SD -- 协议英文原文讲解5

前言 SOME/IP协议越来越多的用于汽车电子行业中&#xff0c;关于协议详细完全的中文资料却没有&#xff0c;所以我将结合工作经验并对照英文原版协议做一系列的文章。基本分三大块&#xff1a; 1. SOME/IP协议讲解 2. SOME/IP-SD协议讲解 3. python/C举例调试讲解 5.1.2.5 S…

lowagie(itext)老版本手绘PDF,包含页码、水印、图片、复选框、复杂行列合并等。

入口类&#xff1a;exportPdf ​ package xcsy.qms.webapi.service;import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import com.alibaba.nacos.common.utils.StringUtils; import com.ibm.icu.text.RuleBasedNumberFormat; import com.lowa…

达梦有没有类似oerr的功能

在oracle 23ai的sqlplus中&#xff0c;直接看异常信息说明&#xff1a; 达梦没有此功能&#xff0c;但是可以造一个 cd /home/dmdba cat >err.sql<<eof set echo off set ver off set timing off set lineshow off set feedback off select * from V\$ERR_INFO wher…

实战-网安

面试感受:网安公司前端实习 今天我有幸面试了一家网络安全公司的前端开发实习岗位,整个过程让我受益匪浅,也让我对未来的职业发展有了更清晰的认识。 首先,面试官非常专业且友好,整个面试氛围轻松但不失严谨。面试一开始,面试官简单介绍了公司背景和团队文化,让我对公…

MybatisPlus-扩展功能-枚举处理器

在Mybatis里有一个叫TypeHandler的类型处理器&#xff0c;我们常见的PO当中的这些成员变量的数据类型&#xff0c;它都有对应的处理器&#xff0c;因此它就能自动实现这些Java数据类型与数据库类型的相互转换。 它里面还有一个叫EnumOrdinalTypeHandler的枚举处理器&#xff0…

力扣2454. 下一个更大元素 IV

力扣2454. 下一个更大元素 IV 题目 题目解析及思路 题目要求对于每个数&#xff0c;找到右边比它大的第二个数&#xff0c;并记录在ans数组中 如果是右边第一个大的&#xff0c;就用一个递减栈即可&#xff0c;栈顶元素如果<当前元素则弹出 第二个大数就要利用弹出的栈顶…

unity学习51:所有UI的父物体:canvas画布

目录 1 下载资源 1.1 在window / Asset store下下载一套免费的UI资源 1.2 下载&#xff0c;导入import 1.3 导入后在 project / Asset下面可以看到 2 画布canvas&#xff0c;UI的父物体 2.1 创建canvas 2.1.1 画布的下面是 event system是UI相关的事件系统 2.2 canvas…

Ollama部署与常用命令

Ollama是一款开源工具&#xff0c;其目标是简化大语言模型在本地环境的部署和使用。它支持多种流行的开源大语言模型&#xff0c;如 Llama 2、Qwen2.5等。 通过Ollama&#xff0c;用户无需具备深厚的技术背景&#xff0c;就能在普通的消费级硬件上快速搭建一个强大的语言处理环…

Visual Studio Code 远程开发方法

方法1 共享屏幕远程控制&#xff0c;如 to desk, 向日葵 &#xff0c;像素太差&#xff0c;放弃 方法2 内网穿透 ssh 第二个方法又很麻烦&#xff0c;尤其是对于 windows 电脑&#xff0c;要使用 ssh 还需要额外安装杂七杂八的东西&#xff1b;并且内网穿透服务提供商提供的…

C语言预编译

大家好&#xff0c;这里是小编的博客频道 小编的博客&#xff1a;就爱学编程 很高兴在CSDN这个大家庭与大家相识&#xff0c;希望能在这里与大家共同进步&#xff0c;共同收获更好的自己&#xff01;&#xff01;&#xff01; 本文目录 引言正文一、预处理的作用与流程&#xf…

汽车智能制造企业数字化转型SAP解决方案总结

一、项目实施概述 项目阶段划分&#xff1a; 蓝图设计阶段主数据管理方案各模块蓝图设计方案下一阶段工作计划 关键里程碑&#xff1a; 2022年6月6日&#xff1a;项目启动会2022年12月1日&#xff1a;系统上线 二、总体目标 通过SAP实施&#xff0c;构建研产供销协同、业财一…

flowable-ui 的会签功能实现

场景&#xff1a;在进行智慧保时通开发时&#xff0c;有个协作合同入围功能&#xff0c;这个功能的流程图里有个评审小组&#xff0c;这个评审小组就需要进行会签操作&#xff0c;会签完成后&#xff0c;需要依据是否有不通过的情况选择下一步走的流程 思考步骤&#xff1a; 首…

大连指令数据集的创建--数据收集与预处理_02

1.去哪儿爬虫 编程语言&#xff1a;Python爬虫框架&#xff1a;Selenium&#xff08;用于浏览器自动化&#xff09;解析库&#xff1a;BeautifulSoup&#xff08;用于解析HTML&#xff09; 2.爬虫策略 目标网站&#xff1a;去哪儿&#xff08;https://travel.qunar.com/trav…

STM32MP157A-FSMP1A单片机移植Linux系统SPI总线驱动

SPI总线驱动整体上与I2C总线驱动类型&#xff0c;差别主要在设备树和数据传输上&#xff0c;由于SPI是由4根线实现主从机的通信&#xff0c;在设备树上配置时需要对SPI进行设置。 原理图可知&#xff0c;数码管使用的SPI4对应了单片机上的PE11-->SPI4-NSS,PE12-->SPI4-S…