ethtool 命令用于显示/更改以太网适配器设置。您可以在 Linux 中使用此工具更改网卡速度、自动协商、LAN 唤醒设置、双工模式。在本文中,我将向您展示一些帮助您解决以太网卡问题的 ethtool 命令示例。
1) 显示以太网接口详细信息
ethtool 命令检索以太网接口的状态。输出显示etho接口的速度、双工、状态和唤醒等属性。
下面给出一个例子:
# ethtool eth0
Settings for eth0:
Supported ports: [ TP ]
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: Yes
Speed: 1000Mb/s
Duplex: Full
Port: Twisted Pair
PHYAD: 1
Transceiver: internal
Auto-negotiation: on
Supports Wake-on: d
Wake-on: d
Current message level: 0x00000007 (7)
Link detected: yes
有三种类型的双工:
全双工:当以太网连接到交换机时使用。允许双向传输,即同时发送和接收数据包。
半双工:当以太网与集线器连接时使用。仅允许单向传输,即发送或接收数据包。
自动协商:根据网络连接,以太网接口决定是使用全双工还是半双工。
2) ETHTOOL_OPTS 变量
可以使用 Ethtool_opt 变量永久设置 Ethtool 命令设置。让我们看一下下面给出的示例:
# vi /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
BOOTPROTO=static
ONBOOT=yes
ETHTOOL_OPTS="speed 50 duplex full autoneg off"
您可以使用 ifup 和 ifdown 命令测试上述设置。
3) 显示统计
可以使用以下命令检查以太网驱动程序设置和自动协商:
# ethtool -i eth0
driver: bnx2
version: 2.0.1-suse
firmware-version: 1.9.3
bus-info: 0000:04:00.0
[root@localhost ~]# ethtool –a eth0
Pause parameters for eth0:
Autonegotiate: on
RX: on
TX: on
Ethtool 命令的“-p 选项”有助于从多个设备中识别特定设备。
# ethtool –p eth0
拥有网卡的统计信息对于解决网络问题非常有用。
# ethtool –S eth0
NIC statistics:
tx_packets: 148683
rx_packets: 179489
tx_errors: 0
rx_errors: 0
rx_missed: 0
align_errors: 0
tx_single_collisions: 0
tx_multi_collisions: 0
unicast: 116884
broadcast: 25361
multicast: 61674
tx_aborted: 0
tx_underrun: 0
上面的输出显示了有关传输和接收数据包的详细信息。
4) 启用流量控制
在最新的 MAC 和 GMAC 嵌入式设备中,可以通过“PAUSE”参数启用全双工流控制。
这是解决方案:
# ethtool -A eth0 [autoneg on|off] [rx on|off] [tx on|off]
卸载参数详细信息如下:
# ethtool –k eth0
但是,对以太网参数设置所做的任何更改都将在下次启动时消失。为了让它们在下次启动时完好无损,您必须通过将命令添加到 /etc/rc.local 来使这些更改永久化
# cat /etc/rc.local
ethtool -s eth0 speed 100 duplex full autoneg on 1>/dev/null 2>/dev/null
ethtool -s eth1 speed 100 duplex full autoneg on 1>/dev/null 2>/dev/null
5) 设置双工模式
下面的示例显示了如何使用 ethtool 命令设置速度或双工模式,如下所示:
# ethtool -s eth0 speed 100 duplex full
# ethtool -s eth0 speed 10 duplex half