ethtoolコマンドでNICのリンク状態・速度・デュプレックスを確認する方法|オートネゴシエーションや統計情報も

宮崎智広 この記事の監修:宮崎智広(Linux実務・教育歴20年以上・受講者3,100名超)
HOMELinux技術 リナックスマスター.JP(Linuxマスター.JP)Linuxtips > ethtoolコマンドでNICのリンク状態・速度・デュプレックスを確認する方法|オートネゴシエーションや統計情報も
「サーバーの通信が異様に遅い、でも ping は通る…NICはちゃんと1Gbpsでリンクしているのか?」
ネットワークが原因不明で遅い時、ip コマンドだけでは速度やデュプレックスまでは見えません。リンクは上がっていても、100Mbps half-duplex に落ちていて性能が出ない、というケースは現場で実際に遭遇します。

この記事では、Linuxの ethtool コマンドを使って NIC(Network Interface Card:ネットワークインターフェースカード)のリンク状態・速度・デュプレックス・オートネゴシエーション・統計情報・ドライバ情報を確認する方法を、実際の出力例とトラブルシュート手順を交えて解説します。
RHEL 9.4 / Ubuntu 24.04 LTSで動作確認済みです。

この記事のポイント

・ethtool ens33 でリンク速度・デュプレックス・接続状態を一発確認できる
・ethtool -i ens33 でドライバ名とバージョンを取得できる
・ethtool -S ens33 で送受信エラー・ドロップ統計を確認できる
・速度が出ない時はオートネゴシエーション失敗を最初に疑う


「このままじゃマズい」と感じていませんか?
参考書を開く気力もない、同年代に取り残される不安——
でも安心してください。プロのエンジニアはコマンドを暗記していません。
「現場で使える型」を効率よく使いこなしているだけです。
図解60P/登録10秒/解除も3秒 / 詳細はこちら

なぜ ethtool が必要なのか?ip コマンドとの違い

ip コマンドや nmcli はIPアドレス・ルーティング・名前解決といった「L3以上」を扱います。一方、ethtool は NIC の物理層(L1)からデータリンク層(L2)の情報を扱う専用ツールです。

たとえば「リンクは上がっているが、なぜか100Mbps half-duplex で動いている」という状況は、ip a では一切見えません。ethtool を叩いて初めて、スイッチ側との速度ネゴシエーションが失敗していることが分かります。

20年以上Linuxサーバーを運用してきた経験から言うと、サーバー間の転送速度が遅い時、最初に確認すべきは ethtool による物理リンクの実際の速度です。ケーブル断線・SFPモジュール不良・スイッチポート設定ミスなど、ハードウェア側のトラブルはここで切り分けられます。

基本的な使い方(最頻出の手順)

1. インストールを確認する

RHEL系・Ubuntu系のいずれもデフォルトで入っていることが多いですが、最小構成では入っていない場合があります。

# RHEL / Rocky Linux / AlmaLinux # dnf install ethtool # Ubuntu / Debian # apt install ethtool # バージョン確認 # ethtool --version ethtool version 6.4

2. インターフェース名を確認する

ethtool には対象のインターフェース名(ens33・eth0・enp0s3など)を渡します。まずは ip コマンドで一覧を取得します。

# ip -br link show lo UNKNOWN 00:00:00:00:00:00 <LOOPBACK,UP,LOWER_UP> ens33 UP 00:0c:29:xx:xx:1a <BROADCAST,MULTICAST,UP,LOWER_UP> ens34 DOWN 00:0c:29:xx:xx:24 <BROADCAST,MULTICAST>

UP と表示されていてもリンク速度までは分かりません。次のステップで ethtool に渡します。

3. リンク状態・速度・デュプレックスを確認する

オプションなしで ethtool に NIC 名を渡すのが最も基本的な使い方です。

# ethtool ens33 Settings for ens33: Supported ports: [ TP ] Supported link modes: 10baseT/Half 10baseT/Full 100baseT/Half 100baseT/Full 1000baseT/Full Supported pause frame use: No Supports auto-negotiation: Yes Advertised link modes: 10baseT/Half 10baseT/Full 100baseT/Half 100baseT/Full 1000baseT/Full Advertised auto-negotiation: Yes Speed: 1000Mb/s Duplex: Full Port: Twisted Pair PHYAD: 0 Transceiver: internal Auto-negotiation: on MDI-X: off (auto) Link detected: yes

