应使用ethtool查看网卡物理连接状态和速率,Speed显示当前协商速率(如1000Mb/s),Link detected: yes表示物理连通,Duplex应为Full,Auto-negotiation须为on;nmcli仅反映NetworkManager逻辑状态,需结合/sys/class/net/*/carrier和ip link的LOWER_UP交叉验证。

Linux 查看网卡物理连接状态和速率,不能只靠一个命令——nmcli 显示的是 NetworkManager 管理逻辑状态,不是物理层真实情况;ethtool 才是查链路是否通、速率为多少的权威工具。
看物理是否连通:认准 carrier 和 Link detected
物理连通性最可靠的两个指标是:
- /sys/class/net/eth0/carrier:值为 1 表示检测到载波(网线插好、光模块亮灯),0 表示断开
- ethtool eth0 中的 Link detected:输出 yes 才代表 PHY 层协商成功,no 就是没链路
这两个结果一致才可信。例如:
cat /sys/class/net/ens33/carrier → 输出 1ethtool ens33 | grep "Link detected" → 输出 Link detected: yes
查当前协商速率与双工模式:用 ethtool 看 Speed 和 Duplex
执行 ethtool ens33 后重点关注:
- Speed:如 1000Mb/s(千兆)、10000Mb/s(万兆);若显示 Unknown!,大概率是网线未插或链路中断
- Duplex:必须为 Full;若为 Half,说明双工不匹配,极易丢包
- Auto-negotiation:应为 on;关掉后手动设速,容易和对端不一致
区分真实物理网卡,避免误查虚拟设备
别把 docker0、vethxxx、br-xxx 当成物理口。只查挂载在总线上的真实网卡:
ls /sys/class/net/ | while read dev; do [ -e /sys/class/net/$dev/device ] && echo "$dev"; done
这条命令输出的才是 PCI/USB 物理网卡(如 enp0s3、ens1f0)。再拿这个名字去跑 ethtool,结果才有效。
辅助验证:ip link 的 LOWER_UP 是重要线索
ip link show ens33 输出中:
- 含 LOWER_UP 标志 → 表示内核已检测到物理链路信号(比单纯 UP 更可靠)
- 出现 NO-CARRIER → 直接说明无物理连接
它和 ethtool、/sys/class/net/*/carrier 三者结论一致,基本可锁定问题所在。


















