静的ルートのゲートウェイのIPアドレスはルーティングにどのように影響しますか

静的ルートのゲートウェイのIPアドレスはルーティングにどのように影響しますか

私は Windows 7 コンピューターを使用して、同じ物理ネットワーク上にあるもののサブネットが異なる Windows 10 コンピューターに接続しています。Windows 7 に静的ルートを追加する前は、すべてのトラフィックがメイン ルーターに送られ、その後 Windows 10 に戻っていました。このため、RDP 接続の開始に長い遅延が発生していたため、トップ ルーターを回避するために Windows 7 に静的ルートを追加しました。私はミスを犯しましたが、結局はうまくいきました。その理由はよくわかりません。

ネットワーク図

ネットワーク図

Windows 7 の静的ルート

1. None
2. route add 10.1.1.0 mask 255.255.255.0 10.1.0.99
3. route add 10.1.1.0 mask 255.255.255.0 10.1.1.3
  • route 1 tracertショーの使用10.1.0.98 -> 10.1.0.1 -> 10.1.0.99 -> 10.1.1.4
  • route 2 tracertショーの使用10.1.0.98 -> 10.1.0.99 -> 10.1.1.4
  • route 3 tracertショーの使用10.1.0.98 -> 10.1.0.99 -> 10.1.1.4

なぜ機能するかは理解できますroute 2が、なぜ機能するかはわかりませんroute 3

PS: もっとわかりやすいタイトルを提案できる方がいらっしゃいましたら、ぜひお願いします。

答え1

ルート3は、UbuntuコンピュータによるARPパケットの処理方法によって機能します。10.1.1.3へのARP要求は10.1.0.0/24に送信され、10.1.0.99インターフェースで受信されます。また10.1.1.3 を所有している場合、10.1.0.99 のハードウェア アドレスで応答します。Windows 7 コンピューターが後で Windows 10 コンピューターに RDP 接続を試行すると、10.1.1.3 ゲートウェイ宛てのパケットが送信されますが、そのパケットには同じサブネット上のコンピューターの MAC アドレスが含まれており、スイッチはこれを直接転送できます。

それを検証するために

Windows 7の場合

.\Arping.exe -i 10.1.0.98 -T 10.1.1.3

Ubuntuの場合

22:19:51.275116 (Windows 7 MAC) > ff:ff:ff:ff:ff:ff, ethertype ARP (0x0806), length 60: Request who-has 10.1.1.3 tell 10.1.0.98, length 46

答え2

ルート 3 の魔法は、アドレス解決プロトコル、転送テーブル、ルーティング アルゴリズムによって部分的に機能します。

ウィキペディア言う:

アドレス解決プロトコル (ARP) は、特定のインターネット層アドレス (通常は IPv4 アドレス) に関連付けられた MAC アドレスなどのリンク層アドレスを検出するために使用される通信プロトコルです。

多くのオペレーティングシステムは起動時にGratuous ARPを実行します。これにより、たとえば、ネットワーク カードが最近変更され (IP アドレスと MAC アドレスのマッピングが変更された)、他のホストの ARP キャッシュに古いマッピングが残っている場合に発生する問題を解決することができます。

したがって、Ubuntu は起動時に、接続されている両方のサブネット、つまりネットワーク全体にその存在とインターフェイスを通知します。Windows 10 による同様の通知はサブネット内でのみ行われるため、Windows 7 には届きません。このような通知を受信しなかった場合でも、Windows 7 は一致を見つけるために、ARP プロトコルを使用してネットワークにブロードキャスト パケットを送信し、「10.1.1.4 を持っているのは誰か」を尋ねます。

ここでの大きなヒントは、tracertコマンドがホップの中にルーターをリストしなかったことです。Windows 10.1.1.47 は を認識していないにもかかわらず、 の要求は Ubuntu コンピューターに直接送信されました10.1.1.4

ここで動作しているのがWindowsです IP ルーティング テーブル: ルート決定プロセス:

  • ルーティング テーブルの各エントリについて、宛先 IP アドレスとネットワーク マスクの間でビット単位の論理 AND を実行します。その結果をエントリのネットワーク ID と比較して一致を確認します。

  • 一致するルートのリストがコンパイルされます。最も長い一致があるルート(宛先 IP アドレスと最も多くのビットが一致するルート) が選択されます。最も長く一致するルートは、宛先 IP アドレスへの最も具体的なルートです。最も長い一致を持つ複数のエントリが見つかった場合 (たとえば、同じネットワーク ID への複数のルート)、ルータは最も低いメトリックを使用して最適なルートを選択します。最も長い一致と最も低いメトリックを持つ複数のエントリが存在する場合、ルータは使用するルーティング テーブル エントリを自由に選択できます。

Windows 7 ルーティングは、 10.1.1.410.1.1.3の間に共通プレフィックスである を検出しました10.1.1。他の可能性としては、 のルーターまたは Ubuntu がありました10.1.0.99が、共通プレフィックスは のみであったため10.1、これらは選択されませんでした。

ここでは、ルーティングテーブルの上に構築された転送テーブルの動作を確認しています。 ルーティングテーブル は IP アドレスに基づいてルートをコンパイルしますが、転送テーブルには対応する MAC アドレスが含まれます。そのため、転送テーブルには「 の10.1.1.X場合、パケットを Ubuntu コンピュータの MAC アドレスに転送する」というエントリが含まれます。パケットが Ubuntu コンピュータに到着すると、Ubuntu コンピュータはそれを に転送する方法を熟知します10.1.1.4

つまり、Windows 7 からのパケットは Windows 10 に送信されることになります (逆の場合も同様)。

関連情報