AWS / SAP-C02

セクション 01 · タスク 1.1 · SAP-C02-004

AWS Transit Gatewayによる大規模ネットワーク設計

AWS Transit Gateway / アタッチメント / TGWルートテーブル / 関連付け / ルート伝達 / ネットワークセグメンテーション

このページのゴール

Transit Gatewayを選択した後、どのVPCからどのVPCへ通信させるかをTGWルートテーブルで設計できることを完成条件にします。

本番VPC × 20
開発VPC × 15
共有サービスVPC × 2
オンプレミス

要件:
本番同士          → 通信可能
開発同士         → 通信可能
本番 ↔ 開発 → 通信禁止
本番 → 共有      → 通信可能
開発 → 共有     → 通信可能
共有 → 双方             → 戻り通信可能

Transit Gatewayを1台作り、すべてをアタッチするだけでは完成ではありません。通信関係を決定するのがTransit Gatewayルートテーブルです。

1. Transit Gatewayを構造として見る

Transit Gatewayを中央ルーターとして使う場合、

        VPC-A
          │
        VPC-B
          │
VPC-C ── TGW ── VPC-D
          │
      オンプレミス

実際の通信経路を理解するには、次の構成要素を分けて考えます。

VPC-A
  │
  │ アタッチメント
  ▼
Transit Gateway
  │
  ├─ TGWルートテーブル A
  ├─ TGWルートテーブル B
  └─ TGWルートテーブル C
  1. アタッチメント
  2. 関連付け
  3. ルート伝達
  4. TGWルート

2. アタッチメント

Transit GatewayへVPCなどのネットワークを接続するための接続点がアタッチメントです。

アタッチメント主な用途
VPCAmazon VPCを接続
Site-to-Site VPNVPN接続
Direct ConnectゲートウェイAWS Direct Connect関連の接続
Transit Gatewayピアリング別Transit Gateway
ConnectSD-WAN等のサードパーティーアプライアンス
VPN ConcentratorVPNコンセントレータ接続
クライアントVPNクライアントVPNエンドポイント
ネットワーク機能AWS Network Firewall等のネットワーク機能

Transit Gatewayの基本となるVPCアタッチメントを中心に仕組みを確認します。

3. VPCアタッチメントではAZごとにサブネットを選択する

VPCをTransit Gatewayへアタッチするときは、Transit Gatewayとの通信に使用するAZについて、各AZから1つのサブネットを指定します。Transit Gatewayは選択されたサブネットへネットワークインターフェイスを配置して通信します。

VPC-A

AZ-A
├─ TGWアタッチメント用サブネット A
├─ アプリ サブネット A
└─ DB サブネット A

AZ-B
├─ TGWアタッチメント用サブネット B
├─ アプリ サブネット B
└─ DB サブネット B

TGWアタッチメント用サブネットだけがTGWを利用できるという意味ではありません。適切なVPCルートがあれば、同じAZ内のほかのサブネットからもTGWへ通信できます。

4. VPCアタッチメントでAZ選択を忘れない

AZ-A → TGWアタッチメントあり
AZ-B → TGWアタッチメントあり
AZ-C → TGWアタッチメントなし

あるAZのリソースからTGWへトラフィックを送るには、そのAZでTransit Gatewayアタッチメント用サブネットが有効になっている必要があります。

VPCをTGWへアタッチした = 全AZが自動的にTGWへ接続された、ではありません。

5. ルーティングは2段階ある

VPC-AからVPC-Bへ送信するとき、ルーティングは1回ではありません。

EC2
 │
 ▼
VPC-Aルートテーブル
 │
 ▼
Transit Gateway
 │
 ▼
TGWルートテーブル
 │
 ▼
VPC-Bアタッチメント
 │
 ▼
VPC-B

VPCルートテーブルとTransit Gatewayルートテーブルは別物です。

6. VPCルートテーブルの役割

例えば、VPC-Aが10.1.0.0/16、VPC-Bが10.2.0.0/16なら、VPC-A側には次のようなルートが必要です。

宛先    ターゲット
10.1.0.0/16    local
10.2.0.0/16    tgw-xxxx

