首页/系统/Linux 运维命令速查/ethtool 网卡硬件诊断
网络命令82 条

ethtool 网卡硬件诊断

查看/设置网卡速率、双工、驱动与统计:-S 统计含 errors/drops(判断物理链路质量),-i 驱动版本,乱序/丢包排查必看。

Linux 运维命令速查系统更新于 2026-10-13

ethtool 是什么

ethtool 用来读取和设置网卡的物理层参数:链路速率、双工模式、自动协商状态、驱动与固件版本,以及各类硬件统计计数。排查丢包、乱序、时通时断这类问题时,它比 ip 命令更能说明物理链路质量:-S 输出里的 rx_errors、rx_dropped、rx_missed 等计数若持续增长,通常指向线缆、光模块、交换机端口或队列配置,而不是应用代码。

基本信息

适用平台GNU/Linux(多数发行版默认安装)
语法ethtool [选项] 接口名
常用选项-i 驱动信息 -S 统计计数 -s 设置速率与双工 -k 特性开关 -a 自协商与暂停帧
只读操作-i、-S 普通用户通常可执行,改设置需要 root
虚拟网卡virtio 类多不支持速率与 serdes 设置
接口名使用主机侧名字,如 eth0、ens192

典型使用场景

  • 确认链路协商结果:是否按预期跑在千兆或万兆全双工,有没有意外降速。
  • 排查间歇性丢包:观察错误与丢弃计数是否持续增长。
  • 记录驱动与固件版本,作为性能问题上报与版本核对的凭据。
  • 更换线缆或光模块前后对比统计计数,验证问题是否解决。
  • 临时开关网卡卸载特性,做兼容性对照测试。

常用写法

常用写法
ethtool eth0                                    # 速率、双工与链路状态
ethtool -i eth0                                 # 驱动与固件版本
ethtool -S eth0 | grep -iE 'err|drop|miss|discard'   # 只关注异常计数
ethtool -k eth0 | grep -iE 'offload|checksum'   # 查看卸载特性当前状态
ethtool -a eth0                                 # 自协商与暂停帧状态
ethtool -S eth0 > s1; sleep 10; ethtool -S eth0 > s2; diff s1 s2   # 两次采样做差
ethtool -s eth0 speed 1000 duplex full autoneg on    # 锁定千兆全双工(会短暂断链)

选项与输出读法

选项或字段含义判断要点
-i驱动与固件信息driver 与 version 用于版本核对与上报
-S硬件统计计数rx_errors、rx_dropped、rx_missed 是关键指标
-s设置速率与双工对端不匹配会直接断链,慎用
-k特性开关校验和、TSO、GSO 等卸载能力状态
-a自协商与暂停帧确认流控协商结果是否一致
Speed 与 Duplex协商结果与交换机端口配置不一致是常见丢包根因
-S 的计数名称随驱动而异:除通用的 rx_errors、tx_errors 外还有队列级计数,不同网卡甚至同厂商不同型号都不一样。先全量输出看一遍,再决定筛选哪些字段。
虚拟网卡的 virtio 驱动多数不支持速率、serdes 这类物理层设置,-s 会直接报不支持;云主机上应该关注统计计数与队列状态,而不是协商参数。
统计计数是累计值,单次读取几乎没有意义。要在固定间隔读取两次做差(或间隔采样对比),才能判断问题是否仍在发生、是否与某次网络变更相关。

易错点

  • 用 -s 强制锁定速率而交换机端口没做同样配置,链路会直接中断,远程操作时可能失去所有连接;这类操作必须先准备带外或本地回退手段。
  • 只看一次统计就下结论:错误计数是累计值,老机器上数值偏大属于常态,关键在于短时间内是否持续增长。
  • 把云上主机之间的丢包全部归因于网卡硬件,忽略虚拟化开销与 CPU 队列瓶颈;应先确认两侧资源占用情况再判定。
  • 把 ethtool 与 ip 命令的职责混淆:物理层协商与统计用 ethtool,地址、路由与 MTU 用 ip,混用会导致排查方向错误。

数据来源与参考

  • man 8 ethtool(ethtool 官方手册)

相关工具

​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