ネットワークが原因不明で遅い時、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 で送受信エラー・ドロップ統計を確認できる
・速度が出ない時はオートネゴシエーション失敗を最初に疑う
でも安心してください。プロのエンジニアはコマンドを暗記していません。
「現場で使える型」を効率よく使いこなしているだけです。
なぜ 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>
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
・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
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
3. リンク状態だけを素早く確認する
スクリプトでリンク有無だけを判定したいときは -l ではなく、grep で Link detected を抽出するのが定番です。# ethtool ens33 | grep "Link detected" Link detected: yes
4. オートネゴシエーションを再実行する
スイッチ側との速度交渉が失敗してリンクが落ちている時、-r オプションでネゴシエーションを再実行できます。# ethtool -r ens33
【重要】speed・duplex を強制設定するときの注意点
古いスイッチや特殊な機器との接続で、オートネゴシエーションがうまくいかないことがあります。その際は -s オプションで速度とデュプレックスを固定できます。# 1Gbps Full duplex に固定(autoneg off は危険) # ethtool -s ens33 speed 1000 duplex full autoneg off # 元に戻す(オートネゴシエーション on) # ethtool -s ens33 autoneg on
この設定は再起動で揮発します。永続化するには 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
「Cannot get device settings: No such device」エラーの対処
インターフェース名のタイポや、リンクダウンしているデバイスを指定するとこのエラーになります。# ethtool eth99 Cannot get device settings: No such device
ネットワーク疎通そのものを切り分けたいときは、上位レイヤのポート状況も合わせて確認します。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 |
「ネットワーク障害の初動で迷っていませんか?」
ethtool は強力なツールですが、本当に役立つのは「物理層からアプリ層まで一気通貫で切り分けられる引き出し」を持っているときです。NIC・ルーティング・DNS・ファイアウォール・サービス起動順、どこを最初に疑うか、自分の手で確信を持って判断できるかが現場の分かれ目です。
現場で通用する安全なLinuxサーバー構築の「型」を体系的に身につけたい方へ、『Linuxサーバー構築入門マニュアル(図解60P)』を完全無料でプレゼントしています。
「独学の時間がもったいない」「プロから直接、現場の技術を最短で学びたい」という本気の方には、2日で実務レベルのスキルが身につく【初心者向けハンズオンセミナー】も開催しています。
3,100名以上が実践した「型」を無料で公開中
プロのエンジニアはコマンドを暗記していません。
「現場で使える型」を効率よく使いこなしているだけです。
その「型」を図解60Pにまとめた入門マニュアルを、完全無料でプレゼントしています。
登録10秒/合わなければ解除3秒 / 詳細はこちら

無料メルマガで学習を続ける
Linuxの実践スキルをメールで毎週お届け。
登録は1分、解除もいつでも可。
登録無料・いつでも解除できます