組織のアドレス計画に応じて、10.0.0.0/8 → tgw-xxxxのような集約ルートを使うこともできます。VPCからTransit Gatewayへトラフィックを送るには、VPCサブネットのルートテーブルにTGWをターゲットとするルートが必要です。

7. TGWルートテーブルの役割

パケットがTGWまで到達した後、どのアタッチメントへ転送するかを決めるのがTransit Gatewayルートテーブルです。

TGWルートテーブル

宛先    ターゲット
10.1.0.0/16    VPC-Aアタッチメント
10.2.0.0/16    VPC-Bアタッチメント
10.3.0.0/16    VPC-Cアタッチメント

TGWは送信先IPアドレスを見てネクストホップのアタッチメントを選択するレイヤー3 ルーターとして動作します。

8. 関連付け(Association)

標準の宛先ベースのルートテーブル方式では、関連付け(Association)が、そのアタッチメントからTransit Gatewayへ入ってきたトラフィックがどのTGW ルートテーブルを参照するかを決めます。

本番VPC アタッチメント
        │
        │ 関連付け
        ▼
      RT-Prod

設計上は「この送信元ネットワークへ、どのルーティングポリシーを適用するか」と考えます。

制約意味
標準方式:1 アタッチメント → 1 TGW ルートテーブル同時に複数のTGW ルートテーブルへ関連付けできない
1 TGW ルートテーブル ← 複数アタッチメント複数の送信元へ同じ宛先ベースルーティングポリシーを適用できる
PBR方式:1 アタッチメント → 1 ポリシーテーブルポリシーテーブルを関連付ける場合、そのアタッチメントへ標準TGW ルートテーブルを同時には関連付けない

9. ルート伝達(伝播)と関連付けの違い

ルート伝達は、アタッチメントが持つ到達可能なプレフィックスを、どのTGW ルートテーブルへ知らせるかを決めます。

VPC-A アタッチメント
  10.1.0.0/16
       │
       ├─ 伝播 → RT-Prod
       └─ 伝播 → RT-Shared

1つのアタッチメントのルートは、必要に応じて複数のTGW ルートテーブルへ伝播できます。

機能設計責任
関連付け送信元アタッチメントがどのルートテーブルを見るか
伝播アタッチメントの到達可能プレフィックスをどのルートテーブルへ知らせるか

この2つを分けることが、複数のルーティングドメインを設計する中心です。

現行仕様:ポリシーベースのルーティング(PBR)とポリシーテーブル

ポリシーベースのルーティング(PBR)では、アタッチメントへ標準TGW ルートテーブルの代わりにポリシーテーブルを関連付けられます。1つのアタッチメントはポリシーテーブルまたはTGW ルートテーブルのどちらか一方に関連付け、両方へ同時には関連付けません。

ポリシーテーブルはトラフィックを分類するルールを持ちます。独自に設定するカスタマーマネージドルールは番号の小さい順に評価され、送信元CIDR / 宛先CIDR / プロトコル、TCP / UDPでは送信元ポート / 宛先ポートも条件にできます。最初に一致したルールが対象 TGW ルートテーブルを選び、どのルールにも一致しなければパケットは暗黙的な拒否として破棄されます。

送信元アタッチメント
        │
        ▼
   ポリシーテーブル
   ├─ ルール 10: 本番 + TCP/443 → RT-Inspection
   └─ ルール 20: 任意           → RT-Default
        │
        ▼
対象TGWルートテーブル
        │
        ▼
宛先アタッチメント
方式転送判断向く要件
標準TGW ルートテーブル宛先 IPとルートテーブルのルート送信先プレフィックス中心のルーティング / 分離
ポリシーベースのルーティング送信元 / 宛先 IP、ポート、プロトコル → 対象ルートテーブル同じ宛先でもアプリケーションやトラフィック種別ごとに経路を変える

判断ポイント:ポリシーテーブルはTGW ルートテーブルそのものを不要にする機能ではありません。パケット属性でどのTGW ルートテーブルを使うかを選ぶ前段として働きます。

10. 単純な全VPC相互通信

VPC-A / B / Cをすべて相互通信させるだけなら、全アタッチメントを同じTGW ルートテーブルへ関連付けし、各VPCのルートを同じテーブルへ伝播する構成が単純です。

