正确命令为ethtool eth1,可直接查看网卡当前速率(speed)、双工模式(duplex)及链路状态(link detected),其中duplex为full表示全双工,speed如1000mb/s表示千兆速率,link detected为yes表明物理连通。

用 ethtool 查看网卡当前双工与速率
直接运行 ethtool eth1(把 eth1 换成你的实际网卡名,如 enp0s3、ens33)就能看到实时物理层状态。关键字段只有三个:Speed(如 1000Mb/s)、Duplex(Full 或 Half)、Link detected(必须为 yes 才说明链路通)。如果 Duplex 显示 Half,基本不是 Linux 主动降级,而是对端设备(比如交换机口)协商结果就是半双工。
ethtool -s 临时修改速率和双工模式
命令格式固定:sudo ethtool -s devname speed 1000 duplex full autoneg off。注意以下几点:
-
speed只能填10、100、1000(单位 Mbps),万兆卡可能支持10000,但得看驱动是否识别 -
duplex只接受full或half,大小写敏感,写Full会报错 - 一旦加了
autoneg off,就彻底关闭自动协商——此时必须确保对端设备也设为相同速率+双工,否则链路不通或大量丢包 - 改完立刻生效,但重启后失效;若执行后
Link detected变成no,大概率是两端配置不匹配,需检查对端
永久生效要改系统网络配置文件
不同发行版写法不同,但核心都是让系统在网卡 up 时自动执行 ethtool -s 命令:
Zynq‑7000 / Zynq UltraScale+ 硬件调试技能。适用于 Xilinx Zynq(Cortex‑A9/A53 + FPGA)Linux 环境,调试 I2C、I2S、UART、GPIO 等外设。包括设备树配置、内核驱动、用户空间调试工具、交叉编译和常见问题排查,支持 PetaLinux 开发。
- Debian/Ubuntu:在
/etc/network/interfaces对应 iface 段里加一行ethtool_opts "-s eth0 speed 1000 duplex full autoneg off" - RHEL/CentOS 7+:在
/etc/sysconfig/network-scripts/ifcfg-eth0中添加ETHTOOL_OPTS="speed 1000 duplex full autoneg off" - 使用 systemd-networkd 的系统:需配合
.link文件或networkctl触发脚本,不推荐硬编码
改完别忘了 reload 网络服务,比如 sudo systemctl restart networking 或 sudo systemctl restart network。
为什么建议优先保持 autoneg on
自动协商不是“可有可无”的功能,而是现代以太网链路稳定的基础:
- 手动设死
speed和duplex后,若对端设备重启或重协商,很可能恢复默认(比如百兆半双工),导致链路中断 - 某些网卡驱动在
autoneg off下无法正确上报Link detected,表现为ethtool输出里一直是no,但实际能 ping 通 - 只有当明确遇到兼容性问题(例如老交换机不支持协商、光纤模块握手失败)时,才考虑关掉它;否则应先查对端配置、线缆质量、SFP 模块型号
真正容易被忽略的是:autoneg on 时,ethtool 输出里的 Advertised link modes 才代表本端“告诉对端自己支持什么”,而 Speed 和 Duplex 是最终协商结果——两者不一致,说明对端没按 advertised 来响应。










