本文目录导读:

mii-tool 是一个用于查看和配置网络接口卡(NIC)物理层状态的 Linux 命令行工具,它主要用于检测网卡的链路状态、协商速度和双工模式。
使用 mii-tool 查看网卡状态非常简单,以下是具体方法和关键输出解读。
基本用法
在终端中执行以下命令:
mii-tool [网络接口名]
查看特定网卡(eth0):
mii-tool eth0
查看所有网卡状态(不指定接口名):
mii-tool
命令输出解读
执行命令后,你会看到类似如下的输出:
状态正常:
eth0: negotiated 100baseTx-FD flow-control, link ok
状态异常(断开):
eth0: no link
输出字段含义:
eth0:网络接口名称。negotiated:表示该网卡已经通过与交换机(或对端设备)协商,自动确定了连接参数。100baseTx:协商后的速率,通常为10baseT、100baseTx(100M)或1000baseT(1000M/千兆),如果没有协商成功,可能会显示100baseTx-HD或10baseT-HD表示只能以低性能运行。-FD(Full Duplex): 全双工,网卡可以同时发送和接收数据。推荐状态。-HD(Half Duplex): 半双工,网卡在同一时间只能发送或接收数据,性能较差,容易导致冲突和降速。
flow-control:表示启用了流量控制(可选,通常显示或隐藏)。link ok:物理链路已连接,网线插好了。no link:物理链路断开,网线没插好、对端设备未通电或网线损坏。
常用参数及高级用法
除了基本查看,mii-tool 还可以用来查看或强制设置网卡工作模式(注意:此操作可能导致网络中断,请谨慎使用)。
显示更详细的物理层信息(-v)
mii-tool -v eth0
输出会包含更底层的信息,如PHY(物理收发器)地址、寄存器状态等。
eth0: negotiated 100baseTx-FD, link ok
product info: vendor 00:00:00, model 0 rev 0
basic mode: autonegotiation enabled
basic status: autonegotiation complete, link ok
capabilities: 1000baseT-FD 100baseTx-FD 100baseTx-HD 10baseT-FD 10baseT-HD
advertising: 1000baseT-FD 100baseTx-FD 100baseTx-HD 10baseT-FD 10baseT-HD
link partner: 100baseTx-FD 100baseTx-HD 10baseT-FD 10baseT-HD
可以看到它支持 1000baseT-FD(千兆),但由于对端设备支持原因,最终协商为 100baseTx-FD。
强制设置网卡模式(设置 -F)
警告: 强制设置网卡模式通常不推荐,除非排障需要(例如排查协商错误),错误的设置可能导致网络不通或性能大幅下降。
# 强制设置为 100M 全双工 sudo mii-tool -F 100baseTx-FD eth0 # 恢复为自动协商(推荐) sudo mii-tool -r eth0
查看是否启用自动协商
mii-tool eth0
如果输出中有 autonegotiation enabled 或 negotiated,则表明启用了自动协商,如果被强制设置,则不会显示协商过程。
与 ethtool 的对比
重要提示: mii-tool 是一个较老的工具,主要适用于较旧的网卡(特别是10/100Mbps),对于现代千兆或更高速网卡,ethtool 是更推荐、更强大的工具。
| 特性 | mii-tool | ethtool |
|---|---|---|
| 适用网卡 | 较老的 10/100M 网卡 | 所有现代网卡(千兆/万兆等) |
| 链接状态 | 支持 | 支持 |
| 自动协商 | 支持 | 支持 |
| 速度/双工 | 支持 | 支持 |
| 详细信息 | 较少 | 非常详细(寄存器、驱动、缓冲等) |
| 支持光口 | 通常不支持 | 支持(SFP+/QSFP等) |
| 当前状态 | 逐渐被淘汰 | 标准工具 |
建议:在大多数现代Linux发行版中,优先使用 ethtool。mii-tool 报错或无法识别网卡,可以直接使用 ethtool:
# 查看 eth0 状态 ethtool eth0
常见问题及排查思路
-
输出为
no link:- 首先检查网线是否插紧。
- 检查对端设备(交换机、路由器)的端口是否工作正常、指示灯是否亮起。
- 确认网线类型(直通线还是交叉线)是否正确(现代网卡大多支持自动翻转,通常直通线即可)。
- 尝试更换网线或交换机端口。
-
输出显示半双工但实际希望全双工:
- 最常见原因:网卡与交换机之间的自动协商失败或一侧强制设置了模式(例如你强制设定了100M全双工,但交换机设为自动协商,导致协商不完整,最终降级为半双工)。
- 解决办法:尽量不要强制设置任何参数,让两侧都启用自动协商,如果必须手动设置,确保网卡和对端设备两侧设置完全一致(例如都是 100M 全双工)。
-
网络速度很慢(例如百兆环境却只有10M):
- 使用
mii-tool -v或ethtool eth0查看协商结果。 - 检查网线质量,特别是距离过长或线序损坏的超五类/六类线可能导致降速。
- 确保对端交换机端口支持并设置了所需速率。
- 使用
总结命令
| 命令 | 作用 |
|---|---|
mii-tool |
查看所有网卡状态 |
mii-tool eth0 |
查看特定网卡状态 |
mii-tool -v eth0 |
查看详细状态 |
sudo mii-tool -r eth0 |
恢复自动协商 |
sudo mii-tool -F 100baseTx-FD eth0 |
强制设置(慎用) |
首选建议: 对于现代系统,直接使用 ethtool 通常是更好的选择,如果非要使用 mii-tool,请先确认网卡兼容性。