使用ethtool工具可以查看和修改网卡(NIC卡)设备配置,下面我们来看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
以上显示了eth0网卡支持的10/100/1000Mb每秒的传输速率,当前传输速率为100Mb/s,自协商开启,传输模式为全双工,链路检测状态为正常启动。以下为三种可选择的传输模式:
- 半双工:允许同时收包、发包,该模式在网卡连接交换机时启用
- 全双工:在同一时刻,只能收包或发包,该模式在网卡连接集线器时启用
- 自协商:启用时根据所连接设备,由网卡自行设定传输模式为全双工或半双工
2.修改网卡配置
使用 -s 选项可以修改网卡配置:
# ethtool -s eth0 speed 100 autoneg off
以上命令将eth0网卡的自协商传输模式关闭,传输速率改为100Mb/s。命令执行后需要重新启动eth0网卡:
# 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
3.保持重启后使配置生效
通过以上命令修改网卡配置,在机器重启后配置将不再生效,若要使重启后配置依然生效,需进行以下配置(以Suse为例):
# vim /etc/sysconfig/network/ifcfg-eth0 POST_UP_SCRIPT='eth0'
以上修改eth0网卡配置文件,在配置文件最后一行添加 "POST_UP_SCRIPT='eth0'";
# cd /etc/sysconfig/network/ # vim scripts/eth0 #!/bin/bash /sbin/ethtool -s duplex full speed 100 autoneg off
在scripts目录下添加相应配置文件,使用ethtool命令完成网卡配置。也可以通过在 /etc/sysconfig/network/ifcfg-eth0 中添加以下一行,达到相同目的:
ETHTOOL_OPTIONS='speed 100 duplex full autoneg off'
4.显示网卡驱动设置
使用 -i 选项可以显示网卡驱动名称,驱动版本,firmware版本以及总线信息:
# ethtool -i eth0 driver: tg3 version: 3.106 firmware-version: sb v3.04 bus-info: 0000:06:00.0
5.显示网卡统计信息
使用 -S 选项,可以针对某网卡查询收发包、错包的统计情况:
# ethtool -S eth0 NIC statistics: rx_bytes: 74356477841 rx_error_bytes: 0 tx_bytes: 110725861146 tx_error_bytes: 0 ……
6.网口连接问题定位
当发现网络无法连接时,我们通常会检查指定网口的状态是否正常,出现以下情况说明网口状态异常:
- 速率和传输模式显示为 "Unknown"
- 链路状态检测(Link detected)显示为 "No"
出现以上情形,可先对链路进行检查,例如网线是否松动,更换网线进行排查,进一步可以排查是否为网卡本身的问题。