一、使用 ping 命令测试网络连接
ping www.tencent.com
·网络连接正常时,输出示例如下:
PING www.tencent.com.eo.dnse5.com (61.170.66.121) 56(84) bytes of data.64 bytes from 61.170.66.121 (61.170.66.121): icmp_seq=1 ttl=50 time=10.3 ms64 bytes from 61.170.66.121 (61.170.66.121): icmp_seq=2 ttl=50 time=10.1 ms64 bytes from 61.170.66.121 (61.170.66.121): icmp_seq=3 ttl=50 time=9.77 ms64 bytes from 61.170.66.121 (61.170.66.121): icmp_seq=4 ttl=50 time=10.1 ms…
·网络连接异常时,输出示例如下:
ping: www.example.com: Name or service not known
或者:
ping: connect: Network is unreachable
二、使用 traceroute 命令跟踪网络路径
在 Linux 中,可使用 traceroute 命令跟踪网络路径。该命令显示从本地主机到目标主机的网络路径,以及每个路由器的 IP 地址与响应时间等信息。以跟踪到 www.example.com 的网络路径为例:
traceroute www.example.com
·网络连接正常时,输出示例如下:
traceroute to www.example.com (172.217.6.196), 30 hops max, 60 byte packets 1 gateway (192.168.1.1) 1.000 ms 1.000 ms 1.000 ms 2 10.10.10.1 (10.10.10.1) 10.000 ms 10.000 ms 10.000 ms 3 172.16.1.1 (172.16.1.1) 20.000 ms 20.000 ms 20.000 ms 4 172.16.2.1 (172.16.2.1) 30.000 ms 30.000 ms 30.000 ms 5 172.16.3.1 (172.16.3.1) 40.000 ms 40.000 ms 40.000 ms 6 172.16.4.1 (172.16.4.1) 50.000 ms 50.000 ms 50.000 ms……
·网络连接异常时,输出示例如下:
traceroute to www.example.com (172.217.6.196), 30 hops max, 60 byte packets1 gateway (192.168.1.1) 1.000 ms 1.000 ms 1.000 ms2 * * *3 * * *4 * * *5 * * *
三、使用 netstat 命令查看网络连接状态
在 Linux 中,可使用 netstat 命令查看网络连接状态。该命令显示当前系统中的网络连接信息,包括本地 IP 地址、远程 IP 地址与连接状态等。以显示当前系统中的网络连接信息为例:
netstat -a
·网络连接正常时,输出示例如下:
Active Internet connections (servers and established) Proto Recv-Q Send-Q Local Address Foreign Address State tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN tcp 0 0 192.168.1.100:22 192.168.1.101:12345 ESTABLISHED tcp 0 0 192.168.1.100:22 192.168.1.102:54321 ESTABLISHED …
·网络连接异常时,输出示例如下:
Active Internet connections (servers and established) Proto Recv-Q Send-Q Local Address Foreign Address State tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN tcp 0 1 192.168.1.100:22 192.168.1.101:12345 SYN_SENT tcp 0 0 192.168.1.100:22 192.168.1.102:54321 CLOSE_WAIT …
注意:说明:
四、使用 ss 命令查看网络连接状态
ss(socket statistics,套接字统计)是 Linux 系统下的网络连接监控与调试工具。与传统的 netstat 命令相比,ss 在性能和信息展示方面更具优势。
常用命令如下:
·显示所有当前连接:
ssNetid State Recv-Q Send-Q Local Address:Port Peer Address:Port Processu_str ESTAB 0 0 /run/systemd/journal/stdout 25077 * 24218u_str ESTAB 0 0 * 20557 * 592u_dgr ESTAB 0 0 * 23602 * 13633……
·显示所有 TCP 连接:
ss -t
·显示所有 UDP 连接:
ss -u
·显示所有监听中的套接字:
ss -l
·显示所有已建立(ESTABLISHED)的连接:
ss -t state established
·按多个状态过滤(例如:已建立且正在关闭的连接):
ss -t state established state closing
·显示进程信息。如需查看使用套接字的对应进程,请使用 -p 选项:
ss -t -p
·显示更多详细信息,使用 -e 选项显示扩展信息(例如滑动窗口大小、丢包统计等):
ss -t -e
·显示套接字摘要统计信息,使用 -s 选项显示套接字摘要统计信息,如 TCP/UDP/RAW 以及连接数量等:
ss -s
·结合常用过滤器,如需查看特定端口的连接情况,可结合 grep 命令进行过滤。以查看端口 80 上的所有连接为例:
ss -t -a | grep ':80'
在日常网络监控与故障排查中,可根据实际需求灵活组合各选项。如需查看完整的选项列表及详细说明,请参考 ss 命令的手册页(man page)。
五、使用 ethtool 查询和控制网络设备驱动和硬件设置
ethtool 是一个用于查询和控制网络设备驱动和硬件设置的实用工具。若系统未安装 ethtool,请执行以下命令安装该软件包。
dnf install ethtool
以下介绍在其他网络工具中不常见或无法被替代的 ethtool 的高级功能和硬件设置。
六、网络设备速度、双工模式和自动协商查询与设置
·查询网络设备速度、双工模式和自动协商查询与设置(以网卡 ens18 示例):
ethtool ens18 #以网卡 ens18 举例
输出示例:
Settings for ens18: …… Speed: 1000Mb/s Duplex: Full Auto-negotiation: on ……
·修改网络设备速度、双工模式和自动协商设置:
ethtool -s ens18 speed 100 duplex full autoneg off
七、流量控制设置
·查看网络设备的流量控制设置
ethtool -a ens18Pause parameters for eno1:Autonegotiate: onRX: offTX: off
·修改网络的流量控制设置:
ethtool -A ens18 rx on tx off
八、Wake-on-LAN 功能设置
·查询网络设备的 Wake-on-LAN 功能:
ethtool ens18
输出示例:
Settings for ens18: …… Wake-on: g …..
·开启网络设备的 Wake-on-LAN 功能:
ethtool -s ens18 wol g
·关闭网络设备的 Wake-on-LAN 功能:
ethtool -s ens18 wol d
九、网络设备的硬件特性
·查看网络设备的硬件特性:
ethtool -k ens18
输出示例:
Features for ens18:rx-checksumming: ontx-checksumming: on tx-checksum-ipv4: off [fixed] tx-checksum-ip-generic: on tx-checksum-ipv6: off [fixed]……
·更改网络设备的硬件特性,如启用通用接收分散,通用分组传输:
ethtool -K ens18 tso on gso on
十、网络设备的统计信息
查看网络设备的统计信息:
ethtool -S ens18
输出示例:
NIC statistics: rx_packets: 399566 tx_packets: 257685 rx_bytes: 215936573 tx_bytes: 55115699 rx_broadcast: 9854 tx_broadcast: 92 ……
十一、网络设备自检
执行网络设备的自检:
ethtool -t ens18
输出示例:
The test result is PASSThe test extra info:Register test (offline) 0Eeprom test (offline) 0Interrupt test (offline) 0Loopback test (offline) 0Link test (on/offline) 0
如果自检中出现故障,可以根据显示的错误信息检查相应的驱动程序、固件和硬件,以便解决问题。
十二、使用 tcpdump 命令诊断网络问题
tcpdump 是一款功能强大的网络抓包工具,可用于捕获网络数据包并显示其内容。以下为 tcpdump 的常用使用示例:
十三、按目标主机捕获数据包
使用以下命令捕获特定目标主机的数据包:
tcpdump -i eth0 host www.example.com
其中, -i 参数指定要捕获的网络接口, host 参数指定要捕获的目标主机。
·网络连接正常时,输出示例如下:
tcpdump -i eth0 src host 192.168.1.100 and dst host www.example.com
输出示例:
tcpdump: verbose output suppressed, use -v or -vv for full protocol decodelistening on eth0, link-type EN10MB (Ethernet), capture size 262144 bytes14:23:45.678901 IP 192.168.1.100.12345 > 93.184.216.34.80: Flags [S], seq 123456789, win 65535, options [mss 1460,nop,nop,sackOK], length 014:23:45.789012 IP 93.184.216.34.80 > 192.168.1.100.12345: Flags [S.], seq 987654321, ack 123456790, win 65535, options [mss 1460,nop,nop,sackOK], length 014:23:45.890123 IP 192.168.1.100.12345 > 93.184.216.34.80: Flags [.], ack 1, win 65535, length 014:23:45.901234 IP 192.168.1.100.12345 > 93.184.216.34.80: Flags [P.], seq 1:101, ack 1, win 65535, length 10014:23:46.012345 IP 93.184.216.34.80 > 192.168.1.100.12345: Flags [.], ack 101, win 65535, length 0…
·网络连接异常时,输出示例如下:
tcpdump -i eth0 src host 192.168.1.100 and dst host www.example.com
输出示例:
tcpdump: verbose output suppressed, use -v or -vv for full protocol decodelistening on eth0, link-type EN10MB (Ethernet), capture size 262144 bytes14:23:45.678901 IP 192.168.1.100.12345 > 93.184.216.34.80: Flags [S], seq 123456789, win 65535, options [mss 1460,nop,nop,sackOK], length 014:23:45.789012 IP 93.184.216.34.80 > 192.168.1.100.12345: Flags [R.], seq 0, ack 123456790, win 0, length 0
其中,R 标志表示连接被重置,这意味着网络连接存在问题。
十四、按网段捕获数据包
使用以下命令捕获指定网段的数据包:
tcpdump -i eth0 net 192.168.1.0/24
此命令将仅捕获通过 eth0 的 192.168.1.0/24 网络的数据包。
十五、按端口捕获数据包
使用以下命令捕获通过 eth0 的 HTTP(端口 80)流量:
tcpdump -i eth0 port 80
可以将 80 替换为要监视的其他端口号。
十六、按指定协议捕获数据包
使用以下命令捕获 icmp 协议的流量:
tcpdump -i eth0 'icmp'
可以将 icmp 替换为要监视的其他协议(如 tcp 或 udp)。
十七、指定协议和端口捕获 DNS 或 DHCP 数据包
DNS 通常使用 UDP 协议的 53 端口进行请求。要捕获 DNS 数据包,可以运行以下命令:
tcpdump -i eth0 'udp port 53'
DHCP 请求和响应通常使用 UDP 协议的 67 和 68 端口进行通信。如需捕获与 DHCP 相关的数据包,可执行以下命令:
tcpdump -i eth0 'udp port 67 or udp port 68'
十八、捕获 TCP 三次握手的数据包
可以使用以下命令捕获 TCP 三次握手(SYN、SYN-ACK、ACK)过程中的数据包:
tcpdump -i eth0 'tcp[tcpflags] & (tcp-syn|tcp-ack) != 0'
该命令的-i 参数指定要捕获的网络接口为 eth0,过滤器部分 'tcp[tcpflags] & (tcp-syn|tcp-ack) != 0' 用于检测具有 “SYN” 和 “ACK” 标志的 TCP 数据包。
十九、限制捕获的数据包数量
使用 -c 参数指定要捕获的数据包数量:
tcpdump -i eth0 -c 10
此命令将仅捕获通过 eth0 的前 10 个数据包。
20、保存或读取数据包
将捕获的数据包保存到 .pcap 格式文件:
tcpdump -i eth0 -w output.pcap
从 .pcap 格式文件中读取数据包:
tcpdump -r output.pcap
21、检测 IP 和 MAC 地址冲突
IP 地址冲突指同一局域网内两个或多个设备被分配了相同的 IP 地址。该问题通常由以下原因引起:
·静态 IP 地址设置错误:当一个或多个设备静态指定了相同的 IP 地址时,会发生 IP 地址冲突。
·动态主机控制协议(DHCP)问题:例如多个 DHCP 服务器分配相同的地址。
IP 地址冲突会导致如下问题:
·影响设备之间的通信,出现连接问题和丢包现象。
·局域网中的两个设备无法同时访问网络。
·网络速度变慢、性能降低。
使用 arping 命令检测局域网中其他服务器的 IP 是否存在地址冲突:
arping -c 2 192.168.1.110
输出示例:
ARPING 192.168.1.11042 bytes from 02:99:96:xx:xx:xx (192.168.1.110): index=0 time=128.403 usec42 bytes from 62:10:6d:xx:xx:xx (192.168.1.110): index=1 time=168.765 usec
该命令向指定 IP 地址发送两个 ARP 请求(-c 2 指定发送 2 次)。若收到回复,则显示目标设备的 MAC 地址。通过观察响应结果,可判断是否存在多个 MAC 地址对应同一 IP 地址的情况。如上所示,192.168.1.110 对应两个不同的 MAC 地址,表明存在 IP 地址冲突。
如需检测当前服务器的某个网络接口的 IP 是否存在地址冲突,请使用如下命令:
arping -I ens18 -D 192.168.1.110
输出示例:
ARPING 192.168.1.110 from 0.0.0.0 ens18Unicast reply from 192.168.1.110 [02:99:96:xx:xx:xx] 0.803msSent 1 probes (1 broadcast(s))Received 1 response(s)
示例中,ens18 为待检测的网络接口,192.168.1.110 为待检测的 IP 地址。若响应中显示 1 response(s),表示有 1 个设备与该 IP 地址冲突,冲突设备的 MAC 地址为 02:99:96:xx:xx:xx。若返回 0 response(s),则表示无 IP 地址冲突。
22、ARP 老化和永久条目
ARP 老化时间决定 ARP 缓存中 IP 地址与 MAC 地址映射关系的保留时长。当 ARP 条目的存在时间超过老化时间后,系统将自动从 ARP 缓存中移除该条目,以清除无效或不活跃的地址映射,保持 ARP 缓存的有效性与稳定性。系统默认 ARP 老化时间为 60s。
sysctl net.ipv4.neigh.default.gc_stale_time
输出示例:
net.ipv4.neigh.default.gc_stale_time = 60
永久 ARP 条目由手动创建,不受 ARP 老化机制影响,不会被自动清除。该机制可为 IP 地址和 MAC 地址稳定不变的设备提供持久的地址映射,避免重复发送 ARP 请求获取相同映射。
在大多数场景下,默认的 ARP 老化设置即可满足网络需求。永久 ARP 条目应在特定场景下谨慎使用,且须确保对应设备的 IP 地址与 MAC 地址不会发生变化。
可使用以下命令查看当前的 ARP 缓存:
arp -n
输出示例:
Address HWtype HWaddress Flags Mask Iface192.168.1.111 ether 02:99:96:a7:27:43 CM ens18192.168.2.1 ether c2:fd:0b:bb:a6:9c C ens19192.168.1.1 ether 86:7a:1c:87:a8:35 C ens18192.168.2.111 ether 02:1e:16:7d:cc:50 C ens19
命令输出显示 IP 地址与 MAC 地址的映射关系及 ARP 条目状态。其中,Flags Mask 字段中 C 表示完全可用,M 表示正在使用的永久条目。
若发现 ARP 条目因错误配置为永久条目导致映射不正确,或需重新获取某个 IP 地址与 MAC 地址的映射关系,可使用以下命令删除该 ARP 条目:
sudo arp -d 192.168.1.111
其中,192.168.1.111 即从 ARP 缓存中删除的设备的 IP 地址。
如需创建永久条目, 可使用以下命令:
arp -s 192.168.1.111 02:99:96:xx:xx:xx
以上示例为 IP 地址 192.168.1.111 和 MAC 地址 02:99:96:xx:xx:xx 创建永久 ARP 条目。
创建完成后,可使用 arp -n 命令查看 ARP 缓存,该设备的条目标记为 M,表示永久条目。