🔀 AWS Networking / Transit Gateway

Transit Gateway
アプライアンスモード完全ガイド

ステートフルアプライアンスを使うなら必須の設定。たとえ話と図解で「なぜ必要か」「何が変わるか」をゼロから理解

まず結論:アプライアンスモードとは?

Transit Gateway アタッチメントの設定オプション。有効にすると「同じ通信フローは常に同じアプライアンスを往復する」ことが保証されます。

🔒

フローの一貫性を保証

同じ通信(行き・帰り)が必ず同じファイアウォールを通過。セッション情報の不整合によるパケット破棄を防止。

🌐

AZをまたぐ場合も安心

送信元と宛先が異なるAZにいても、トラフィックは一貫して同じAZのアプライアンスを経由する。

⚙️

共有VPCのアタッチメントで有効化

ステートフルアプライアンスが存在するVPCのTGWアタッチメントで設定する。VPC単位ではなくアタッチメント単位。

たとえ話:オフィスビルのセキュリティゲート

Transit Gateway のアプライアンスモードを「オフィスビルの入退館管理」にたとえて理解しましょう。

🏢 登場人物と対応関係

大きなビジネスパークに複数のオフィスビル(VPC)があり、ビル間の移動には中央の連絡通路(Transit Gateway)を通ります。連絡通路にはフロアごとにセキュリティゲート(ファイアウォール)が設置されています。

🏢
オフィスビル = VPC 複数のビルがビジネスパーク内に存在。それぞれ独立したネットワーク空間。
🔀
中央連絡通路 = Transit Gateway ビル間を行き来するための共用通路。全ビルの中心ハブ。
🛗
フロア = アベイラビリティゾーン (AZ) 同じビル内でも1F・2Fと分かれており、それぞれにゲートがある。
🛂
セキュリティゲート = ステートフルアプライアンス 各フロアにいる警備員。入館者の顔と訪問先を記録して覚えている。
Transit Gateway のデフォルト動作

まず、アプライアンスモードを有効にしない場合のデフォルト動作を理解しましょう。

📌

AZスティッキネス(同一AZ優先)

TGWはデフォルトで「同じAZ内にトラフィックを留めよう」とします。AZ1から発信されたトラフィックは、宛先VPCのAZ1へ到達します。

🏢 たとえ:ビルAの1F社員がビルBに行くとき、連絡通路の1F(同じフロア)を通って到着する。これがデフォルト動作。
⚠️

クロスAZ時の問題

送信元がAZ1、宛先がAZ2の場合、TGWは最短パスを選びます。行きはAZ1の警備員を通り、帰りはAZ2の警備員を通る可能性があります。

🚨 たとえ:1Fの警備員に「ビルBの2Fの田中さんに会いに行きます」と伝えて通過。帰りは2Fの通路から戻るが、2Fの警備員は入館記録を持っていない→不審者として止められる!
たとえ話で追体験する「問題発生→解決」

実際のシナリオをオフィスビルのたとえで順を追って見てみましょう。

1

🚶 ビルAの1F社員がビルCの2F社員を訪問したい

VPC-Aの AZ1 にあるインスタンスが、VPC-C の AZ2 にあるインスタンスと通信を開始します。通信はまず中央連絡通路(TGW)を経由し、セキュリティVPC(共有VPC)のファイアウォールでチェックされます。

🏢 ビルA 1F → 連絡通路 → セキュリティビル → ビルC 2F
2

🛂 行き:1Fの警備員がチェック&記録

トラフィックは共有VPCの AZ1 にあるファイアウォール(1Fの警備員)を通過。警備員はこの通信のセッション情報(送信元、宛先、ポート番号など)を記録し、「通過許可」を出します。

🛂 1Fの警備員:「了解、行ってらっしゃい」とメモに記録
3

🚨 帰り:別のフロアの警備員を通ってしまう!

帰りのトラフィック(応答パケット)は宛先がAZ1ですが、TGWの最短パス選択により AZ2 のファイアウォール(2Fの警備員)を経由します。2Fの警備員にはこの通信の記録がないため、不正な通信として遮断(ドロップ)してしまいます。

🚫 2Fの警備員:「記録にない人だ。通過不可!」
4

✅ 解決策:アプライアンスモードで「常に同じ警備員」

アプライアンスモードを有効にすると、TGWは同じ通信フローを常に同じAZのアプライアンスにルーティングします。行きも帰りも必ず1Fの警備員を通るようになり、セッション情報が正しく照合されて通信が成功します。

✅ 1Fの警備員:「さっき通した人だね。お帰り!」
図解:アプライアンスモード OFF vs ON

アプライアンスモード無効時と有効時のトラフィックフローの違いを視覚的に比較します。

❌ アプライアンスモード OFF

行きと帰りで別のFWを通過

TGWがAZごとに最短パスを選ぶため、往路と復路で異なるファイアウォールを通過する。

VPC-A(送信元) VPC-C(宛先) 共有VPC(ファイアウォール) AZ1 AZ2 AZ1 AZ2 AZ1 AZ2 EC2 EC2 🛡️ FW-1 (AZ1) 🛡️ FW-2 (AZ2) TGW 記録なし!遮断 往路(FW-1経由) 復路(FW-2経由 → 遮断)
往路はAZ1のFW-1を通過するが、復路はAZ2のFW-2を通ってしまう。FW-2にはセッション記録がないため、パケットがドロップされる。
✅ アプライアンスモード ON

