如何在Linux中设置以太网速度/双工模式
默认情况下,Linux中使用的NIC通过交换快速链接脉冲(FLP)将其速度和双工与交换机协商。
强制设定速度和双工时,不会发送这些FLP。
当NIC处于自动协商模式并检测到没有FLP时,这导致错误。
然后,它将双工设置为半复合,速度到最低允许值。
为避免这种情况,最好在相同的速度和双工值或者自动协商时强制切换端口和服务器NIC。
改变NIC速度和双工
对于Linux平台,没有什么比一个完全兼容的NIC卡更好。
大多数Linux供应商在其上都有一个兼容的硬件列表。
Linux发行版自动将NIC卡的速度和双工与其连接的开关进行协商。
由于协议的实现存在差异,因此不足以将交换机端口配置为自动协商速度和双工模式。
但是,即使将显示使用ifconfig -a命令的许多错误,NIC也将使用失败的协商。
根据系统上安装的以太网卡类型,我们可以使用MII-Tool或者Ethtool来设置速度和双工模式。
1)使用mii-tool
MII-Tool是用于设置NIC卡的速度和双工的原始工具。
此工具已被Ethtool命令替换,但某些较旧的NIC仍然支持MII-Tool。
为了使其显示简要报告,只需在没有参数的情况下运行命令:
[root@localhost ~]# mii-tool SIOCGMIIPHY on 'eth0' failed: Operation not supported eth1: 100 Mbit, half duplex, link ok
不支持MII-Tool仍然工作的NIC,但为了设置速度和双工,我们必须通过制造商的教程。
我们可以通过使用-v选项的mii-tool命令了解更多详细信息:
# mii-tool –v eth1: negotiated 100baseTx-FD, link ok product info: vendor 00:10:18, model 33 rev 2 basic mode: autonegotiation enabled basic status: autonegotiation complete, link ok capabilities: 100baseTx-FD 100baseTx-HD 10baseT-FD 10baseT-HD advertising: 100baseTx-FD 100baseTx-HD 10baseT-FD 10baseT-HD link partner: 100baseTx-FD 100baseTx-HD 10baseT-FD 10baseT-HD flow-control
我们可以使用-f选项强制将NIC设置为特定速度和双工,但请记住,通过这样做,如果所需的速度和双工与交换机不匹配,则可能会丢失与服务器的连接。
# mii-tool –F 100baseTx-FD eth0
但是,这些更改并不是永久性的,在系统重新启动期间丢失。
要使这些设置永久关闭关闭,我们需要在/etc/rc.local文件中放置命令,以便在引导过程中运行命令。
2)使用ethtool
Ethtool命令已成功替换MII-Tool命令。
使用此命令,我们可以了解有关作为其参数给出的接口的所有详细信息。
# ethtool eth0 Settings for eth0: Supported ports: [ TP MII ] Supported link modes: 10baseT/Half 10baseT/Full 100baseT/Half 100baseT/Full Supports auto-negotiation: Yes Advertised link modes: 10baseT/Half 10baseT/Full 100baseT/Half 100baseT/Full Advertised auto-negotiation: No Speed: 100Mb/s Duplex: Full Port: MII PHYAD: 1 Transceiver: internal Auto-negotiation: off Supports Wake-on: g Wake-on: g Current message level: 0x00000007 (7) Link detected: yes
在上面的输出中,我们可以看到界面eth0不做自动协商,并设置为100 Mbps的速度,全双工。
还提供了支持的模式列表,在输出的顶部提供。
可以将NIC速度和双工设置为:
# ethtool –s eth0 speed 100 duplex full # ethtool –s eth0 speed 10 duplex half
要在下次启动期间具有这些设置,我们需要将它们与ethtool_opts变量设置如下:
# Vi /etc/sysconfig/network-scripts/ifconfig-eth0 DEVICE=eth0 IPADDR=192.168.100.11 NETMASK=255.255.255.0 BOOTPROTO=static ONBOOT=yes ETHTOOL_OPTS="speed 100 duplex full autoneg off"
我们可以通过关闭接口来测试设置,然后使用ifup和ifdown命令再次激活它。
我们还可以使用-s选项更改速度和双工模式,如下所示:
# ethtool –s eth0 speed 100 duplex full autoneg on