Linux网卡断连与丢包排查须按物理层→数据链路层→网络层→传输层分层验证:先用ip link看UP和LOWER_UP确认物理连接,再用ethtool查Link detected、Speed、Duplex及-S统计错误,接着ip addr核验IP有效性,ip route检查路由完整性,最后通过/proc/net/dev、netstat -s等定位丢包环节。

Linux中排查网卡断连与丢包故障,核心是分层验证:先确认物理链路通不通,再看IP是否生效,接着查路由和DNS是否完整,最后定位丢包发生的具体环节。不能一上来就抓包或改配置,得按“物理层→数据链路层→网络层→传输层”顺序推进。
检查网卡物理状态和驱动是否正常
这是所有网络问题的第一关。网卡没连上,后面全是空谈。
- 运行 ip link show,重点看接口状态是否为 UP 和 LOWER_UP;若只有 UP 没有 LOWER_UP,说明物理连接中断(网线松动、光模块未插紧、交换机端口down)
- 用 ethtool eth0(替换为实际接口名)查看 Link detected: yes/no、Speed 和 Duplex;双工不匹配(如一端全双工、一端半双工)会引发大量 CRC 错误和丢包
- 执行 ethtool -S eth0,关注 rx_crc_errors、rx_missed_errors、rx_fifo_errors、tx_fifo_errors;非零值明显升高,大概率是物理层或驱动问题
确认IP地址与接口配置是否有效
没有正确IP,设备在网络中就“隐身”了;IP虽有但配置冲突,也会导致通信异常。
- 运行 ip addr show,确认目标接口是否有合法的 IPv4 地址(不是 169.254.x.x 这类链路本地地址),且状态为 UP
- 若地址缺失,先检查 DHCP 是否工作:sudo dhclient -v eth0;若失败,可能是 NetworkManager 冲突或 DHCP 服务不可达
- 检查是否有重复 IP:用 arping -D -I eth0 192.168.1.100(替换成你拟配的IP),返回非零表示已存在冲突
验证路由表与默认出口是否完整
即使有IP、物理连通,若路由表缺失或错误,数据包仍发不出去。
- 执行 ip route show,确认存在默认路由(default via x.x.x.x);没有则无法访问网关以外的地址
- 若需访问特定网段(如 10.0.0.0/24),检查对应路由是否存在;缺失时可用 sudo ip route add 10.0.0.0/24 via 192.168.1.1 dev eth0 临时添加
- 注意策略路由干扰:运行 ip rule show,避免因自定义规则导致流量走错路径
定位丢包发生的协议栈层级
丢包可能发生在网卡、内核缓冲区、防火墙或应用层,需逐层比对统计差异。
- 查网卡收发统计:cat /proc/net/dev,重点关注 RX-DRP(ring buffer 溢出丢包)、RX-ERR(校验/帧错误)、TX-DRP(发送队列满丢包)
- 查内核网络层丢包:netstat -s | grep -A 5 -B 5 "packet receive errors\|receive buffer errors";UDP 接收缓冲区溢出(rcvbuferrors)很常见
- 检查 tc 流控规则:tc -s qdisc show dev eth0;若看到 netem + loss 参数,说明人为注入丢包,不是真实故障
- 排查 iptables/nftables:sudo iptables -L -v -n 或 sudo nft list ruleset;DROP 计数持续增长,说明防火墙在拦截


















