9 个Linux ethtool 操作以太网卡的示例

举报
Tiamo_T 发表于 2021/10/09 08:17:15 2021/10/09
【摘要】 Ethtool 实用程序用于查看和更改以太网设备参数。1. 列出以太网设备属性当您使用设备名称执行 ethtool 命令时,它会显示有关以太网设备的以下信息。# ethtool eth0Settings for eth0: Supported ports: [ TP ] Supported link modes: 10baseT/Half 10baseT/Fu...

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
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。