必须穿透物理层验证:先用ip -br link查LOWER_UP确认链路建立,再用ethtool看Speed(如1000Mb/s)、Duplex(须Full)、Link detected(须yes);若异常则查错误计数、dmesg日志并用ethtool -r重启协商。

要确认Linux服务器有线网卡是否真正连通、速率是否达到预期(比如千兆口只跑100Mbps),不能只看IP地址是否配置成功,必须穿透到物理层验证网线插没插牢、交换机端口有没有响应、两端协商结果是否一致。
先确认网卡名和基础物理状态
运行 ip -br link | grep LOWER_UP,找到带 LOWER_UP 标志的接口(如 enp3s0f0、ens1f0),这表示系统已检测到物理链路建立;若只有 UP 没有 LOWER_UP,说明网线未接通或对端设备未响应。
直接查看网口指示灯:常亮+闪烁才代表链路通且有数据收发;全不亮就换线、换交换机端口、查BIOS里网卡是否被禁用。
用ethtool查看真实协商速率与双工模式
执行 sudo ethtool enp3s0f0(把 enp3s0f0 替换为你上一步确认的网卡名),重点盯住三行:
Speed: 如显示 1000Mb/s 是千兆,10000Mb/s 是万兆——这不是理论值,而是网卡PHY芯片和交换机实际协商出来的当前速率。
Duplex: 必须是 Full;若为 Half,几乎必然引发丢包和性能断崖式下跌,原因通常是交换机端口被手动设为半双工或网线质量差。
Link detected: 必须为 yes;若为 no,说明物理链路彻底中断,此时 /sys/class/net/enp3s0f0/speed 会报错或返回 Unknown!。
快速验证速率是否稳定或波动
方法一:动态刷新观察 Speed 行变化
执行 watch -n 1 'ethtool enp3s0f0 | grep Speed',持续按 Ctrl+C 停止。如果数值频繁跳变(如 1000Mb/s ↔ 100Mb/s),说明自协商过程反复失败,需查网线、光模块或交换机日志。
方法二:读取 sysfs 数值接口(适合脚本调用)
运行 cat /sys/class/net/enp3s0f0/speed,输出纯数字单位 Mbps(如 1000)。注意:该文件仅在 Link detected: yes 时有效,否则返回错误或 N/A。
排查协商异常的进阶操作
第一步:检查错误计数,定位硬件级问题
运行 ethtool -S enp3s0f0 | grep -i "rx_errors\|negotiation_failures\|link_failures"。若 rx_errors 持续增长或 negotiation_failures 非零,大概率是网线衰减、RJ45水晶头氧化或光模块收发异常。
第二步:翻内核日志找线索
执行 dmesg | grep -i "enp3s0f0\|link\|phy" | tail -20,重点关注 autoneg failed、link down、PHY reset 这类提示,它们比 ethtool 输出更早暴露底层故障。
第三步:强制重启协商过程(仅限 Auto-negotiation: on 时有效)
运行 sudo ethtool -r enp3s0f0,立即触发一次完整协商流程,无需重启网卡或系统。











