ルーティングと外部接続
論理ルーターはサブネット間を接続し、少しの設定を追加することで物理ネットワークとも接続できます。このページでは、サブネット間のルーティング、外部への到達、およびワークロードへのパブリックIPアドレスの付与について説明します。
ここで説明するすべての設定は、Logical Routers ページ、またはルーターを所有するVPCから行います。
サブネット間のルーティング
同じルーターに接続されたサブネット同士は、追加の設定なしで相互に通信できます。各サブネットのゲートウェイは指定したルーターポートのアドレスとなり、ワークロードはそのゲートウェイを経由して他のサブネットに到達します。
ルーターのポート一覧はその詳細ビューに表示されます。各ポートは、担当するサブネットとそのアドレスを示しています。
静的ルート (Static routes)
プレフィックス宛のトラフィックをネクストホップ(next hop)に送信するために静的ルートを追加します。最も一般的な例は、VPCからのデフォルトルートです:
- IP prefix:
0.0.0.0/0 - Next hop: 物理ゲートウェイのアドレス
ルートには、ルーターが実際に到達できるネクストホップが必要です。これは通常、ルーターがそのホップを含むネットワーク上にまずポートを持っている必要があることを意味します(下記参照)。
物理ネットワークへの接続
論理ルーターは、設定を追加するまで仮想ネットワーク外への通信経路を持ちません。外部と接続するには以下の3つが必要です:
プロバイダーネットワークマッピング (Provider network mapping): トラフィックを伝送するホスト上で、
ovn-bridge-mappingsを使用してプロバイダーネットワーク名を物理アップリンクを持つOVSブリッジにマッピングします。これはアクティベーション中、またはホストのOVS構成で設定します。localnetスイッチ: 論理スイッチを作成し、マッピングと一致するネットワーク名を持つ
localnetタイプのポートを作成します。このスイッチは物理セグメントの仮想的な表現です。そのスイッチ上のルーターポート: 物理サブネット上のアドレスを保持するポートをルーターに付与し、
routerタイプのポートを使用してlocalnetスイッチに接続します。ルーターポートをゲートウェイシャーシ(プロバイダーマッピングを持つホスト)に固定(ピン留め)して、OVNがトラフィックをどこから送出すべきかを認識できるようにします。
その後、物理ゲートウェイを経由するデフォルトルートを追加します。
一致するブリッジマッピングがないホスト上でlocalnetポートを作成した場合、Vaporはポートを作成した上で、プロバイダーネットワークが未定義であるという警告を表示します。これは必ずしも誤りではありません(別のホストを経由してエグレスさせる意図がある場合など)。しかし、外部への送信が機能しない場合は、まずここを確認してください。
SNAT: 単一の外部アドレスの共有
サブネット全体が単一のアドレスを経由してインターネットにアクセスできるようにするには、ルーターに SNAT タイプのNATルールを追加します:
- External IP: トラフィックの送信元として見せる外部アドレス
- Logical IP: サブネット(例:
10.50.0.0/24)
これにより、そのサブネットを出るトラフィックは外部アドレスに変換され、戻りの応答も適切に逆変換されます。
外部アドレスが未使用であることを確認してください
外部アドレスは、他のどのマシンも使用していないアドレスである必要があります。pingに応答するかどうかを確認するだけでは不十分です。ファイアウォールで保護されたホストはpingに応答しませんが、アドレス自体は保持しています。同一セグメント上のホストからのARPプローブや、IPアドレス管理台帳などで必ず確認してください。
すでに使用されているアドレスを指定すると、OVNとそのホストの間でアドレス競合が発生し、原因の特定が極めて困難な断続的な通信障害を引き起こします。
DNAT: 単一ワークロードの公開
単一のワークロードを外部からアクセス可能にするには、外部アドレスとワークロードの内部アドレスを指定して DNAT and SNAT を使用します。外部アドレスへのインバウンド接続がそのワークロードに到達し、アウトバウンドトラフィックも同じ外部アドレスを使用します。
ルーティングポリシー (Routing policies)
ポリシーはルーティングテーブルよりも先に評価され、優先度(priority)の高い順にマッチングされます。宛先IPだけではルーティングを決定できない場合(例:特定のサブネットのトラフィックを別の経路に送る、同じルーターを共有する2つのサブネット間の通信をドロップするなど)に使用します。
送信元/宛先CIDR、プロトコル、ポートからポリシーを構築できます。ビルダーでカバーできない条件が必要な場合は、マッチ式を直接記述することも可能です。アクションには allow、drop、および1つ以上のネクストホップへの reroute があります。
ポリシーは即座に有効になり、強い影響力を持つツールです。広い送信元プレフィックスに対して drop を設定すると、意図しないトラフィックまで遮断されてしまいます。意図を正確に表現する最も狭い範囲のマッチ条件を設定し、元に戻すにはポリシーを削除してください。
ロードバランサーはスイッチに配置する
ロードバランサーをアタッチする際は、分散ルーターではなく 論理スイッチ (logical switch) にアタッチしてください。
ルーターにアタッチされたロードバランサーはインバウンド時に宛先を変換しますが、専用ゲートウェイポートを持たない分散ルーターでは、OVNが逆方向の応答変換を生成しません。そのため、応答パケットが仮想IPではなくバックエンド自身のアドレスを保持してしまい、クライアントによって拒否され、すべてのリクエストが無応答のように見えます。スイッチにアタッチされたロードバランサーは正常に機能します。
関連事項として、仮想IP(VIP)にはクライアントが存在するサブネットの 外部 のアドレスを割り当ててください。サブネット内部のアドレスに対してはARPに応答するものが存在しないため、クライアントはパケットを送信する前の段階で停止(ハング)してしまいます。サブネット外のVIPを使用すると、クライアントはゲートウェイ宛にパケットを送信し、通過する過程でロードバランサーが機能します。
詳細は ロードバランシングとネットワークサービス を参照してください。