Linux网卡故障排查_ethtool使用方法

2次阅读

ethtool是linux下排查网卡底层故障的核心工具,可查看链路状态、协商能力、驱动统计并临时修改参数。执行ethtool eth0获取速率、双工、自动协商及物理连通性;link detected: no需检查物理连接;speed为0或unknown表明协商失败;-s参数可定位crc错误、丢包等隐性问题。

Linux网卡故障排查_ethtool使用方法

遇到网卡无法连接、速度异常或频繁断连时,ethtool 是 Linux 下最直接、最有效的底层排查工具。它能读取和修改网卡驱动、物理层、链路状态等关键信息,比 ifconfig 或 ip 命令更深入。

查看网卡基础状态和能力

运行 ethtool eth0(将 eth0 替换为你的实际网卡名,如 enp0s3、ens33)可获取完整摘要:

  • Settings for eth0:显示当前协商的速率(Speed)、双工模式(Duplex)、是否启用自动协商(auto-negotiation)
  • Supported link modes:网卡硬件支持的速率/双工组合(如 1000baseT/Full)
  • Advertised link modes:当前向对端通告的能力(受 auto-negotiation 和 ethtool -s 设置影响)
  • Link detected: yes/no:物理链路是否连通(注意:这不等于网络层可达)

检查物理连接与链路协商问题

很多“网卡 down”其实是物理层失败:

  • Link detected: no,先确认网线是否插紧、交换机端口是否 up、光纤是否弯折或脏污
  • Link detected: yes 但 Speed 显示 Unknown 或为 0,大概率是两端 auto-negotiation 不兼容(常见于旧交换机或强制设速后未同步)
  • 对比本端 Advertised 和对端设备支持的模式,确保有交集;必要时在交换机侧也检查协商结果

临时修改网卡参数(慎用)

使用 ethtool -s 可手动设置速率和双工,用于排除 auto-negotiation 故障:

  • 关闭自动协商并强制千兆全双工ethtool -s eth0 speed 1000 duplex full autoneg off
  • 恢复自动协商ethtool -s eth0 autoneg on(执行后通常需等 3–5 秒重新协商)
  • ⚠️ 注意:强制模式必须与对端设备配置严格匹配,否则链路无法建立;修改不持久,重启或网卡重载后失效

查看驱动与收发统计,定位隐性故障

添加 -S 参数可输出详细计数器,帮助发现 CRC 错误、丢包、缓冲区溢出等软故障:

  • ethtool -S eth0 | grep -i “Error|drop|over” 关注 rx_crc_errors、tx_aborted_errors、rx_missed_errors 等字段
  • 持续增长的 rx_crc_errors 暗示线路干扰、网线质量差或接口接触不良
  • 大量 rx_missed_errors 可能因 CPU 过载、中断分配不均或驱动处理不过来,需结合 top、irqbalance 检查
text=ZqhQzanResources