(Unix Stack Exchange からコピー)
MTU の症状がある 問題:一部の TCP 接続がフリーズします。特定のコマンドまたは URL に対して多かれ少なかれ再現性がありますが、全体的なパターンを容易に識別できません。明白な症状は、インタラクティブな ssh セッションは正常に機能しますが、ファイル転送はほとんど常に失敗することです。さらに、pppoe はホーム ユーザーに MTU の問題をもたらす最大の原因です。そこで、MTU チェックを処方します。
それは何ですか? メートル 最大 t ランミッション u nit は、ネットワーク リンク上のパケットの最大サイズです。 MTU は、トランスポート メディアごとに異なります。有線イーサネットと wifi (802.11) には異なる MTU があり、ATM リンク (長距離インフラストラクチャのほとんどを構成する) にはそれぞれ独自の MTU があります。PPPOE はカプセル化されたプロトコルです。つまり、すべてのパケットは数バイトのヘッダーで構成されます。基礎となるパケットが続く — そのため、ヘッダーのサイズによって最大パケット サイズが小さくなります。IP では、ルーターが次のホップには大きすぎることを検出した場合、パケットをフラグメント化できますが、これは常に機能するとは限りません。理論的には、適切な MTU は自動的に検出されるはずですが、これも常に機能するとは限りません。特に、ネットワーク マネージャーは、MTU ディスカバリーから取得した MTU 情報に基づいて常に適切に動作するとは限らないことがグーグルで示唆されていますが、影響を受けるバージョンや問題のあるユース ケースが何であるかはわかりません。
測定方法 指定されたサイズの ping パケットを、それらに応答する外部ホストに送信してみてください。 ping -c 1 -s 42 8.8.8.8
(Linux では、他のシステムでは ping
のドキュメントを参照してください) 指図)。パケットは 42 という十分に小さい値で通過するはずです (42 が機能しない場合は、何かが ping をブロックしています)。値が大きい場合、パケットは通過しません。インフラストラクチャの制限部分がローカル イーサネット ネットワークである場合、1464 が一般的な最大値です。運が良ければ、大きすぎるパケットを送信すると、 Frag needed and DF set (mtu = 1492)
のようなメッセージが表示されます .運が悪かった場合は、最大値がわかるまで値を試し続けてから、28 (-s
) を追加します。 はペイロード サイズを指定し、それに加えて 28 バイトのヘッダーがあります。Ubuntu フォーラムの「MTU と RWIN を使用してインターネット接続を最適化する方法」も参照してください。
設定方法 (1454 を決定した MTU に置き換え、eth0
ネットワークインターフェースの名前で)
- 1 回限り (Linux):
ifconfig eth0 mtu 1454
を実行します。 - 恒久的 (Network Manager を使用していない場合、Debian および Ubuntu などの派生物):
/etc/network/interfaces
を編集 .ネットワーク インターフェイスのエントリの直後 (iface eth0 …
の後) ディレクティブ)、pre-up ifconfig $IFACE mtu 1454
の行を追加します。 .または、IP アドレスが静的である場合は、mtu 1454
を追加できますiface eth0 inet static
へのパラメーター 指令。 -
永続的 (Debian および Ubuntu などの派生物、Network Manager の有無にかかわらず):
/etc/network/if-pre-up.d/mtu
というスクリプトを作成します。 次の内容で、誰でも実行できるようにします (chmod a+rx
):#!/bin/sh ifconfig $IFACE mtu 1454