株式会社ネットワールドのエンジニアがお届けする技術情報ブログです。
各製品のエキスパートたちが旬なトピックをご紹介します。

【NSX】仮想ルータを知る03 - 仮想ルータ間のルーティング

こんにちは。ネットワールドSEの藤田です。

今回はNSXの仮想ルータ(Tier-0、Tier-1)間のルーティングがどのように構成されているかを確認していきます。
※これまでの投稿は末尾の過去記事をご参照下さい。

本記事のキーワードはルートアドバタイズ設定です。


免責事項

  • 本書は、株式会社ネットワールド(以下 弊社)が作成・管理します。
  • 本書の記載内容の一部または全部を弊社に無断で改変・転載することを禁じます。
  • 本書の記載内容は、一部または全部が将来予告無く変更されることがあります。
  • 本書の利用は、利用者様の責任において行われるとものとします。
  • 本書の記載内容には、最善の注意を払っておりますが、正確性・完全性を保証するものではありません。従いまして、本書の利用によって生じたあらゆる損害に関して、弊社は一切の責任を負いかねます。

概要

NSXの仮想ルータはTier-0にTier-1がぶら下がる二階層の構成を取ります。それでは、このTier-0とTier-1はどのようなルーティングを相互にしているのでしょうか。

本記事の対象範囲

本記事でお伝えしたいことは下記三点です。

  • Tier-0、Tier-1の中継セグメントはオーバーレイセグメントで自動構成される
  • Tier-1はデフォルトルートをTier-0へ向ける
  • Tier-1は自分へルーティングして欲しい経路をルートアドバタイズ設定によりTier-0へ通知する

どのような問題が発生するのか

複数のTier-1はそれぞれ独立した担当者が管理することも想定されています。その場合、各担当者はネットワークの全体を考慮せず、担当範囲のTier-1の設定をそれぞれ行うことになるでしょう。

Tier-1の管理


各Tier-1でTier-0経由の通信をさせたくないネットワークがあるかもしれません。
例えば以下のようなケースです。

  • 内部利用に限定しているネットワークのため
  • NATで隠ぺいしているネットワークのため
  • Tier-1間でサブネットが重複するネットワークのため
Tier-0へ経路を通知したくないケース

そうすると、Tier-0からTier-1へなんでもかんでもルーティングするわけにはいきません。Tier-0からTier-1へルーティングする必要のあるパケットを明示的に制御する必要が生じます。かと言って、動的ルーティングを設定して相互のルーティングを確保させる、というような面倒な設定は必要ありません。もっと簡単な方法で相互のルーティングは構成されます。以下ではどのようにルーティングを制御しているのか確認していきます。

Tier-0とTier-1の中継セグメント

まず、Tier-0とTier-1の中継セグメントがどうなっているのか見ていきましょう。以下が構成例です。

中継セグメント

中継セグメントはオーバーレイセグメントで自動構成されます。そのため、管理者はTier-1をTier-0へ紐づける設定をするだけです。

中継セグメントのIPアドレスは明示的に指定も可能ですが、デフォルトではRFC6598でISP Shared Addressとして定義された予約アドレスの範囲より自動で払い出されます。具体的には100.64.0.0/10の予約アドレスのうち、100.64.0.0/16の範囲より払い出されます。Tier-0とTier-1はPoint to Point接続となるため、IPアドレスが2つあれば構成できます。そこで、Tier-1が追加されるたびに31bitで払い出しが行われます。

設定としてはTier-0の「T0-T1 中継サブネット」が該当し、ここに指定したサブネットの範囲内より31bitに分割してIPアドレスの払い出されます。Tier-0、Tier-1の中継サブネットへ接続しているインターフェイスをルータリンクと言います。

Tier-0 中継サブネットの設定箇所

Tier-1 -> Tier-0方向(デフォルトルート)

Tier-1のデフォルトルートは必ずTier-0になります。Tier-1へスタティックルートを追加することもできますが、デフォルトルートの変更はできません。

Tier-1 -> Tier-0方向(デフォルトルート)

Tier-0 -> Tier-1方向(ルートアドバタイズ設定)

一方、Tier-0からTier-1への経路は、ルートアドバタイズ設定により制御されます。

ルートアドバタイズ設定は、Tier-1ごとの個別の設定です。Tier-0へどの経路を自分(Tier-1)へルーティングして欲しいかを通知するための設定値です。指定したネットワークは、Tier-0のルーティングテーブルへ反映されます。

ルートアドバタイズ設定

ルートアドバタイズ設定は、Tier-1で参照しているネットワークを選択的にTier-0へ通知できます。Tier-1のインターフェイスで直接接続していないネットワークでも、該当するIPアドレスをTier-1上で構成していれば通知の対象とすることが出来ます。(例:インターフェイスで直接接続のないNAT向けのIPアドレス)

