Tutoriel Linux

Linux上のEthtool:帯域幅のせいにする前にネットワーク接続を確認してください

Débutant2 min de lecture
À retenirLinux n'est pas réservé aux experts. Le bon point de départ : une distribution accessible, une sauvegarde propre et quelques commandes comprises.

ギガビットネットワークカードで転送速度が90Mbps程度に制限されている場合、必ずしもサーバー、Samba、ファイアウォールが原因とは限りません。イーサネットリンクが100Mbpsの接続を確立している可能性もあります。ケーブルの不具合、スイッチポートの制限、またはデュプレックス構成の不安定さなどが原因で、接続全体がボトルネックになることもあります。

エスツール これは、ネットワークドライバによって公開されるパラメータ(速度、デュプレックス、オートネゴシエーション、リンクプレゼンス、ハードウェアカウンタ)を読み取ります。IP設定を変更したり、速度テストを実行したりする前に、まずこの情報を確認します。以下のコントロールのほとんどは読み取り専用です。

TuxはイーサネットケーブルとLinuxネットワークリンクネゴシエーションを検査します
Ethtoolを使用すると、イーサネットリンクの速度、デュプレックスモード、オートネゴシエーション、および接続状態を制御できます。

実際に使用されているイーサネットインターフェースを特定します。

インターフェースが呼び出されると想定しないでください eth0現代の機械は、次のような名前をよく使います。 enp10eno1 または ens18まず、インターフェースと出口に使用された経路を表示します。

IPアドレスの簡単なリンク
ip route get 1.1.1.1

2番目のコマンドは特に 開発者 そして 送信元この例では、 dev enp1s0 制御するインターフェースを指定します エスツールのチュートリアル Linuxにおけるip addr 州の詳細を説明します 下降 および関連する住所。

障害が物理ケーブルに関係している場合は、ループバックインターフェイス、Dockerブリッジ、VPNトンネル、仮想インターフェイスを除外してください。仮想マシンでは、 エスツール 場合によっては、仮想カードのみを説明するだけで、実際のネゴシエーションはホスト側またはスイッチ側で行われます。

ネットワークに手を加えずにethtoolをインストールする

パッケージ名は通常、コマンド名と同じです。インストールしてもカードの設定は変更されません。

sudo apt update
sudo apt install ethtool

sudo dnf install ethtool
sudo pacman -S ethtool

次に、お使いのディストリビューションで利用可能なバージョンとヘルプを確認してください。

ethtool --version
ethtool --help

エスツール ドライバーとハードウェアに依存します。ヘルプに記載されているオプションでも、仮想カード、USBアダプター、またはその機能を公開していないドライバーでは利用できない場合があります。

読み取り速度、デュプレックス、オートネゴシエーション、リンクステータス

指定されたインターフェースでコマンドを実行してください。管理者権限があれば、ドライバから提供されるすべての情報を取得できます。

sudo ethtool enp1s0

初期診断では、以下の4つの線に注目してください。

  • スピード : 現在交渉中の速度、例: 1000Mb/s
  • デュプレックス : 満杯 これは、最新のイーサネットリンクにおける期待値です。
  • 自己交渉 : カードがリモートポートと機能のネゴシエーションを行っているかどうかを示します。
  • リンクが検出されました : 物理的な媒体の存在を確認します。

読みやすくするために、以下の行を抜き出すことができます。

sudo ethtool enp1s0 | grep -E '速度|デュプレックス|自動ネゴシエーション|リンク検出'

こちらもご覧ください サポートされているリンクモードアドバタイズされたリンク モード そして リンクパートナーが宣伝するリンクモードネットワークカード、その設定、およびリモートポートは、少なくとも1つのモードを共有する必要があります。カードがギガビット速度を謳っていても、パートナーが100Mbpsしか提供していない場合、ネゴシエートされた速度は100Mbpsのままとなります。

リンク検出が「いいえ」と表示される場合、何をチェックすべきですか?

リンクが検出されました: いいえ IPアドレス、DNS、TCPポートよりも、この問題を優先的に処理します。まず、カーネルとキャリアから見た状態を確認します。

ip link show dev enp1s0
猫 /sys/class/net/enp1s0/operstate
cat /sys/class/net/enp1s0/carrier

キャリア これは、カーネルが物理的な接続を認識していないことを意味します。正常に動作することが確認されている別のケーブル、次に別のスイッチポートでテストしてください。また、ポートが管理者によって無効化されていないこと、およびUSBアダプタまたはネットワークカードに電源が供給されていることを確認してください。

