商城首页欢迎来到中国正版软件门户

您的位置: 首页 > 文章列表 > 系统应用 > Linux怎么查看网络接口的驱动版本 Linux下ethtool常用参数详解

Linux怎么查看网络接口的驱动版本 Linux下ethtool常用参数详解

  发布于2026-05-22 阅读(0)

扫一扫,手机访问

排查网络问题,尤其是涉及硬件和驱动层时,ethtool 命令往往是绕不开的利器。它直接与网卡驱动对话,能提供比常规网络命令更底层的诊断信息。今天,我们就来聊聊几个最常用也最关键的 ethtool 参数,看看它们在实际运维中究竟怎么用。

Linux怎么查看网络接口的驱动版本 Linux下ethtool常用参数详解

怎么用 ethtool -i 查网卡驱动版本

想知道网卡到底跑着哪个版本的驱动?最直接、最可靠的方法就是运行 ethtool -i <接口名>。这个命令直接从内核接口读取实时信息,不依赖任何外部文件或日志,结果最为准确。输出中的 driverversion 两行,就是你要的答案。

这里有个常见的误区:很多人习惯用 modinfo 来看版本。但要注意,像 r8169 这类驱动,modinfo 显示的可能是内核编译时的版本号,而 ethtool -i 返回的才是当前实际加载并运行的驱动版本。哪个更可信,一目了然。

  • 权限要求:必须使用 root 权限执行,否则会提示 Operation not permitted
  • 接口名要准:先用 ip link showls /sys/class/net/ 确认接口名称,别输成带冒号的别名(如 eth0:)。
  • 版本为空怎么办:如果输出中 version 字段为空,说明驱动本身没有显式声明版本。这时可以配合 modinfo <驱动名>,查看 srcversionvermagic 字段来辅助判断。

ethtool 查链路状态和协商能力的关键参数

遇到网卡显示 UP 但就是不通的情况,第一步就该查链路状态。直接运行 ethtool <接口名>(不带任何选项),就能看到当前速率、双工模式、自动协商开关以及物理连接状态。

重点关注三行信息:Speed(实际协商出的速率)、Auto-negotiation(自动协商是否开启)、Link detected(物理层是否检测到信号)。这三者如果出现矛盾,问题往往就出在这里。比如,交换机端口关闭了自动协商,而本机却开着,结果就是卡在 Link detected: no

  • Advertised link modes:这是本机主动向对端通告的能力列表,并非当前生效值。
  • Supported link modes:这是网卡硬件(PHY芯片)真实支持的速率和双工组合,通常由硬件决定,驱动一般不会干预。
  • 强制设置需谨慎:在远程执行类似 ethtool -s <接口> autoneg off speed 1000 duplex full 的命令前,务必确认对端交换机端口也设置了相同的强制模式(1G全双工),否则大概率会导致链路中断。

为什么 ethtool -S 统计值比 /proc/net/dev 更细

当需要深入分析丢包原因时,ethtool -S <接口名> 是你的最佳选择。它输出的是驱动层和网卡硬件寄存器里的原始计数器,包含了各种丢包细节,比如 rx_missed_errors(接收遗漏)、tx_aborted_errors(发送中止)等。相比之下,/proc/net/dev 只统计进入和离开内核协议栈的字节数、包数,中间环节的“黑盒”问题它看不见。

典型场景:ifconfig 显示接收错误(RX errors)很高,但上层业务似乎正常。这时就可以用 ethtool -S 来定位:如果是 rx_fifo_errors 在涨,可能是接收环缓冲区(ring buffer)溢出,需要调大;如果是 rx_crc_errors 增加,那就要检查线缆或对端设备的物理层了。

  • 字段名不统一:不同驱动导出的统计字段名差异很大。igbe1000e 驱动可能有 rx_long_length_errors,而 r8169 驱动可能根本不提供这个统计项。
  • 计数器类型:部分统计项对应只读的硬件寄存器,重启网卡或系统后会清零;另一些(如 tx_timeout_count)是驱动维护的软件计数器,不会自动归零。
  • 性能考量:高频轮询 ethtool -S 会触发大量 ioctl 系统调用,可能影响性能。在生产环境做监控,建议考虑使用 perf 或 eBPF 等开销更低的工具。

ethtool -gethtool -G 调环形缓冲区的实际效果

调整接收(RX)和发送(TX)环形缓冲区的大小,主要用来解决两类问题:高吞吐场景下的丢包(缓冲区满导致 rx_missed_errors 上升),以及对延迟敏感的小包场景(减小缓冲区可以降低中断延迟)。但效果如何,高度依赖驱动和硬件的支持程度。

操作前,先用 ethtool -g <接口名> 查看当前值和硬件允许的最大值。这里有个坑:很多消费级网卡(例如部分 Realtek 芯片)最大只支持 512,你强行设为 4096 它会静默失败。而像 Intel 的 i40e 驱动,默认可能是 512,但最大可以支持到 8192。

  • 内存占用:增大环形缓冲区会占用更多 DMA 内存。需要确保系统参数 vm.min_free_kbytes 设置合理,否则在内存紧张时,内核可能触发 OOM Killer。
  • 生效时机:修改后通常无需重启网卡即可生效,但旧缓冲区中尚未处理完的描述符(descriptor)会继续使用旧设置,新分配的才会使用新缓冲区。
  • 以读为准:通过 ethtool -G 设置的值,驱动不一定全盘接受。最终生效的配置,要以再次执行 ethtool -g 返回的 Current hardware settings 为准。

最后提个醒,驱动版本和硬件能力是深度绑定的。同一版本的驱动,在不同型号的芯片上,通过 ethtool 暴露的功能可能天差地别。比如,在老型号的 PHY 芯片上使用 --show-eee(查询节能以太网状态)参数,很可能直接返回 Operation not supported,而不是简单地显示为关闭状态。了解你的硬件,永远是精准排障的第一步。

本文转载于:https://www.php.cn/faq/2402603.html 如有侵犯,请联系zhengruancom@outlook.com删除。
免责声明:正软商城发布此文仅为传递信息,不代表正软商城认同其观点或证实其描述。

热门关注