rx errors持续上涨基本可断定是物理层或驱动层问题,非配置错误;用ip -s link show eth0可快速查看聚合错包数,但需结合ethtool -s定位具体错误类型如rx_crc_errors或rx_missed_errors。

RX errors 持续上涨,基本可以断定是物理层或驱动层问题,不是配置错误。
用 ip -s link show 快速看错包总数
这是最轻量、无需额外安装的方案,适合所有现代 Linux 发行版。输出里 RX errors 和 TX errors 是聚合值,但注意它不区分错误类型:
-
ip -s link show eth0中的RX errors包含 CRC、frame、length、symbol 等多种底层错误,只要网卡硬件或链路出问题,它就涨 -
dropped字段通常表示内核协议栈主动丢弃(如内存不足、netdev backlog 溢出),和errors不是一回事 - 如果
RX errors非零且随时间增长,ifconfig eth0也会显示相同数字,但ifconfig已被标记为废弃,部分新系统默认不带
用 ethtool -S 查具体错误类型
ethtool -S eth0 输出的是网卡驱动级寄存器快照,能定位到 CRC、alignment、jabber、rx_missed_errors 等真实原因:
Linux系统管理专家,覆盖12大模块:用户权限、SSH、存储、网络、systemd、防火墙、日志监控、备份恢复、TLS证书、Ansible、容器、IaC。提供配置、验证、加固、监控、备份、自动化、故障排查、回滚闭环。关键词:useradd、sudo、sshd_config、chmod、SEL...
- 必须先装
ethtool:Debian/Ubuntu 用sudo apt install ethtool,RHEL/CentOS 用sudo yum install ethtool或dnf install ethtool -
ethtool -S eth0 | grep -i "error\|drop\|miss"可快速过滤关键字段,比如rx_crc_errors高,大概率是网线接触不良或交换机端口故障 - 某些网卡(如 Mellanox、Intel X710)会暴露
rx_out_of_buffer或rx_no_buffer,说明 ring buffer 太小或中断处理不及时,不是线缆问题
别只盯 /proc/net/dev 的 errs 列
cat /proc/net/dev 第三列叫 errs,但它实际是 RX errors 的镜像,且只统计接收方向;更重要的是——它不更新实时值:
- 该文件是内核在初始化时注册的 proc 接口,部分驱动(尤其是虚拟网卡或较老芯片)不会动态刷新这一列,可能长期为 0 即使实际有错包
- 它的
drop列对应的是rx_dropped,含义和ip -s里的dropped一致,但无法告诉你为什么 drop(比如是netdev backlog full还是skb allocation failure) - 如果你看到
/proc/net/dev中errs为 0,但ip -s link show显示非零,优先信后者——前者可能只是没上报
为什么 netstat -i 不推荐用于错包诊断
netstat -i 显示的 errs 列其实和 /proc/net/dev 同源,且它把 RX/TX errors 合并在一列里,无法区分方向:
- 输出中
eth0行的errs是 RX + TX 错误总和,掩盖了单向故障(例如只有接收出错,发送完全正常) - 它不显示
dropped、overruns、frame等细分项,诊断价值远低于ip -s或ethtool -S - 新版系统中
netstat已被ss取代,而ss根本不提供接口统计功能
真正难判断的不是“有没有错包”,而是“错在哪一层”:物理线缆、交换机端口、网卡固件、驱动版本、ring buffer 设置、甚至 BIOS 中的 PCIe ASPM 节能选项都可能贡献 RX errors。拿到 ethtool -S 输出后,一定要对照你网卡型号的 datasheet 看寄存器定义,否则光看名字容易误判。