特に重要なのは以下の3行です。

Speed:実際にリンクしている速度。期待値と違えばハードウェアトラブルを疑う
Duplex:Full ならOK。Half になっていればコリジョンが発生している可能性大
Link detected:yes なら物理的に接続されている。no ならケーブル断線かポート故障

応用・実務Tips

1. ドライバとファームウェア情報を取得する

NIC のドライバ名・バージョン・ファームウェアを確認するには -i オプションを使います。トラブル発生時にベンダーへ問い合わせる際の必須情報です。

# ethtool -i ens33 driver: e1000 version: 7.3.21-k8-NAPI firmware-version: expansion-rom-version: bus-info: 0000:02:01.0 supports-statistics: yes supports-test: yes supports-eeprom-access: no supports-register-dump: yes supports-priv-flags: no

bus-info に表示される PCI バス番号(0000:02:01.0)は、lspci の出力と突き合わせて物理スロット位置を特定するときに使います。

2. 送受信エラー・ドロップ統計を確認する

パケットロスや遅延の調査には -S オプションで NIC レベルの統計情報を見ます。

# ethtool -S ens33 NIC statistics: rx_packets: 1284567 tx_packets: 982341 rx_bytes: 1284567890 tx_bytes: 982341000 rx_errors: 0 tx_errors: 0 rx_dropped: 0 tx_dropped: 0 rx_crc_errors: 0 rx_missed_errors: 12 tx_aborted_errors: 0 tx_carrier_errors: 0

特に rx_crc_errors と rx_missed_errors が増えていれば、ケーブル品質や受信バッファ不足を疑います。本番運用中は cron で定期取得し、差分監視すると障害の予兆を早期にキャッチできます。

3. リンク状態だけを素早く確認する

スクリプトでリンク有無だけを判定したいときは -l ではなく、grep で Link detected を抽出するのが定番です。

# ethtool ens33 | grep "Link detected" Link detected: yes

シェルスクリプトでは、yes/no を判定して Slack 通知などに繋げることが多いです。

4. オートネゴシエーションを再実行する

スイッチ側との速度交渉が失敗してリンクが落ちている時、-r オプションでネゴシエーションを再実行できます。

# ethtool -r ens33

実行に成功すると、一瞬リンクが切断されてから再接続します。SSH 接続中に実行すると切断されるリスクがあるため、コンソール経由か、別経路の管理ネットワーク経由で実行してください。

【重要】speed・duplex を強制設定するときの注意点

古いスイッチや特殊な機器との接続で、オートネゴシエーションがうまくいかないことがあります。その際は -s オプションで速度とデュプレックスを固定できます。

# 1Gbps Full duplex に固定(autoneg off は危険) # ethtool -s ens33 speed 1000 duplex full autoneg off # 元に戻す(オートネゴシエーション on) # ethtool -s ens33 autoneg on

ただし、片側だけ固定にすると相手側が half-duplex に落ちて性能が激減する「デュプレックスミスマッチ」が発生します。これは現場で頻発する古典的トラブルです。固定設定は両端(サーバー側とスイッチ側)を必ず揃えるのが鉄則です。

この設定は再起動で揮発します。永続化するには NetworkManager の nmcli や、Ubuntu なら netplan の link-options で設定する必要があります。

「Operation not supported」エラーが出た時の対処法

仮想マシンや一部の仮想 NIC(virtio_net など)では、ethtool の一部機能が「Operation not supported」を返します。

# ethtool -s ens33 speed 1000 duplex full autoneg off Cannot set new settings: Operation not supported not setting speed not setting duplex not setting autoneg

これは仮想化環境では NIC の物理パラメータを変更できないため発生します。物理サーバーに切り替えるか、ハイパーバイザー側でNIC設定を変更してください。クラウド環境(EC2など)でも同様に変更不可です。

「Cannot get device settings: No such device」エラーの対処

インターフェース名のタイポや、リンクダウンしているデバイスを指定するとこのエラーになります。

# ethtool eth99 Cannot get device settings: No such device

