ethtool查不到网卡需先确认设备名和驱动加载,用ip -br link或ls /sys/class/net/查接口名,lspci或lshw查硬件识别,ethtool -i和lsmod查驱动绑定状态。

ethtool 查不到网卡?先确认设备名和驱动加载
很多情况下 ethtool 报 “No such device” 或直接没输出,不是命令用错了,而是网卡根本没被内核识别或驱动没加载。比如 USB 网卡插上但没加载 ax88179_178a 驱动,或者虚拟机里网卡类型是 e1000e 但内核模块被禁用。
- 用
ip -br link或ls /sys/class/net/看当前有哪些接口名(如enp0s3、eth0、ens33),确保传给ethtool的名字真实存在 - 运行
lspci | grep -i ethernet(物理机)或lshw -class network查硬件是否被识别 - 检查驱动:用
ethtool -i enp0s3,如果报错或显示driver: unknown,说明驱动未绑定;再看lsmod | grep -E "(e1000|igb|ixgbe|virtio_net)"
ethtool 显示 Link detected: no 是什么意思
这行输出不是故障代码,只是物理层连通性状态。它只反映网线是否插好、对端是否上电、PHY 是否完成自协商 —— 和 IP 配置、路由、防火墙完全无关。
- 常见真问题:网线松动、交换机端口 shutdown、光纤收发器单向中断、网卡被
ifconfig enp0s3 down关闭(此时ethtool仍能运行但链路态为 no) - 注意区分:如果
ip link show enp0s3里 state 是DOWN,那是软件关闭;如果 state 是UP但ethtool显示Link detected: no,才是物理链路问题 - 某些网卡(如部分 Realtek)在休眠或节能模式下也会假性报 no,可尝试
ethtool -s enp0s3 wol d关闭 Wake-on-LAN 再试
怎么看网卡真实协商速率和双工模式
ethtool enp0s3 输出里的 Speed: 和 Duplex: 是当前生效值,但要注意它可能不是你期望的值 —— 比如你设了 1000baseT-FD,但对端只支持 100baseTX,最终就会降级协商。
- 关键字段是
Speed:、Duplex:、Port:(通常为TP表示双绞线)、Auto-negotiation:(必须为on才会按标准协商) - 如果想强制指定速率,用
ethtool -s enp0s3 speed 1000 duplex full autoneg off,但风险很大:两端不匹配会导致间歇性丢包,且重启后失效(需写入 udev 或 systemd service 持久化) - 虚拟机中常见陷阱:VMware/VirtualBox 虚拟网卡默认启用 auto-neg,但宿主机网卡若被设为强制模式(如
speed 1000),虚拟机会协商失败,表现为频繁断链
ethtool -S 输出太多字段,哪些值得盯
ethtool -S enp0s3 打印的是底层寄存器统计,不是所有字段都有意义。重点关注与丢包、错误强相关的几项,尤其在线上排障时。
- 必看三项:
rx_packets/tx_packets(确认有无流量)、rx_errors/tx_errors(非零要查原因)、rx_dropped(内核丢包,常因 net.core.rmem_max 不足或软中断瓶颈) - 物理层错误:
rx_crc_errors(干扰或线缆问题)、rx_frame_errors(帧格式异常)、tx_aborted_errors(驱动或 PHY 故障) - 注意:不同驱动导出字段名差异大,
igb驱动用rx_fifo_errors,而virtio_net用rx_missed_errors,不能死记字段名,得结合驱动文档看含义
ethtool 时最麻烦的从来不是命令怎么敲,而是它暴露的是硬件+驱动+固件三层耦合状态,同一句 ethtool enp0s3 在不同机器上可能反映完全不同层面的问题。