RT-All
10.1.0.0/16 → VPC-A
10.2.0.0/16 → VPC-B
10.3.0.0/16 → VPC-C

VPC-A ─┐
VPC-B ─┼─ RT-All
VPC-C ─┘

ただし、本番と開発を分離したいなど通信方針が異なる場合は、同じルートテーブルへすべてを集約しません。

11. ネットワークセグメンテーション

標準のルートテーブル方式では、Transit GatewayにACLのような拒否ルールを書くのではなく、送信元ごとに参照するTGW ルートテーブルを分け、到達させたくないプレフィックスを持たせないことでルーティングドメインを分離します。PBRを採用する場合は、ポリシールールでトラフィックを分類して適切な対象ルートテーブルへ振り分ける設計も選択できます。

本番 ↔ 本番      許可
開発  ↔ 開発       許可
本番 ↔ 開発       拒否
本番 → 共有    許可
開発  → 共有    許可

Transit GatewayではACLのように「本番→開発を拒否」と書くのではなく、送信元ごとに参照するTGW ルートテーブルを分け、到達させたくないプレフィックスを持たせないことでルーティングドメインを分離します。

本番 アタッチメント
      │ 関連付け
      ▼
    RT-Prod
      ├─ 本番 プレフィックス
      └─ 共有 プレフィックス
      × 開発 プレフィックス

開発 アタッチメント
      │ 関連付け
      ▼
    RT-Dev
      ├─ 開発 プレフィックス
      └─ 共有 プレフィックス
      × 本番 プレフィックス

共有 アタッチメント
      │ 関連付け
      ▼
   RT-Shared
      ├─ 本番 プレフィックス
      ├─ 開発 プレフィックス
      └─ 共有 プレフィックス

この構造により本番と開発を分離しながら、双方から共有サービスを利用できます。

12. 静的ルートと補足機能

TGW ルートテーブルには伝播で学習したルートだけでなく、管理者が明示する静的ルートも設定できます。

0.0.0.0/0
   ↓
検査VPC / エグレスVPCのアタッチメント

集中型の外向き通信や検査など、明示的に次ホップを決めたい場合に利用します。

現在仕様の補足: Transit Gateway ピアリングアタッチメントへのルートは静的ルートとして設定します。また、特定プレフィックスを明示的に破棄するブラックホールルートも利用できます。ネットワーク 分離ではまず関連付け / 伝播によって必要な到達性だけを構成し、ブラックホールルートは明示的な破棄要件がある場合に使用します。

13. TGW ルートの選択

標準方式では関連付け先TGW ルートテーブル、PBR方式ではポリシールールが選んだ対象 TGW ルートテーブルの中でルート選択を行います。ルートテーブルに複数候補がある場合は、まず最長プレフィックス一致でより具体的な宛先が選ばれます。

10.0.0.0/8   → Attachment-A
10.10.0.0/16 → Attachment-B

宛先: 10.10.5.10
→ /16 の Attachment-B

同じ宛先 CIDRが競合する場合は、静的ルートが伝播ルートより優先します。

10.20.0.0/16 → VPC-A  伝播
10.20.0.0/16 → VPC-B  静的

→ VPC-B

接続種別ごとの詳細な優先順位も現行仕様として存在しますが、ルート選択ではまず静的ルートと伝播ルートの関係を確実に区別します。

14. 通信成立にはVPC側とTGW側の両方が必要

Transit Gateway通信はTGW ルートテーブルだけでは完成しません。

送信元リソース
↓
送信元サブネットルートテーブル
↓
Transit Gateway
↓
送信元アタッチメントの関連付け先TGWルートテーブル
↓
宛先ルート
↓
宛先アタッチメント
↓
宛先VPC
↓
戻りルートも同様に確認

関連付けだけ設定しても宛先ルートは増えません。伝播してもVPC側からTGWへ向けるルートがなければパケットはTGWへ届きません。また往路だけでなく復路のルーティングも必要です。

15. デフォルトルートテーブルと明示的な分離

全VPC相互通信が要件の小規模構成なら、デフォルト TGW ルートテーブルへ集約する方式でも成立します。