複数の同一ポートを備えたマシンでは、ドライバが対応していれば、識別オプションによってポートのLEDが10秒間点滅することがあります。

sudo ethtool -p enp1s0 10

最後に、インターフェースに関連するカーネルメッセージを確認してください。これらのメッセージは、リンクの切断が繰り返されている、ファームウェアが欠落している、またはドライバがリセットされていることを示しています。

sudo dmesg -T | grep -Ei 'enp1s0|リンク|ファームウェア|タイムアウト'
sudo ジャーナルctl -k -b | grep -Ei 'enp1s0|リンク|ファームウェア|タイムアウト'

へのガイド dmesgとカーネルメッセージ これにより、これらのエラーを起動時の順序に戻すことができます。

100Mbpsまたは半二重接続でブロックされた接続を理解する

ギガビットカードは、 100Mb/s ソフトウェア最適化を行う前に、物理的な点検を行うべきです。ギガビットイーサネットはケーブルの4対すべてを使用します。損傷した、または圧着不良のペアでもリンクは機能する可能性がありますが、速度は100Mbpsに制限されます。ファストイーサネットスイッチポートでも同様の結果になります。

デュプレックス 半分 現代のネットワークでは、これも疑わしい点です。両端の設定を比較してみてください。片方の端が強制的に設定され、もう片方が自動ネゴシエーションのままになっていると、エラー、再送信、スループットの不安定化を引き起こす可能性があります。

ドライバを特定し、インターフェースカウンタとハードウェア統計情報を相互参照します。

sudo ethtool -i enp1s0
ip -s link show dev enp1s0

によって返された名前 ethtool -S これらのエラーはドライバによって異なります。転送中にCRCエラーが継続的に増加する場合は、ケーブル、コネクタ、モジュール、またはポートに問題がある可能性があります。単一のカウンタが停止しただけでは、実際の障害を証明するものではありません。読み取りを行い、トラフィックを生成してから、再度比較してください。

SSHセッション中は速度を強制しないでください

形状 ethtool -s リンク設定を変更します。再ネゴシエーションを行うと、SSHセッションが即座に切断される可能性があります。KVMコンソール、IPMI、またはその他のバックアップアクセス手段がある場合にのみ、リモートで使用してください。

自動ネゴシエーションが誤って無効化されたことが確認できた場合は、以下のコマンドでインターフェース上で自動ネゴシエーションを再度有効にできます。

sudo ethtool -s enp1s0 autoneg オン

以下のコマンドは新たなネゴシエーションを必要とし、リンクを切断する可能性もあります。

sudo ethtool -r enp1s0

盲目的に無理強いしないでください 速度1000全二重 そして オートネグオフリモートポートは互換性のある設定になっている必要があり、一部の規格では自動ネゴシエーションが必須です。最初の出力をメモし、パラメータを1つ変更してから、コンソールから接続を確認してください。

で適用される設定 ethtool -s 変更は再起動またはインターフェースのリセット後に消える場合があります。永続性はNetworkManager、systemd-networkd、またはディストリビューションの設定に依存します。原因を特定し、テストを検証してから変更を永続化してください。Ubuntuについては、専用の記事を参照してください。 ネットプラン ネットワークにアクセスする前に、ロールバックを準備する方法について説明します。

接続状態が良好な時のみ、速度テストを実施してください。

エスツール これはリンク速度を表示するものであり、アプリケーションが実際に使用できる帯域幅を示すものではありません。1Gbpsの全二重通信ネゴシエーションは、Samba、NFS、またはダウンロードがその速度に達することを保証するものではありません。これは単に、明らかな物理的な制限を克服するための手段にすぎません。

修正後、エラーカウンターが安定していること、およびルートが引き続き正しいインターフェースを使用していることを確認してください。

sudo ethtool enp1s0
ip -s link show dev enp1s0
ip route get 1.1.1.1

ローカルネットワークを測定するには、 iperf3 あなたが管理する2台のマシン間で通信を行います。まず一方のマシンでサーバーを起動し、次に他方のマシンでクライアントを起動します。

iperf3 -s
iperf3 -c 192.0.2.50

接続が安定しており、想定される速度でネゴシエートされ、エラーが増加していない場合は、ルーティング、ファイアウォール、ストレージ、およびアプリケーションサービスに進みます。マシン上で実際に何がリッスンしているかを確認するには、ガイドを使用します。 Linux での ss とオープンポート

そこには ethtoolのマニュアルページ すべてのオプションの詳細。 プロジェクト公式サイト ただし、それらの操縦は常にパイロットと機材に左右されることに留意すべきである。

sudo apt update && sudo apt upgrade