複数のネットワーク パスを使用した非対称ルーティング

この記事では、ネットワークの送信元と送信先の間で利用できるルートが複数存在する場合に、ネットワーク トラフィックが異なるパスを取る場合がある理由について説明します。

非対称ルーティングを理解するために知っておく必要がある概念が 2 つあります。 1 つ目は、複数のネットワーク パスの影響です。 もう 1 つは、ファイアウォールなどのデバイスがどのように状態を保つかです。 これらの種類のデバイスはステートフル デバイスと呼ばれます。 これら 2 つの要素を組み合わせると、ステートフル デバイスによってネットワーク トラフィックがドロップされるシナリオを作成できます。 トラフィックがドロップされるのは、そのトラフィックがデバイス自体から発生したことを検出しなかったためです。

複数のネットワーク パス

インターネット サービス プロバイダーを介したインターネットへのリンクがエンタープライズ ネットワークに 1 つしかない場合、インターネットとの間のトラフィックの往来はすべて同じパスを経由して行われます。 企業で、複数の回線を調達し冗長パスを構成して、ネットワークのアップタイム向上を図ることはよくあることです。 この種類の構成の場合、トラフィックがインターネットに送信されるときのリンクと、返されるときのリンクが異なることがあります。 このシナリオが一般に非対称ルーティングと呼ばれます。 非対称ルーティングでは、戻りのネットワーク トラフィックは元の送信フローとは異なるパスを経由します。

Network with multiple paths

ただし、非対称ルーティングは通常、インターネットにアクセスするときに発生します。 また、複数のパスを組み合わせて使用する場合にも発生します。 最初の例は、インターネット パスがあり、同じ宛先に向かうプライベート パスがある場合です。 2 番目の例は、やはり同じ宛先に向かう複数のプライベート パスがある場合です。

送信元と送信先の間のパス上にある各ルーターにより、送信先に至る最適なパスが計算されます。 ルーターによる最適と思われるパスの決定は、主に次の 2 つの要因に基づきます。

  • 外部ネットワーク間のルーティングは、ボーダー ゲートウェイ プロトコル (BGP) というルーティング プロトコルに基づきます。 BGP では、アドバタイズメントが近隣ノードから取得され、一連の段階を経てそれらが実行されることで、目的の送信先までの最適なパスが決定されます。 その後、最適なパスはルーティング テーブルに格納されます。
  • ルートに関連付けられたサブネット マスクの長さは、ルーティング パスに影響します。 ルーターは、同じ IP アドレスに対して複数のアドバタイズを受信すると、サブネット マスクが長い方のパスを選びます。これは、その方がより具体的なルートであると判断されるためです。

ステートフル デバイス

ルーターは、ルーティングを行うためにパケットの IP ヘッダーを確認します。 いくつかのデバイスは、パケットをより詳細に確認します。 これらのデバイスは通常、レイヤー 4 - 伝送制御プロトコル (TCP) またはユーザー データグラム プロトコル (UDP) のヘッダー、またはレイヤー 7 (アプリケーション レイヤー) のヘッダーまで確認します。 この種のデバイスは、セキュリティ デバイスと帯域幅最適化デバイスのいずれかです。

たとえば、一般的なステートフル デバイスとしてファイアウォールが挙げられます。 ファイアウォールは、さまざまな条件に基づいて、インターフェイスを通過するパケットを許可または拒否します。 これらの条件は、プロトコル、TCP/UDP ポート、URL ヘッダーなどが含まれますが、これらに限定されるわけではありません。 このレベルのパケット インスペクションでは、デバイスに大きな処理負荷がかかる場合があります。

パフォーマンスを向上させるために、ファイアウォールではフローの最初のパケットが検査されます。 ファイアウォールでパケットがインターフェイスの通過を許可されると、その状態テーブルにフロー情報が保持されます。 このフローに関連するその後のパケットはすべて、最初の決定に基づいて許可されます。 既存のフローの一部であるパケットは、そのパケットの送信元ではないファイアウォールに到達することがあります。 最初のフローに関する事前の状態情報がないので、このパケットはファイアウォールによってドロップされます。

ExpressRoute を使用した非対称ルーティング

Azure ExpressRoute 経由で Microsoft に接続すると、ネットワークは次のように変更されます。

  • Microsoft へのリンクが複数になります。 1 つは既存のインターネット接続で、もう 1 つは ExpressRoute 接続を介したものです。 Microsoft 宛ての特定のトラフィックは、インターネット接続を通過しますが、ExpressRoute 接続で返されることがあります。 これは、トラフィックが ExpressRoute を経由するが、インターネット パスで返されるときにも発生する可能性があります。
  • ExpressRoute 回線からより具体的な IP アドレスを受信しました。 そのため、ExpressRoute 経由で提供されるサービスのトラフィックがネットワークから Microsoft に送信されると、ルーターは常に ExpressRoute 接続を優先します。