一方、本番 / 開発 / 共有 / セキュリティ / オンプレミスで通信方針が異なる環境では、ルーティングドメインを明示的に分けた方が設計意図を表現しやすくなります。

RT-Prod
RT-Dev
RT-Shared
RT-Security

ルートテーブル数を増やすこと自体が目的ではなく、異なる通信方針を別ルーティングポリシーとして表現する必要があるかで判断します。

16. SAP-C02での設計手順

Transit Gatewayを採用
        │
        ▼
何を接続する?
→ アタッチメント
        │
        ▼
VPC アタッチメントで利用するAZを確認
        │
        ▼
VPCからTGWへ送るルートを設定
        │
        ▼
転送判断は宛先プレフィックスだけで足りる?
   ├─ はい → 標準TGWルートテーブルを関連付け
   │          │
   │          └→ 伝播 / 静的ルート
   │
   └─ いいえ  → ポリシーテーブルを関連付け
              │
              └→ 送信元 / 宛先 / ポート / プロトコルで分類
                         │
                         └→ 対象TGWルートテーブル
        │
        ▼
必要なルーティングドメイン / ネットワーク分離を構成
        │
        ▼
往路・復路を確認

17. 混同ポイント

  • アタッチメントしただけでは全VPCが自動相互通信しない:VPC ルートとTGW ルートの両方が必要です。
  • 関連付けはルート登録ではない:標準方式では送信元アタッチメントが参照するTGW ルートテーブルを決めます。
  • 標準方式では1 アタッチメントのTGW ルートテーブル関連付け先は1つ:PBRを使うアタッチメントは、TGW ルートテーブルではなくポリシーテーブルを関連付けます。両方へ同時には関連付けません。
  • ポリシーテーブルはルートテーブルの代替データベースではない:ルールでトラフィックを分類し、使用する対象 TGW ルートテーブルを選びます。
  • PBRは宛先だけでなく送信元 / ポート / プロトコルも判断材料にできる:同一宛先でもトラフィック種別により経路を変えたい場合の決定打になります。
  • ネットワーク 分離は不要なルートを見せないことが標準方式の基本:PBRではポリシールールによる分類も組み合わせられます。
  • 最長プレフィックス一致が先:対象 TGW ルートテーブル内で同じCIDRなら静的ルートが伝播ルートより優先します。
  • 往路だけでは不十分:宛先側から送信元へ戻るルートも確認します。

18. 設計要素の比較

要素何を決めるか
アタッチメントTransit Gatewayへ何を接続するか
VPC ルートテーブルVPCからどのトラフィックをTGWへ送るか
TGW ルートテーブルTGW内部でどこへ転送するか
関連付け標準方式で、送信元アタッチメントがどのTGW ルートテーブルを見るか
ポリシーテーブル / PBR送信元 / 宛先 / ポート / プロトコルでトラフィックを分類し、対象 TGW ルートテーブルを選ぶ
伝播アタッチメントのルートをどのTGW ルートテーブルへ知らせるか
静的ルート管理者が明示的に宛先と次 ホップを決める
ネットワーク 分離ルートテーブルを分け、必要なルートだけ保持する

19. まとめ

アタッチメント
→ ネットワークとTransit Gatewayの接続点

標準ルートテーブル方式
→ 送信元アタッチメントをTGWルートテーブルへ関連付け
→ 宛先プレフィックスでルート選択

ポリシーベースルーティング
→ アタッチメントをポリシーテーブルへ関連付け
→ 送信元 / 宛先 / ポート / プロトコルでルール評価
→ 最初に一致したルールが対象TGWルートテーブルを選択
→ 一致なしは暗黙的な拒否

伝播
→ 宛先情報
→ TGWルートテーブルへプレフィックスを知らせる

ネットワーク分離
→ ルートテーブルまたはポリシールールでルーティングドメインを分ける

ルーティング成立
→ VPC ルートテーブル
+
TGW転送ポリシー
+
対象TGWルートテーブル
+
戻り経路

最重要ポイント:Transit Gatewayを「全部をつなぐ装置」ではなく、複数ネットワークのルーティングポリシーを中央で設計する装置として理解します。

主要AWS公式資料

理解確認

このページの内容を18問で確認します。

理解確認18問へ →