查看当前网口速率与状态
要了解网口的实时工作状态,我们可以使用多种命令行工具。ethtool 是最常用且功能最强大的一个。

使用 ethtool 命令
ethtool 可以查询并控制网络驱动程序和硬件设置,如果系统中尚未安装,可以通过 yum 或 dnf 进行安装:
sudo yum install ethtool # 或者在 CentOS 8/RHEL 8 及更高版本上 sudo dnf install ethtool
安装完成后,使用以下命令查看指定网口(eth0)的详细信息:
ethtool eth0
输出结果中,重点关注以下几个字段:
Speed::显示当前连接速率,如1000Mb/s。Duplex::显示双工模式,Full表示全双工,Half表示半双工。Link detected::显示物理链路是否连通,yes表示已连接。
其他查看方法
除了 ethtool,还有其他方式可以获取速率信息:
mii-tool:一个较老的工具,用法简单,但可能不支持所有新型网卡。sudo mii-tool eth0
/sys虚拟文件系统:这是最直接的方式,无需额外工具。cat /sys/class/net/eth0/speed
该命令会直接返回一个数字,如
1000,代表速率,如果返回-1,通常表示链路未连通。
修改网口速率与双工模式
在某些特定场景下,例如与老旧设备兼容或进行网络测试,我们可能需要手动指定网口的速率和双工模式。
临时修改
使用 ethtool 的 -s 参数可以临时设置网口参数,但服务器重启后会失效。

# 将 eth0 网口设置为 100Mbps 全双工模式,并关闭自动协商 sudo ethtool -s eth0 speed 100 duplex full autoneg off
永久修改
为了让设置在重启后依然生效,需要将配置写入网络配置文件中。
- 
对于 CentOS 7 及更早版本: 编辑网口配置文件,如
/etc/sysconfig/network-scripts/ifcfg-eth0,添加ETHTOOL_OPTS变量。BOOTPROTO=static ... ETHTOOL_OPTS="speed 100 duplex full autoneg off"
保存文件后,重启网络服务使配置生效:
sudo systemctl restart network
 - 
对于 CentOS 8 / RHEL 8 及更高版本: 系统默认使用
NetworkManager,推荐使用nmcli命令进行修改。# 查看连接名称 nmcli connection show # 修改连接(假设连接名为 'Wired connection 1')的速率和双工模式 sudo nmcli connection modify 'Wired connection 1' 802-3-ethernet.speed 100 802-3-ethernet.duplex full # 重新激活连接使配置生效 sudo nmcli connection up 'Wired connection 1'
 
常见问题与排查思路
当网口速率未达到预期时,可以按照以下思路进行排查。
| 现象 | 可能原因 | 排查方法 | 
|---|---|---|
| 千兆网卡协商到100Mbps | 网线质量不佳(非超五类或六类线) 交换机端口限制 网卡驱动问题  | 
更换高质量网线 检查交换机端口配置 更新或重装网卡驱动  | 
| 链路时断时续,速率不稳定 | 网线接触不良 自动协商不匹配  | 
重新插拔网线或更换端口 将服务器和交换机端口都设置为指定速率和全双工  | 
ethtool 显示 Link detected: no | 
网线未连接或损坏 对端设备未开机 网卡硬件故障  | 
检查物理连接 确认对端设备状态 更换网卡插槽或使用 lspci 查看硬件状态 | 
在排查时,应遵循“先物理后逻辑,先简单后复杂”的原则,首先确保网线、端口等物理层组件正常,再检查驱动和系统配置。
相关问答FAQs
问题1:为什么我的千兆网卡在CentOS中只能跑到100Mbps?

解答: 这是一个非常常见的问题,通常由以下几个原因导致:
- 物理线路问题:最常见的原因是使用了质量较差或标准不够的网线(如五类线),千兆网络至少需要超五类(Cat 5e)或六类(Cat 6)网线。
 - 对端设备限制:连接的交换机、路由器端口可能被强制设置为100Mbps,或者其本身不支持千兆。
 - 自动协商失败:服务器网卡与交换机端口的自动协商参数不匹配,导致协商降级,可以尝试将两端都设置为强制1000Mbps全双工模式进行测试。
 - 驱动程序问题:过时或不兼容的网卡驱动也可能导致性能问题,可以尝试更新到最新的官方驱动。
 
问题2:ethtool 和 mii-tool 有什么区别,我应该优先使用哪个?
解答: ethtool 和 mii-tool 都是用于查询和配置网络介质独立接口(MII)状态的工具,但它们有显著区别:
- 功能与时代:
mii-tool是一个较老的工具,功能相对简单,主要用于基本的速率和双工查看,而ethtool是现代Linux发行版中推荐使用的标准工具,它功能更强大,不仅能查看速率,还能提供详细的网卡寄存器信息、驱动版本、支持的功能特性等,并且支持更丰富的配置选项。 - 兼容性:许多现代的网卡驱动可能不再支持 
mii-tool,但几乎都支持ethtool。 
在所有情况下,都应优先使用 ethtool,它更现代、功能更全面,是当前Linux网络管理的首选工具,只有在非常古老的系统或特定受限环境中,才可能需要考虑 mii-tool。