Linux 网卡流量突然不对称(收发包差距巨大)排查思路

12次阅读

网卡收发流量严重不对称通常是配置、链路或应用异常的明确信号,需依次检查物理连接、驱动状态、内核统计、流量来源、进程行为及防火墙/路由策略。

Linux 网卡流量突然不对称(收发包差距巨大)排查思路

网卡收发流量严重不对称,比如接收(rx)很高但发送(tx)极低,或反过来,通常不是“正常负载差异”,而是配置、链路或应用行为异常的明确信号。重点不是看绝对值,而是看比例失衡是否超出业务预期——例如 Web 服务一般 tx > rx,而镜像下载或日志采集类服务则 rx 显著偏高。

先确认物理与驱动层是否稳定

很多看似“流量异常”的问题,根源在底层链路不可靠或驱动未正确工作:

  • 运行 ethtool eth0(把 eth0 换成你的网卡名),检查 Link detected: yesDuplex: Full 是否正常;若为 No,说明物理连接中断或协商失败
  • 执行 ip link show eth0,确认状态为 UP,且无 NO-CARRIERLOWER_UP 缺失
  • 查内核报错:dmesg | grep -i “eth0|virtio|firmware”,重点关注驱动加载失败、PCIe link down、ring buffer overflow 等提示

检查网卡统计是否真实异常

避免被监控工具误导,直接读取内核统计:

  • ip -s link show eth0 查看收发包计数、错误(RX-ERR/TX-ERR)、丢弃(RX-DRP/TX-DRP)、溢出(RX-OVR/TX-OVR)
  • RX-DRPRX-OVR 持续增长,说明内核 Ring Buffer 不足或内存压力大,导致接收包被静默丢弃(表现为“收不到”但实际已进网卡)
  • TX-DRP 高,可能是输出队列满、QoS 限速、或防火墙规则(如 iptables OUTPUT 链 DROP)主动丢弃

定位是本机行为还是外部影响

区分流量来源和去向,才能判断责任边界:

  • iftop -i eth0 -P 实时观察:哪些远端 IP 和端口在大量收/发?如果全是某个 IP 单向发包(如 udp 扫描、SYN Flood),可能是被攻击
  • nethogs -d 2 查进程级流量:确认是否某个进程(如 rsync、tcpdump、日志轮转脚本)在单向猛灌数据
  • 对比 ss -s 输出中的 total:TCP: 行,若 ESTAB 连接数极少但 RX 包量巨大,大概率是无效流量(如 ICMP 泛洪、UDP 反射攻击)

排查常见人为配置陷阱

一些看似合理的配置,会导致收发行为严重割裂:

  • 检查是否启用了 tcp_tw_recycle(已废弃)或 rp_filter(反向路径过滤):开启 strict 模式(net.ipv4.conf.eth0.rp_filter = 1)可能导致多路径或非对称路由下回包被丢弃,表现为“能收不能回”
  • 查看防火墙规则:iptables -L -v -niptables -t nat -L -v -n,特别留意 OUTPUT 和 FORWARD 链中是否有针对性 DROP 或 SNAT/DNAT 导致出口路径改变
  • 确认是否误配了策略路由:ip rule showip route show table xxx,某些场景下入向走 eth0、出向强制走 bond1,造成收发接口不一致
text=ZqhQzanResources