DNS ルート サーバーには 13 個の IP があり、エニーキャストを使用して世界中の 800 台の実際の物理サーバーにリクエストを分散していることがわかっています。
香港のルート サーバーがどこかのミラー サーバーと同じ IP を持っていることは知っていますが、インターネット上で物理アドレスが異なる 2 つのサーバーが同じ IP を持つことは合法ですか?
しかし、DNS リクエストが香港のような自分の場所に最も近いサーバーをどのようにターゲットにするのかはわかりません。
DNS はどのようにしてサーバーを選択するのでしょうか。また、同じ IP を持つ 2 つの異なる物理アドレスのサーバーを持つことは合法でしょうか。
答え1
大規模なネットワーク (専用ルーターがあるネットワーク) では、2 台のコンピューター間に複数のネットワーク パスが存在する場合があります。ルーターは冗長性のために相互に複数のネットワーク リンクを持つことが多いため、どちらのリンクを介してもパケットを送信して同じ宛先コンピューターに到達できます。
エニーキャストは、IP アドレスへのルートが 2 つ以上あるように見せかけて、実際にはそれらのルートがまったく異なるコンピューターに通じているように見せかけることで、この脆弱性を悪用します。コンピューターの 1 つがオフラインになると、ルートは消えますが、もう 1 つのルートは引き続き利用できます。
動作させるには、いくつかの設定が必要です。サイト間で IP を共有するには、BGP (ISP レベルのルーティング) を設定する必要がありますが、これは少なくとも 256 個の IP アドレスのブロックに対してのみ実行できます (したがって、1 つの IP に対してのみエニーキャストを使用すると、約 253 個の IP が無駄になります)。サイト内では、すべてのエニーキャスト エンドポイントがどこにあるかがわかるようにルーターを設定する必要があります。これは通常、各エンドポイントがオンラインのときにその存在を公開することによって行われます。
エンドポイントは同じコンピュータへの複数のパスのように見えるため、トラフィックはランダムに異なるパスを使用する可能性があります。通常、これは問題ではありません (パケットは、パスが変更されても、同じ場所に到着します)。ただし、エニーキャスト IP の場合、パスが異なるということは、宛先が異なることを意味します。つまり、トラフィックを 1 つのエンドポイントに送信していても、突然パケットが別のエンドポイントに到着する可能性があります。
このため、エニーキャストは「長寿命」プロトコルでは機能せず、通常はステートレス プロトコルでのみ使用されます。DNS エニーキャストは、パケットが小さく、エンドポイント サーバーが予期せず変更されても問題にならないため、一般的です。一部のサイトでは、1 つか 2 つのパケットで取得できる非常に小さなファイルに対して HTTP でエニーキャストを使用しています。ただし、それ以上になると、エニーキャストでは信頼性が低くなります。「パス」が変更されるたびに TCP 接続がランダムに切断されるように見えるためです。