使用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"
出現以上情形,可先對鏈路進行檢查,例如網線是否松動,更換網線進行排查,進一步可以排查是否為網卡本身的問題。