9 个Linux ethtool 操作以太网卡的示例
Ethtool 实用程序用于查看和更改以太网设备参数。
1. 列出以太网设备属性
当您使用设备名称执行 ethtool 命令时,它会显示有关以太网设备的以下信息。
# ethtool eth0
Settings for eth0:
Supported ports: [ TP ]
Supported link modes: 10baseT/Half 10baseT/Full
100baseT/Half 100baseT/Full
1000baseT/Full
Supports auto-negotiation: Yes
Advertised link modes: 10baseT/Half 10baseT/Full
100baseT/Half 100baseT/Full
1000baseT/Full
Advertised auto-negotiation: Yes
Speed: 100Mb/s
Duplex: Full
Port: Twisted Pair
PHYAD: 1
Transceiver: internal
Auto-negotiation: on
Supports Wake-on: d
Wake-on: d
Link detected: yes
以上 ethtool 输出显示以太网卡属性,例如速度、唤醒、双工和链路检测状态。以下是可用的三种类型的双工。
- 全双工:允许同时发送和接收数据包。当以太网设备连接到交换机时使用此模式。
- 半双工:允许在单个时间点发送或接收数据包。当以太网设备连接到集线器时使用此模式。
- 自动协商:如果启用,以太网设备本身会根据以太网设备连接的网络决定是使用全双工还是半双工。
2. 使用 ethtool 选项 -s autoneg 更改网卡参数
上述 ethtool eth0 输出显示“自动协商”参数处于启用状态。您可以使用 ethtool 中的 autoneg 选项禁用此功能,如下所示。
# ifdown eth0
eth0 device: Broadcom Corporation NetXtreme II BCM5709 Gigabit Ethernet (rev 20)
eth0 configuration: eth-bus-pci-0000:0b:00.0
# ethtool -s eth0 autoneg off
# ethtool eth0
Settings for eth0:
Supported ports: [ TP ]
Supported link modes: 10baseT/Half 10baseT/Full
100baseT/Half 100baseT/Full
1000baseT/Full
Supports auto-negotiation: Yes
Advertised link modes: Not reported
Advertised auto-negotiation: No
Speed: Unknown! (65535)
Duplex: Unknown! (255)
Port: Twisted Pair
PHYAD: 1
Transceiver: internal
Auto-negotiation: off
Supports Wake-on: g
Wake-on: g
Link detected: no
# ifup eth0
进行上述更改后,您可以看到“链路检测”值变为关闭,自动协商处于关闭状态。
3. 改变以太网设备的速度
使用 ethtool 可以更改以太网设备的速度以与某些网络设备一起工作,并且新分配的速度值应在限制容量内。
# ethtool -s eth0 speed 100 autoneg off
# ethtool eth0
Settings for eth0:
Supported ports: [ TP ]
Supported link modes: 10baseT/Half 10baseT/Full
100baseT/Half 100baseT/Full
1000baseT/Full
Supports auto-negotiation: Yes
Advertised link modes: Not reported
Advertised auto-negotiation: No
Speed: Unknown! (65535)
Duplex: Unknown! (255)
Port: Twisted Pair
PHYAD: 1
Transceiver: internal
Auto-negotiation: off
Supports Wake-on: g
Wake-on: g
Link detected: no
在适配器联机时更改速度后,它会自动脱机,您需要使用 ifup 命令将其重新联机。
# ifup eth0
eth0 device: Broadcom Corporation NetXtreme II BCM5709 Gigabit Ethernet (rev 20)
eth0 configuration: eth-bus-pci-0000:0b:00.0
Checking for network time protocol daemon (NTPD): running
# ethtool eth0
Settings for eth0:
Supported ports: [ TP ]
Supported link modes: 10baseT/Half 10baseT/Full
100baseT/Half 100baseT/Full
1000baseT/Full
Supports auto-negotiation: Yes
Advertised link modes: Not reported
Advertised auto-negotiation: No
Speed: 100Mb/s
Duplex: Full
Port: Twisted Pair
PHYAD: 1
Transceiver: internal
Auto-negotiation: off
Supports Wake-on: g
Wake-on: g
Link detected: yes
如上输出所示,速度从 1000Mb/s 变为 100Mb/s,自动协商参数未设置。
4. 显示以太网驱动设置
ethtool -i 选项显示驱动程序版本、固件版本和总线详细信息,如下所示。
# ethtool -i eth0
driver: bnx2
version: 2.0.1-suse
firmware-version: 1.9.3
bus-info: 0000:04:00.0
5. 显示 eth0 的 Auto-negotiation,RX 和 TX
查看有关特定以太网设备的自动协商详细信息,如下所示。
# ethtool -a eth0
Pause parameters for eth0:
Autonegotiate: on
RX: on
TX: on
6. 显示特定以太网设备的网络统计信息
使用 ethtool -S 选项显示传输的字节、接收的字节、错误等,如下所示。
# ethtool -S eth0
NIC statistics:
rx_bytes: 74356477841
rx_error_bytes: 0
tx_bytes: 110725861146
tx_error_bytes: 0
rx_ucast_packets: 104169941
rx_mcast_packets: 138831
rx_bcast_packets: 59543904
tx_ucast_packets: 118118510
tx_mcast_packets: 10137453
tx_bcast_packets: 2221841
tx_mac_errors: 0
tx_carrier_errors: 0
rx_crc_errors: 0
rx_align_errors: 0
tx_single_collisions: 0
tx_multi_collisions: 0
tx_deferred: 0
tx_excess_collisions: 0
tx_late_collisions: 0
tx_total_collisions: 0
rx_fragments: 0
rx_jabbers: 0
rx_undersize_packets: 0
rx_oversize_packets: 0
rx_64_byte_packets: 61154057
rx_65_to_127_byte_packets: 55038726
rx_128_to_255_byte_packets: 426962
rx_256_to_511_byte_packets: 3573763
rx_512_to_1023_byte_packets: 893173
rx_1024_to_1522_byte_packets: 42765995
rx_1523_to_9022_byte_packets: 0
tx_64_byte_packets: 3633165
tx_65_to_127_byte_packets: 51169838
tx_128_to_255_byte_packets: 3812067
tx_256_to_511_byte_packets: 113766
tx_512_to_1023_byte_packets: 104081
tx_1024_to_1522_byte_packets: 71644887
tx_1523_to_9022_byte_packets: 0
rx_xon_frames: 0
rx_xoff_frames: 0
tx_xon_frames: 0
tx_xoff_frames: 0
rx_mac_ctrl_frames: 0
rx_filtered_packets: 14596600
rx_discards: 0
rx_fw_discards: 0
7. 排除以太网连接问题
当网络连接出现问题时,当您在 ethtool 命令的输出中看到以下问题时,您可能需要检查(或更改)上述示例中解释的以太网设备参数。
- 速度和双工值显示为未知
- 链路检测值显示为否
连接成功后,上面提到的三个参数都会得到合适的值。即速度被指定为已知值,双工变为全/半,并且链路检测变为是。
上述更改后,如果链路检测仍然显示“否”,请检查从交换机和系统运行的电缆是否存在任何问题,您可能需要进一步深入研究该方面。
8. 从多个设备中识别特定设备(闪烁 NIC 卡的 LED 端口)
让我们假设您有一台带有四个以太网适配器的机器,并且您想要识别特定以太网卡的物理端口。(例如,eth0)。
使用 ethtool 选项 -p,这将使物理端口对应的 LED 闪烁。
# ethtool -p eth0
9. 重启后永久更改
如果您使用 ethtool 更改了任何以太网设备参数,则在下次重新启动后这些参数将全部消失,除非您执行以下操作。
在 ubuntu 上,您必须修改 /etc/network/interfaces 文件并添加所有更改,如下所示。
# vim /etc/network/interfaces
post-up ethtool -s eth2 speed 1000 duplex full autoneg off
上面的行应该是文件的最后一行。这将永久改变 eth2 设备的速度、双工和自动。
在 SUSE 上,修改 /etc/sysconfig/network/ifcfg-eth-id 文件并包含一个使用 POST_UP_SCRIPT 变量的新脚本,如下所示。在相应的 eth1 adpater 配置文件中包含以下行作为最后一行。
# vim /etc/sysconfig/network/ifcfg-eth-id
POST_UP_SCRIPT='eth1'
然后,在/etc/sysconfig/network 目录下创建一个新文件scripts/eth1,如下所示。确保脚本具有执行权限,并确保 ethtool 实用程序位于 /sbin 目录下。
# cd /etc/sysconfig/network/
# vim scripts/eth1
#!/bin/bash
/sbin/ethtool -s duplex full speed 100 autoneg off
- 点赞
- 收藏
- 关注作者
评论(0)