核心工具是ethtool,它直接读取网卡PHY芯片与对端实际协商结果:Speed显示当前速率(如1000Mb/s),Duplex应为Full,Link detected必须为yes;手动设置需关闭autoneg并确保两端匹配,否则链路中断。

Linux 中配置网卡工作模式(如全双工/半双工)和协商速率,核心工具是 ethtool。它直接与网卡驱动和 PHY 芯片交互,读取的是实际链路状态,不是理论能力,也不是配置快照——这才是判断“当前真正在跑多快、怎么跑”的可靠依据。
查看当前真实协商状态
先确认网卡名(如 ens1f0、enp3s0f0),再执行:
sudo ethtool ens1f0
重点关注三行输出:
- Speed:当前协商速率,例如 1000Mb/s(千兆)、10000Mb/s(万兆)
- Duplex:应为 Full;若显示 Half,极易引发丢包与性能断崖式下降
- Link detected:必须为 yes,否则物理链路未通
注意:Supported link modes 是网卡支持的能力列表,不代表当前运行状态;Advertised link modes 是本端通告给对端的能力,也不等于实际协商结果。
临时修改速率与双工模式
仅在自动协商失败、对接老旧设备或调试时使用。必须确保交换机/对端设备也同步设为相同参数,否则链路会中断或持续产生错误帧。
例如强制设为千兆全双工:
sudo ethtool -s ens1f0 autoneg off speed 1000 duplex full
Linux 安全审计工具,检查 SSH 配置、开放/监听端口、防火墙规则(ufw/iptables/nftables)、失败登录尝试、sudoers 权限...
立即验证是否生效:
ethtool ens1f0 | grep -E "(Speed|Duplex|Auto-negotiation)"
若出现 Link detected: no,说明对端不匹配,需检查交换机端口是否也关闭了自动协商并设为 1000/full。
持久化配置方法
临时设置重启即失效,需通过系统服务或网络配置文件固化:
- systemd 服务方式(推荐,通用性强):创建 /etc/systemd/system/ethtool-fix.service,内容包含 ExecStart 指令执行 ethtool 命令,启用后每次启动自动运行
- Debian/Ubuntu 系统:在 /etc/network/interfaces 对应网卡段中添加 ethtool_opts "-s ens1f0 autoneg off speed 1000 duplex full"
- RHEL/CentOS 系统:在 /etc/sysconfig/network-scripts/ifcfg-ens1f0 中添加 ETHTOOL_OPTS="speed 1000 duplex full autoneg off"
配置完成后重启网络服务或重新加载 systemd 配置,再用 ethtool 验证是否生效。
辅助排查协商异常
当 Speed 明显低于预期(如万兆卡只协商出 100Mb/s),可进一步定位原因:
- 查错误计数:ethtool -S ens1f0 | grep -i "error\|negotiation_failures",重点关注 rx_errors、negotiation_failures
- 查内核日志:dmesg | grep -i "ens1f0.*link\|phy\|autoneg",留意 autoneg failed、link down 等提示
- 重启协商过程:sudo ethtool -r ens1f0(仅在 Auto-negotiation: on 时有效)
老式百兆网卡可备选 mii-tool,但不支持千兆识别,输出如 100baseTx-FD 表示百兆全双工。