ip -br link show でインターフェース名を再確認してから ethtool を実行してください。NetworkManager のインターフェース名は ens33・enp0s3 のように予測可能名(Predictable Network Interface Names)になっており、eth0 ではないことが多いので要注意です。

ネットワーク疎通そのものを切り分けたいときは、上位レイヤのポート状況も合わせて確認します。Linux ポート確認の全コマンドに ss・lsof・netstat の使い分けをまとめてあります。

名前解決やルーティングが絡む障害との切り分け

ethtool で物理リンクが正常(Speed・Duplex・Link detected すべて期待通り)なのに通信が遅い・通らない場合、原因は L3 以上にあります。名前解決の遅延や DNS サーバーの応答遅延が原因のことも多く、resolv.conf や NetworkManager の設定を見直すと解決します。詳しくはLinux DNS 設定の基本を確認してください。

IPv6 を有効にしている環境では、IPv6 経路で名前解決が失敗してフォールバックに時間がかかるパターンもあります。IPv6 設定の参考を見て、不要なら無効化を検討してください。

本記事のまとめ

ethtool は、ip コマンドでは見えない物理層・データリンク層の情報を確認できる、ネットワーク障害切り分けの必須ツールです。よく使うオプションを以下にまとめます。
やりたいこと コマンド
速度・デュプレックス・リンク状態を確認 ethtool ens33
ドライバ・ファームウェア情報を取得 ethtool -i ens33
送受信エラー・ドロップ統計を確認 ethtool -S ens33
リンク有無だけ素早く確認 ethtool ens33 | grep "Link detected"
オートネゴシエーションを再実行 ethtool -r ens33
速度・デュプレックスを固定(要注意) ethtool -s ens33 speed 1000 duplex full autoneg off
オートネゴシエーションを有効に戻す ethtool -s ens33 autoneg on
物理層のトラブルは「ping は通るのに遅い」「リンクは上がっているのに性能が出ない」といった症状で現れます。ethtool を使えば、原因がハードウェアにあるのか、ソフトウェアにあるのかを15秒で切り分けられます。本番障害の初動で必ず叩けるよう、コマンドラインに馴染ませておくことをおすすめします。

「ネットワーク障害の初動で迷っていませんか?」

ethtool は強力なツールですが、本当に役立つのは「物理層からアプリ層まで一気通貫で切り分けられる引き出し」を持っているときです。NIC・ルーティング・DNS・ファイアウォール・サービス起動順、どこを最初に疑うか、自分の手で確信を持って判断できるかが現場の分かれ目です。
現場で通用する安全なLinuxサーバー構築の「型」を体系的に身につけたい方へ、『Linuxサーバー構築入門マニュアル(図解60P)』を完全無料でプレゼントしています。

「独学の時間がもったいない」「プロから直接、現場の技術を最短で学びたい」という本気の方には、2日で実務レベルのスキルが身につく【初心者向けハンズオンセミナー】も開催しています。


無料メルマガで学習を続ける

Linuxの実践スキルをメールで毎週お届け。
登録は1分、解除もいつでも可。

登録無料・いつでも解除できます

暗記不要・1時間後にはサーバーが動く

3,100名以上が実践した「型」を無料で公開中

プロのエンジニアはコマンドを暗記していません。
「現場で使える型」を効率よく使いこなしているだけです。
その「型」を図解60Pにまとめた入門マニュアルを、完全無料でプレゼントしています。

登録10秒/合わなければ解除3秒 / 詳細はこちら

Linux無料マニュアル(図解60P) 名前とメールで30秒登録

宮崎 智広

この記事を書いた人

宮崎 智広(みやざき ともひろ)

株式会社イーネットマーキュリー代表。現役のLinuxサーバー管理者として15年以上の実務経験を持ち、これまでに累計3,100名以上のエンジニアを指導してきたLinux教育のプロフェッショナル。「現場で本当に使える技術」を体系的に伝えることをモットーに、実践型のLinuxセミナーの開催や無料マニュアルの配布を通じてLinux人材の育成に取り組んでいる。

趣味は、キャンプにカメラ、トラウト釣り。好きな食べ物は、ラーメンにお酒。休肝日が作れない、酒量を減らせないのが悩み。最近、ドラマ「フライトエンジェル」を観て涙腺が崩壊しました。