これらの 2 つの変更がネットワークに与える影響を把握するために、いくつかのシナリオについて考えてみましょう。 たとえば、インターネットへの回線が 1 つあり、Microsoft のサービスをすべてインターネット経由で利用しているとします。 ユーザーのネットワークから Microsoft へと送信され戻ってくるトラフィックは、同じインターネット リンクを経由し、ファイアウォールを通過します。 ファイアウォールは、最初のパケットを確認したときにフローを記録します。 そのメッセージ交換の後続のパケットはすべて、状態テーブルにフローが存在するので許可されます。

ExpressRoute を使用した非対称ルーティング

次に ExpressRoute 回路を有効にし、Microsoft から提供されるサービスを ExpressRoute を介して利用します。 Microsoft の他のサービスはすべてインターネットを介して利用します。 ExpressRoute 接続に接続されている境界に別のファイアウォールをデプロイします。 特定のサービスについて、Microsoft によってより具体的なプレフィックスが ExpressRoute 経由でネットワークにアドバタイズされます。 ルーティング インフラストラクチャは、これらのプレフィックスの優先パスとして ExpressRoute を選択します。

パブリック IP アドレスを ExpressRoute 経由で Microsoft にアドバタイズしない場合。 Microsoft は、インターネット経由でお客様のパブリック IP アドレスと通信します。 お客様のネットワークから Microsoft に送信されるトラフィックでは ExpressRoute 接続が使われますが、Microsoft から戻りトラフィックではインターネット パスが使われます。 エッジのファイアウォールは、認識していないフローの応答パケットを検出すると、それらのパケットをドロップします。

ExpressRoute とインターネットに同じネットワーク アドレス変換 (NAT) プールをアドバタイズすることにした場合。 お客様のネットワーク内のクライアントで、プライベート IP アドレスに関する同様の問題が発生します。 Windows Update などのサービスに対する要求は、これらのサービスの IP アドレスが ExpressRoute 経由でアドバタイズされていないため、インターネット経由で送信されます。 ただし、戻りトラフィックは ExpressRoute 経由になります。 Microsoft はインターネットと ExpressRoute から同じサブネット マスクの IP アドレスを受信したので、優先されるパスは常に ExpressRoute になります。 ExpressRoute 接続に接しているネットワーク エッジにあるファイアウォールや他のステートフル デバイスに、フローに関する以前の情報がない場合、それらのパケットはドロップされます。

非対称ルーティングの解決策

非対称ルーティングの問題を解決するには、2 つの方法を利用できます。 1 つ目はルーティングによるもので、2 つ目は送信元ベースの NAT (SNAT) を使用するものです。

ルーティング

必ず、適切なワイド エリア ネットワーク (WAN) リンクに、パブリック IP アドレスをアドバタイズするようにしてください。 たとえば、認証トラフィックにはインターネットを使用し、電子メール トラフィックには ExpressRoute を使用する場合です。 Active Directory フェデレーション サービス (AD FS) パブリック IP アドレスを ExpressRoute 経由でアドバタイズしないでください。 同様に、ルーターが ExpressRoute 経由で受信する IP アドレスに、オンプレミスの AD FS サーバーを公開しないようにしてください。 ExpressRoute 経由で受け取ったルートはより具体的であるため、Microsoft への認証トラフィックのパスとして ExpressRoute が優先されます。 ネットワークでルーティングがどのように行われるかに注意を払っていない場合は、非対称ルーティングの問題が発生する可能性があります。

ExpressRoute を認証に使用する場合は、NAT を使用せずに ExpressRoute 経由で AD FS パブリック IP アドレスをアドバタイズしていることを確認してください。 このように設定すると、Microsoft から送信されオンプレミスの AD FS サーバーに向かうトラフィックは、ExpressRoute を経由します。 お客様のネットワークから Microsoft への戻りトラフィックでは、インターネットより優先されるルートである ExpressRoute が使われます。

送信元ベースの NAT

非対称ルーティングの問題を解決するもう 1 つの方法は、SNAT を使用するものです。 たとえば、オンプレミスの簡易メール転送プロトコル (SMTP) サーバーのパブリック IP アドレスを ExpressRoute 経由でアドバタイズしないように選択したとします。 代わりに、この種の通信にインターネットを使用するつもりです。 Microsoft からオンプレミスの SMTP サーバーに送信される要求はインターネットを経由します。 SNAT を使用して受信要求を内部 IP アドレスに変換します。 SMTP サーバーからの戻りトラフィックは、ExpressRoute を経由せず、(NAT に使用する) エッジ ファイアウォールに届きます。 その結果、戻りトラフィックはインターネット パスを使います。

Source-based NAT network configuration

非対称ルーティングの検出

traceroute は、ネットワーク トラフィックが予想されるパスを経由していることを確認するうえで、最善の手段です。 オンプレミスの SMTP サーバーから Microsoft に送信されるトラフィックがインターネット パスを経由することが予想される場合、予想される traceroute は SMTP サーバーから Microsoft 365 までです。 その結果から、トラフィックが実際にユーザーのネットワークから (ExpressRoute ではなく) インターネットに向かって送信されていることが確認できます。