如何在Linux中设置以太网速度/双工模式

时间:2020-03-05 15:27:10  来源:igfitidea点击:

默认情况下,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