[図解]TGWアタッチメント専用サブネットの必要性
AWSを利用している際にVPCやアカウント数が増えてきたり、「AWSと支店などの拠点間をVPN接続したい」となった際にTransit Gateway(以下TGW)を利用することがあると思います。
TGWを利用する際にはAWS公式ドキュメント Transit gateway design best practicesを参考に設計/構築することになるかと思います。
AWS公式ドキュメントでは、TGWをアタッチする各サブネット内にTGWアタッチメント専用サブネット(/28など小さくてOK)を作成することがベストプラクティスとされています。
AWS公式ドキュメント Transit gateway design best practices 抜粋
Use a separate subnet for each transit gateway VPC attachment. For each subnet, use a small CIDR, for example /28, so that you have more addresses for EC2 resources.
本記事では、TGWアタッチメント専用サブネットの必要性について図解していきます。
想定読者
- これからTGWを設計/構築する方
- ルートテーブル, SG, NACLなど、AWSのネットワークに関する基本知識がある方
- TGWアタッチメント専用サブネットがなぜ必要なのかよくわからない方
ベストプラクティスに沿ったネットワーク設計
まずは、以下のような要件があった際にハブとしてTGW利用した際のネットワーク図を例示します。
- AWS〜オンプレの閉域接続が必要(DX接続)
- North-South, East-West, インターネットへの全通信を監査(Inline Inspection VPC + Central Egress VPC)
- 複数拠点(支店)からSite-to-SiteのVPN接続でAWSへのアクセスを行いたい(TGW + VPN)
ベストプラクティスネットワーク図(例)
補足
- 赤枠がベストプラクティスとされているTGWアタッチメント専用サブネット
- ①〜⑦はSpoke VPC Aに配置されているEC2からインターネットへのOut-bound通信経路
※説明のために図を簡素に書いていますが、本来であれば少なくとも以下について追記および検討していく必要があります。
AZ冗長化
Spoke VPC A以外のSpoke VPC
Spoke VPC間の通信設計
ELBやDBなど、その他リソースのサブネットへの配置方法
VPCは一律/16で切って良いのか?
コンポーネント配置するサブネットは一律/24で切って良いのか?
DX冗長化はコスト的に高いので片方はSite-to-Site VPNとしておくか?
-
on-premisessとDXロケーションの回線を冗長化するか?
etc..
本題
さて、TGWアタッチメント専用サブネットはなぜ必要なのでしょうか?
答えは、AWS Black Belt Online SeminarのQAに載っています。
AWS Black Belt Online Seminar AWS Transit Gateway 資料及び QA 公開 抜粋
Q. VPC をアタッチするときに指定するサブネットをアタッチ専用のサブネットとする必要性について、もう少し具体例を挙げて説明していただきたいです。そのサブネットの内部のEC2 インスタンスのルーティングに影響あるとのことでしたが、どのような影響があるのか?などを教えていただきたいです。
A. Transit Gateway (TGW) のアタッチメントがついているサブネットと同一のサブネットに EC2 インスタンスが存在する場合に、その EC2 インスタンスはTGWと同じルーティングテーブルを参照します。
例えば インライン監査用の VPC の TGW の ENI がある Subnet 上に EC2 インスタンスを設置してしまうと、その EC2 インスタンスは必ずインライン監査のミドルボックス ENI に吸い込まれてしまい、EC2 インスタンスの意図するルーティングテーブルを作れなくなってしまいます。こういったことを防ぐために、TGW 専用のサブネットを作ることをお薦めしています。
こちらおよびこちらの資料を併せてご参照ください。
皆さんはこの文面を読んでパッと専用サブネットの必要性について理解できたでしょうか?
(私はなんとなく理解できましたが、、、いまいち腹落ちしなかったです。。)
しかし、バッドプラクティスネットワーク図を頭の中で思い浮かべ、ルートテーブルの意識 & 通信の流れを意識することで腹落ちさせることができました。
バッドプラクティスネットワーク図
赤枠部分がベストプラクティスからの変更点です(TGWアタッチメント専用サブネットを廃止)
一見すると、ベストプラクティスの時と同様に①〜⑦の通信は問題なく通っているように見えます。
QAを見返してみると以下の記述があります。
AWS Black Belt Online Seminar AWS Transit Gateway 資料及び QA 公開 抜粋
例えば インライン監査用の VPC の TGW の ENI がある Subnet 上に EC2 インスタンスを設置してしまうと、(以下略)
インライン監査用のVPC(Inline Inspection VPC)にEC2を追加してみましょう(以下図赤枠に追加)
一見問題ないように見えるのですが、「インライン監査用VPCのEC2からSpoke VPC AのEC2への通信はインライン監査させずに直接通信させたい」などの要件(※)が出てきた場合に困ります。
※例えば、コストや性能の問題でそのような要件が出てくる場合が考えられます
具体的には、インライン監査用VPC内のEC2は赤点線で囲ったNetwork Firewall Endpointへのルートテーブルを参照してしまいます。
そのため、緑色①〜②の経路で通信させたい場合でも、オレンジ色①〜③の経路でSpoke VPC AのEC2へ通信がされてしまいます。
結果としてインライン監査用VPCのTGWアタッチメントがあるサブネットにはEC2などのリソースが配置できず、IPアドレスが無駄に確保された状態となってしまいます。
まとめ
AWS Black Belt 公式QAにも「TGW 専用のサブネットを作ることをお薦め」との記載がある通り、あくまでお薦めという位置付けですが、/28という比較的小さなレンジでの専用サブネット確保ですので、「TGWアタッチメント専用サブネットがない場合の影響を理解しており、将来的な要件追加もない」などの状況でない場合には、TGWアタッチメント専用サブネットを作るのが良いと思います。
本記事を読んでいただいた皆様が「TGWアタッチメント専用サブネットの必要性」についての理解ができたなら幸いです。
Discussion