在CentOS 7.4这样的企业级Linux服务器环境中,网络是系统的生命线,而ethtool正是管理和诊断这条生命线的核心工具之一,它是一个强大的命令行实用程序,用于查询和配置以太网网卡(NIC)的驱动程序和硬件设置,对于系统管理员和网络工程师而言,熟练掌握ethtool是进行网络故障排查、性能调优和确保网络稳定性的必备技能,本文将深入探讨ethtool在CentOS 7.4系统中的安装、基本用法、高级配置以及如何实现配置的持久化。

安装与基本查询
在大多数CentOS 7.4的安装中,ethtool可能并未默认安装,安装过程非常简单,可以通过yum包管理器一键完成:
sudo yum install ethtool -y
安装完成后,最基础也是最常用的操作是查询指定网络接口的状态信息,假设我们的主网卡名为eth0,可以使用以下命令:
ethtool eth0
该命令会输出一张详细的表格,包含了网卡的当前工作状态,下表解释了其中一些关键字段的含义:
| 字段 | 含义解释 |
|---|---|
| Speed | 当前连接速度,如1000Mb/s。 |
| Duplex | 当前双工模式,Full表示全双工,Half表示半双工。 |
| Link detected | 物理链路状态,yes表示网线已连接且链路正常,no则相反。 |
| Auto-negotiation | 自动协商状态,on表示已启用,网卡会自动与对端(如交换机)协商最佳速度和双工模式。 |
| Supports Wake-on | 网卡支持的唤醒模式(如pumbg)。 |
| Wake-on | 当前启用的唤醒模式。 |
通过这个基础查询,我们可以快速判断物理连接是否存在、速度是否达标、双工模式是否匹配等最常见的问题。
高级配置与故障排查
ethtool的强大之处在于其深度的配置和诊断能力。
配置网卡参数
虽然不推荐在生产环境中随意更改,但在特定场景下(如测试环境或对接特定旧设备),我们可能需要手动指定网卡的速率和双工模式,强制eth0工作在1000Mbps全双工模式:
sudo ethtool -s eth0 speed 1000 duplex full autoneg off
注意:此命令的修改是临时的,重启后会失效,且必须确保对端设备(交换机端口)也做了相应配置,否则可能导致网络不通。

查看驱动信息
当怀疑网络问题与驱动有关时,-i选项非常有用:
ethtool -i eth0
该命令会显示网卡的驱动程序名称、版本、固件版本等关键信息,有助于定位驱动层面的bug或兼容性问题。
检查网卡统计信息-S选项可以提供网卡的详细统计数据,这是深入分析网络性能和丢包问题的利器:
ethtool -S eth0
输出会包含大量的计数器,重点关注以下几项:
rx_errors/tx_errors:接收/发送错误包数量。rx_dropped/tx_dropped:因缓冲区不足等原因被丢弃的包数量。rx_crc_errors:CRC校验错误的包数量,通常预示着物理链路质量问题。
网卡特性开关
现代网卡支持许多硬件卸载特性,如校验和卸载、TCP分段卸载(TSO)、通用接收卸载(GRO)等,这些特性可以减轻CPU负担,提升网络性能,使用-k选项查看,-K选项修改。
# 查看当前特性开关状态 ethtool -k eth0 # 关闭GRO特性(有时用于排查特定网络问题) sudo ethtool -K eth0 gro off
配置的持久化
如前所述,直接使用ethtool -s或ethtool -K命令所做的修改在系统重启后会丢失,在CentOS 7.4中,要使配置永久生效,需要将参数写入网卡的配置文件中。
编辑/etc/sysconfig/network-scripts/ifcfg-eth0文件,在其中添加ETHTOOL_OPTS变量,要永久设置速率为1000Mbps全双工并关闭自动协商,可以添加如下行:

ETHTOOL_OPTS="speed 1000 duplex full autoneg off" 如果要永久关闭GRO,则可以这样写:
ETHTOOL_OPTS="-K eth0 gro off" 保存文件后,重启网络服务(systemctl restart network)或重启服务器,配置即可生效。
相关问答FAQs
问题1:我使用 ethtool eth0 后,发现 Link detected: no,但我确认网线是插好的,可能是什么原因?
解答: 这是一个常见的物理层问题,可能的原因包括:
- 物理链路问题:网线本身损坏、水晶头接触不良,或者网线两端(服务器和交换机)没有插紧。
- 对端设备问题:连接的交换机端口被管理员关闭了、端口损坏,或者端口配置的VLAN与服务器不匹配。
- 服务器端问题:网卡的驱动程序出现故障,或者网卡本身硬件损坏,在某些服务器上,网卡也可能在BIOS或固件层面被禁用。
- 速率/双工模式不匹配:如果服务器和交换机端口都强制设置了不兼容的速率或双工模式(例如一端全双工,另一端半双工),也可能导致链路无法建立。
问题2:如何让 ethtool 的配置(比如关闭 GRO)在服务器重启后依然生效?
解答: 直接使用 ethtool -K 命令修改的配置是临时的,在 CentOS 7.4 系统中,实现配置持久化的标准方法是编辑网卡的配置文件,你需要找到对应网卡的配置文件,通常位于 /etc/sysconfig/network-scripts/ifcfg-<interface_name>,ifcfg-eth0,在该文件内,添加或修改 ETHTOOL_OPTS 这一行,要永久关闭 eth0 的 GRO 特性,应添加:ETHTOOL_OPTS="-K eth0 gro off"
保存文件后,通过 systemctl restart network 重启网络服务,或者直接重启服务器,该设置就会在系统启动时自动应用。
【版权声明】:本站所有内容均来自网络,若无意侵犯到您的权利,请及时与我们联系将尽快删除相关内容!
发表回复