Linux下判断网卡是电口还是光口需用ethtool查Port字段(TP为电口、FIBRE为光口)、Supported link modes(含1000baseX为光口)、mii-tool报“Operation not supported”提示光口,或检查/sys/class/net/iface/device/sfp/目录是否存在。Linux 下不能直接靠
ifconfig 或 ip a 判断网卡是电口还是光口——这些命令只显示逻辑状态和 IP 配置,不暴露物理介质类型。得靠底层工具探测 PHY 层能力或硬件特征。ethtool 查看端口类型和协商状态ethtool 是最可靠的方式,它能读取网卡驱动上报的 PHY 信息,包括支持的速率、双工、以及关键字段 Port 和 Supports。执行:ethtool eth0(把 eth0 换成你的接口名)
重点关注这两行:
Port: 如果显示 TP(Twisted Pair),基本是电口;显示 FIBRE 或 AUI,大概率是光口Supported link modes: 出现 1000baseX/Full、10000baseSR/Full 等带 X 或 SR/LR 的项,说明支持光纤;而 1000baseT/Full 是典型千兆电口标准注意:Port: 字段不是所有驱动都填,部分 Realtek 或老旧芯片可能为空或显示 Unknown —— 这时得结合其他方法。
mii-tool 区分电口(但对光口无效)mii-tool 只适用于 MII/GMII 接口的电口网卡,依赖 PHY 寄存器通信。运行:mii-tool eth4
典型电口输出:
mii-tool eth4eth4: negotiated 1000baseT-FD, link ok
如果报错:
SIOCGMIIPHY on 'eth4' failed: No such device → 接口名不存在或已卸载驱动SIOCGMIIPHY on 'eth6' failed: Operation not supported → 很可能是光口(或使用了非 MII 的 PHY,如 SFP+ 模块)这个错误本身就是一个线索:电口网卡几乎不会报 Operation not supported,而多数光口(尤其带 SFP 插槽的)会。
/sys/class/net/ 下的硬件标识/sys/class/net/<var>iface</var>/device/。快速判断步骤:
ls /sys/class/net/eth0/device(若报 “No such file” 说明是 USB 或虚拟网卡,跳过)cat /sys/class/net/eth0/device/vendor 和 cat /sys/class/net/eth0/device/device,再查 PCI ID 数据库(如 pcidatabase.com)看是否标注 “Fiber”、“SFP”、“Optical”ls /sys/class/net/eth0/device/sfp/ —— 存在即铁证是光口(现代万兆/25G+ 网卡常用)例如:ls /sys/class/net/ens1f0/device/sfp/ 返回 eeprom id vendor 等文件,就说明该口支持热插拔光模块。
ethtool -p 辅助定位eth1。此时别猜,用 ethtool -p 让网卡灯快闪:执行:ethtool -p eth1(持续 2 秒,默认)
观察机箱后侧对应网口的 LED 是否同步闪烁。确认物理位置后,再结合前面方法查介质类型。
真正容易被忽略的点是:同一块多口网卡,不同端口可能是混合类型(比如 2 电口 + 2 光口),ethtool 必须逐个接口执行,不能只查一个就推断全部。