web-dev-qa-db-ja.com

ルーターに設定されたMTUはデバイスにどのように影響しますか?

これは、解決策の要求というよりも、明確化のための質問です。ルーターとデバイスのMTUの調整に関する多くの質問と回答を読みましたが、自宅のセットアップに何が起こっているのかわかりません。

私のISPは、インターネットへの100Mbpsのパッシブ光ファイバー接続を提供してくれます。通常のサイトとサーバーに問題はありませんが、会社のVPN(Cisco Any Connect)では、会社のイントラネットサイトにアクセスするときに常にタイムアウトが発生していました。

単純なpingテストでは、約45%の損失が示されました(非常に高い損失率)。 VPNに接続している場合のみ。

メインのISPルーター(ファイバー)に到達する前に、コンピューターがイーサネットLANポートを介して接続されているWifiルーターがあるため、セットアップで2つのルーターを使用しています。

 PC <--> WiFi Router (10.0.0.0/24) <--> ISP fiber router (192.168.1.0/24) <--> Internet

長い間検索した後、次のコマンドを使用して、企業VPNに接続されたイーサネットインターフェイスでMTUを調整し始めました(私のコンピューターはWindows 10 Proを実行しています)。

# Find the best MTU size without fragments
ping www.google.com -f -l 1294

# List interfaces and MTU
netsh interface ipv4 show interfaces

# List subinterfaces
netsh int ipv4 show subinterface

# Change MTU for Ethernet Card
netsh int ipv4 set subinterface "Ethernet" mtu=1294 store=persistent

ご覧のとおり、多くのテストの結果、この1294の値が最適であることがわかりました。実際、1464では断片化はありませんでしたが、イントラネットサイトは1294に変更したときにのみ機能しました。

これで、PCに1294を設定すると、ドロップアウトやタイムアウトなしで、すべてのイントラネットサイトと接続に問題なくアクセスできます(ping損失率は5%未満に低下します)。

次に、PCイーサネットカードのMTUの値を1500(Windowsのデフォルト)に戻し、2台のルーターのMTUを1294に変更して再起動し、PCも再起動しました。一度に1つずつ変更しようとしましたが、最終的には両方で変更しました。

ただし...ルーターのMTU値を変更しても、PC接続には影響しません。 VPNに接続するときにエラーなしで動作するようにイーサネットカードのMTUを変更する必要があります。

そうあるべきですか?

ところで、私のISP接続はかなりしっかりしています。 VPNの外部の多くのサイトでpingをテストしても、損失はまったくありません。

1
adamitj

問題は、大きなパケットが企業ネットワークで機能しない可能性があります。これがMTU1500未満の問題であるとは聞いたことがありませんが、それでも問題のようです。 pingで行っていることは、1294バイトを超えるパケットを分解(フラグメント化)するため、ネットワークをより小さなパケットとして通過する可能性があります。パケットは、通常は話しているマシンで、元のサイズに再アセンブルする必要があります。 MTU設定は、これをすべてのパケットに適用します。

現在、VPNは断片化に対して透過的です。ルーターがVPNパケットを強制的にフラグメント化して1294バイトのMTUを生成する場合、はい、これらのパケットは最大サイズ1294バイトでインターネット上を移動します。問題は、企業ネットワーク内のVPNサーバーがそれらをフルサイズに再構築し、フルサイズのパケットとして吐き出すことです。したがって、VPNサーバーを超えたバグのある企業ネットワークでは、1294バイトを超えるパケットが発生しています。 VPNカプセル化の前にMTUを適用する必要があります。したがって、VPNサーバーを離れるパケットも断片化されます。

1
Andy