ethtool
用於檢視和修改網路裝置(尤其是有線乙太網裝置)的驅動引數和硬體設定。你可以根據需要更改乙太網卡的引數,包括自動協商、速度、雙工和區域網喚醒等引數。通過對乙太網卡的設定,你的計算機可以通過網路有效地進行通訊。該工具提供了許多關於接駁到你的 Linux 系統的乙太網裝置的資訊。
在這篇文章中,我們將告訴你如何更改以下的引數以及如何檢視這些引數。這篇文章將幫助你在 Linux 系統中排除與乙太網卡相關的問題。
下面的資訊將幫助你了解乙太網卡的工作原理。
no
,請嘗試重新啟動網絡卡。如果鏈路檢測仍顯示 no
,則檢查交換機與系統之間連線的線纜是否有問題。預設情況下,大多數系統上應該已經安裝了 ethtool
。如果沒有,你可以從發行版的官方版本庫中安裝。
對於 RHEL/CentOS 6/7 系統,請使用 yum 命令 安裝 ethtool
:
$ sudo yum install -y ethtool
對於 RHEL/CentOS 8 和 Fedora 系統,請使用 dnf 命令 安裝 ethtool
:
$ sudo yum install -y ethtool
對於基於 Debian 的系統,請使用 apt 命令 或 apt-get 命令 安裝 ethtool
:
$ sudo apt-get install ethtool
對於 openSUSE 系統,使用 zypper 命令 安裝 ethtool
:
$ sudo zypper install -y ethtool
對於 Arch Linux 系統,使用 pacman 命令 安裝 ethtool
:
$ sudo pacman -S ethtool
你可以使用 ip 命令或 ifconfig
命令(在現代發行版中已被淘汰)來驗證可用的、活動的網絡卡的名稱和其他細節:
# ip a或# ifconfig1: lo: mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 scope host lo valid_lft forever preferred_lft forever2: eth0: mtu 1500 qdisc mq state UP group default qlen 1000 link/ether 00:10:22:35:23:sf brd ff:ff:ff:ff:ff:ff inet 192.164.23.100/24 brd 192.164.23.255 scope global eth0 valid_lft forever preferred_lft forever
掌握了乙太網卡名稱後,就可以使用 ethtool
命令輕鬆檢視其詳細資訊,如下所示。
在 Linux 系統中,每個網絡卡(NIC)都被分配了唯一的名稱,如 ethX、enpXXX 等。
eth[X]
格式。例如,RHEL 6 和它們的舊版本。enp[XXX]
或 ens[XXX]
格式。例如,大多數現代 Linux 發行版都使用這種格式,包括 RHEL 7、Debian 10、Ubuntu 16.04 LTS。# ethtool eth0Settings for eth0: Supported ports: [ TP ] Supported link modes: 1000baseT/Full 10000baseT/Full Supported pause frame use: No Supports auto-negotiation: No Supported FEC modes: Not reported Advertised link modes: Not reported Advertised pause frame use: No Advertised auto-negotiation: No Advertised FEC modes: Not reported Speed: 10000Mb/s Duplex: Full Port: Twisted Pair PHYAD: 0 Transceiver: internal Auto-negotiation: off MDI-X: Unknown Supports Wake-on: uag Wake-on: d Link detected: yes
你可以使用 ethtool
命令的 -i
選項檢查驅動程式版本、韌體版本和匯流排的詳細資訊,如下所示:
# ethtool -i eth0driver: vmxnet3version: 1.4.16.0-k-NAPIfirmware-version:expansion-rom-version:bus-info: 0000:0b:00.0supports-statistics: yessupports-test: nosupports-eeprom-access: nosupports-register-dump: yessupports-priv-flags: no
你可以使用 ethtool
命令中的 -S
選項來檢視網路使用情況統計。它可以顯示傳輸的位元組數、接收的位元組數、錯誤數等。
# ethtool -S eth0NIC statistics: Tx Queue#: 0 TSO pkts tx: 2053 TSO bytes tx: 7167572 ucast pkts tx: 4028081 ucast bytes tx: 399093197 mcast pkts tx: 0 mcast bytes tx: 0 bcast pkts tx: 0 bcast bytes tx: 0 pkts tx err: 0 pkts tx discard: 0 drv dropped tx total: 0 too many frags: 0 giant hdr: 0 hdr err: 0 tso: 0 ring full: 0 pkts linearized: 0 hdr cloned: 0 giant hdr: 0 Tx Queue#: 1 TSO pkts tx: 1955 TSO bytes tx: 6536945 ucast pkts tx: 3711838 ucast bytes tx: 346309662 mcast pkts tx: 0 mcast bytes tx: 0 bcast pkts tx: 1186 bcast bytes tx: 49812 pkts tx err: 0 pkts tx discard: 0 drv dropped tx total: 0 too many frags: 0 giant hdr: 0 hdr err: 0 tso: 0 ring full: 0 pkts linearized: 0 hdr cloned: 0 giant hdr: 0 Rx Queue#: 0 LRO pkts rx: 0 LRO byte rx: 0 ucast pkts rx: 5084776 ucast bytes rx: 4673133395 mcast pkts rx: 0 mcast bytes rx: 0 bcast pkts rx: 154143 bcast bytes rx: 45415676 pkts rx OOB: 0 pkts rx err: 0 drv dropped rx total: 0 err: 0 fcs: 0 rx buf alloc fail: 0 Rx Queue#: 1 LRO pkts rx: 0 LRO byte rx: 0 ucast pkts rx: 6346769 ucast bytes rx: 4835534292 mcast pkts rx: 0 mcast bytes rx: 0 bcast pkts rx: 3464 bcast bytes rx: 714646 pkts rx OOB: 0 pkts rx err: 0 drv dropped rx total: 0 err: 0 fcs: 0 rx buf alloc fail: 0 tx timeout count: 0
你可以根據需要改變乙太網的速度。當你進行此更改時,網絡卡將自動掉線,你需要使用 ifup 命令 或 ip
命令或 nmcli
命令將其重新上。
# ethtool -s eth0 speed 100# ip link set eth0 up
你可以使用 ethtool
命令中的 autoneg
選項啟用或禁用自動協商,如下圖所示:
# ethtool -s eth0 autoneg off# ethtool -s eth0 autoneg on
如果你想使用 ethtool
命令同時更改乙太網卡的多個引數,請使用下面的格式:
Syntax:ethtool –s [device_name] speed [10/100/1000] duplex [half/full] autoneg [on/off]
# ethtool –s eth0 speed 1000 duplex full autoneg off
要檢視關於特定乙太網裝置的自動協商等詳細資訊,請使用以下格式:
# ethtool -a eth0
如果你想識別一個特定的物理介面,這個選項非常有用。下面的 ethtool
命令會使 eth0
埠的 LED 燈閃爍:
# ethtool -p eth0
在系統重新啟動後,你使用 ethtool
所做的更改將被預設恢復。
要使自定義設定永久化,你需要更新網路組態檔中的值。根據你的 Linux 發行版,你可能需要將此值更新到正確的檔案中。
對於基於 RHEL 的系統。你必須使用 ETHTOOL_OPTS
變數:
# vi /etc/sysconfig/network-scripts/ifcfg-eth0ETHTOOL_OPTS="speed 1000 duplex full autoneg off"
對於基於 Debian 的系統:
# vi /etc/network/interfacespost-up ethtool -s eth0 speed 1000 duplex full autoneg off