以下がルートアドバタイズで設定できるネットワークの一覧です。

  • すべてのスタティック ルート
  • DNS フォワーダのすべてのルート
  • 接続されているすべてのセグメントおよびサービス ポート
  • すべての IPsec ローカル エンドポイント
  • すべての NAT IP
  • すべてのロード バランサ VIP ルート
  • すべてのロードバランサ SNAT IP ルート
ルートアドバタイズ設定画面

また、ルートアドバタイズするネットワークを詳細にフィルタリングすることもできます。ルールを決めることにより、どのタイプのどのサブネットをアドバタイズするか指定ができます。

ルートアドバタイズのルール設定

構成例

以下のよう構成例で見てみましょう。

  • t1-gw01-A 配下のセグメントはそのまま t0-gw01 を経由して通信する
  • t1-gw01-B 配下のセグメントはSNATにより実セグメントを隠ぺいする
ルートアドバタイズの構成例

ちなみにNSXの管理画面からも、下記のようなネットワーク構成図を確認できます。

NSX管理画面のネットワーク構成図

ルートアドバタイズ設定はそれぞれ以下のように設定します。

  • t1-gw01-A 「接続されているすべてのセグメントおよびサービス ポート」のみ有効化
    • Tier-1へ接続しているセグメントのみをTier-0へ通知
    • 構成例では 192.168.1.0/24、192.168.2.0/24 が該当
t1-gw01-A のルートアドバタイズ設定
  • t1-gw01-B 「すべての NAT IP」のみ有効化
    • Tier-1で構成したNATのIPアドレスのみをTier-0へ通知
    • 構成例では 10.45.11.33/32 が該当
t1-gw01-B のルートアドバタイズ設定

それでは、どのようにTier-0のルーティングテーブルへ反映されているか確認します。
以下は、 t0-gw01 のルーティングテーブルを出力したものです。

en31(tier0_sr[1])> get route

Flags: t0c - Tier0-Connected, t0s - Tier0-Static, b - BGP, o - OSPF
t0n - Tier0-NAT, t1s - Tier1-Static, t1c - Tier1-Connected,
t1n: Tier1-NAT, t1l: Tier1-LB VIP, t1ls: Tier1-LB SNAT,
t1d: Tier1-DNS FORWARDER, t1ipsec: Tier1-IPSec, isr: Inter-SR,
ivs: Inter-VRF-Static, > - selected route, * - FIB route

Total number of routes: 11

t0s> * 0.0.0.0/0 [1/0] via 10.45.11.254, uplink-283, 5d00h32m
t0c> * 10.45.11.0/24 is directly connected, uplink-283, 5d00h33m
t1n> * 10.45.11.33/32 [3/0] via 100.64.0.3, downlink-297, 5d00h17m # ★2 1-gw01-B宛のルート
t0c> * 100.64.0.0/31 is directly connected, downlink-294, 5d00h31m
t0c> * 100.64.0.2/31 is directly connected, downlink-297, 5d00h30m
t0c> * 169.254.0.0/24 is directly connected, backplane-279, 5d00h33m
t1c> * 192.168.1.0/24 [3/0] via 100.64.0.1, downlink-294, 5d00h21m # ★1 t1-gw01-A 宛のルート
t1c> * 192.168.2.0/24 [3/0] via 100.64.0.1, downlink-294, 5d00h20m # ★1 t1-gw01-A 宛のルート
t0c> * fceb:ec9e:1599:6800::/64 is directly connected, downlink-297, 5d00h30m
t0c> * fceb:ec9e:1599:8c00::/64 is directly connected, downlink-294, 5d00h31m
t0c> * fe80::/64 is directly connected, backplane-279, 5d00h33m
Mon Mar 31 2025 UTC 08:06:51.975

まず★1の部分です。先頭に「t1c」とあり、出力上部のフラグを確認すると「t1c - Tier1-Connected」が該当します。つまり、t1-gw01-A の直接接続宛の経路ということになります。ネクストホップはt1-gw01-Aのルータリンクが指定されています。

次に★2の部分です。先頭に「t1n」とあり、出力上部のフラグを確認すると「Tier1-NAT」が該当します。つまり、t1-gw01-B で構成したNATのIPアドレス宛の経路ということになります。これはNATの構成にのみ使用されており、インターフェイスが接続しているネットワークとは紐づいていません。ネクストホップはt1-gw01-Bのルータリンクが指定されています。

まとめ

今回は仮想ルータ(Tier-0、Tier-1)間のルーティングがどのように構成されているか見てきました。
是非次回の更新もご覧ください。ありがとうございました。