行きも帰りも同じFWを通過

AZ情報が保持され、同じフローのパケットは常に同じアプライアンスを往復する。

VPC-A(送信元) VPC-C(宛先) 共有VPC(ファイアウォール) AZ1 AZ2 AZ1 AZ2 AZ1 AZ2 EC2 EC2 🛡️ FW-1 (AZ1) 🛡️ FW-2 (AZ2) TGW ✦ App Mode 同じFW!成功 往路(FW-1経由) 復路(FW-1経由 → 成功!)
アプライアンスモードにより、往路・復路ともに同じAZ1のFW-1を経由。セッション状態が正しく照合され、通信が成功する。
ステートフルアプライアンスが「同じFW」を要求する理由

なぜ別のファイアウォールを通ってはいけないのか、ステートフル検査の仕組みから理解します。

📋

セッション状態の追跡

ファイアウォールは通過するパケットの「誰が」「どこへ」「どのポートで」を記録。この記録はそのFWインスタンスのメモリ上にのみ存在する。

🔄

往復の照合が必須

帰りのパケットが到着すると、FWは「行きの記録」と照合する。記録がなければ「不正な通信」と判断してドロップする。

🏥

FW間で状態は共有されない

各AZのFWインスタンスは独立して動作。AZ1のFWの記録をAZ2のFWは知らない。だから同じFWを通る必要がある。

💡

設定する場所に注意!

アプライアンスモードは「ステートフルアプライアンスが存在するVPCのTGWアタッチメント」で有効にします。つまり共有VPC(セキュリティVPC)のアタッチメントで設定します。送信元VPCや宛先VPCではなく、ファイアウォールがデプロイされているVPCのアタッチメントが対象です。VPC全体ではなく、TGWアタッチメント単位の設定である点もポイントです。

設定方法

AWS CLI と CloudFormation での有効化手順を確認します。

⌨️ AWS CLI での有効化

既存のTGW VPCアタッチメントに対してアプライアンスモードを有効にします。

AWS CLI
# 共有VPC(ファイアウォールVPC)のTGWアタッチメントで有効化 aws ec2 modify-transit-gateway-vpc-attachment \ --transit-gateway-attachment-id tgw-attach-0abc123def456 \ --options ApplianceModeSupport=enable

📄 CloudFormation での設定

テンプレートでTGWアタッチメントを定義する際に指定します。

CloudFormation (YAML)
SecurityVpcAttachment: Type: AWS::EC2::TransitGatewayVpcAttachment Properties: TransitGatewayId: !Ref TransitGateway VpcId: !Ref SecurityVpc SubnetIds: - !Ref SecuritySubnetAZ1 - !Ref SecuritySubnetAZ2 Options: ApplianceModeSupport: enable
⚠️ アプライアンスモードの変更は既存の接続に影響を与える可能性があります。メンテナンスウィンドウ中に変更を実施し、十分にテストすることを推奨します。また、設定変更中に一時的な接続断が発生する可能性があります。
よくある質問
アプライアンスモードはどんなときに必要? +
ステートフルなファイアウォール(Palo Alto、Fortinet、Check Pointなど)やIDS/IPSアプライアンスをTransit Gateway経由で利用する場合に必要です。これらのアプライアンスは通信の行き帰りを同じインスタンスで処理する必要があるため、アプライアンスモードを有効にしないと通信が正しく機能しません。
送信元と宛先が同じAZなら不要? +
同じAZ内であればデフォルトのAZスティッキネスにより問題が起きにくいですが、AZ障害時のフェイルオーバーや将来的なアーキテクチャ変更に備えて、アプライアンスモードを常に有効にしておくことが推奨されます。AZ構成が確実に固定される保証はないため、予防的に設定するのがベストプラクティスです。
パフォーマンスへの影響はある? +
アプライアンスモードを有効にすると、トラフィックが常に特定のAZのアプライアンスを経由するため、クロスAZ通信が増加する場合があります。クロスAZ通信にはデータ転送料金が発生するため、コスト面での影響を考慮してください。ただし、レイテンシへの影響は通常わずかです。
Gateway Load Balancer との違いは? +
Gateway Load Balancer (GWLB) もステートフルアプライアンスの負荷分散に使われますが、TGWアプライアンスモードとは異なるアプローチです。GWLBはGENEVEトンネルを使って透過的にトラフィックを挿入し、ヘルスチェックや自動フェイルオーバーを提供します。一方、TGWアプライアンスモードはルーティングベースで同じAZのアプライアンスに誘導します。より高度な負荷分散やヘルスチェックが必要な場合はGWLBの利用を検討してください。
たとえ話の「警備員」で理解を確認したい +
まとめると:ビジネスパーク(AWS環境)内の複数のビル(VPC)間で人(トラフィック)が移動するとき、中央連絡通路(TGW)のセキュリティゲートで必ずチェックを受けます。各フロア(AZ)にいる警備員(ファイアウォール)は入退館記録を個別に管理しています。アプライアンスモードがないと、行きと帰りで別のフロアの警備員に当たる可能性があり、記録がないため止められます。アプライアンスモードを有効にすると「行きに通った警備員のところに帰りも必ず通る」ルールが適用され、スムーズに通過できるようになります。

Created by SSuzuki1063

AWS SAP Learning Resources