SRE部 佐竹です。
今回のブログでは Direct Connect Gateway と Transit Gateway について記載します。
- はじめに
- VPC 間の通信(折り返し)が発生する実装
- VPC 間の通信(折り返し)が発生する理由
- VPC 間の通信(折り返し)を発生させない実装
- VPC 間の通信が行われない(折り返さない)実装
- VPC 間の通信が行われない(折り返さない)構成で VPC 間通信を行う実装
- まとめ
はじめに
本事象は2020年9月に弊社のとある環境にて明らかになった仕様です。
この仕様は Direct Connect Gateway (DXGW) と Transit Gateway (TGW) を併用する場合の設計に大きな影響がありますので、設計においては十分に注意して頂く必要があります。
VPC 間の通信(折り返し)が発生する実装
DXGW と TGW を併用し以下の構成図の通りの設計を行ったとします。
VPC01(10.1.0.0/16) と VPC02(10.2.0.0/16) 間には VPC Peering が実装されておらず、この構成図であれば VPC01 ⇔ VPC02 間は通信が不可能なように見えます。
ですが、実際に本構成を実装したところ、 VPC01 ⇔ VPC02 間は通信が可能となっています。本事象は AWS より「ドキュメントに記載はないが、期待された動作である」と連絡があったことも添えさせて頂きます。
VPC 間の通信(折り返し)が発生する理由
折り返しは DXGW において行われます。その理由ですが「Transit Gateway の Route Table の Direct Connect Gateway へ向かうルートに VPC のネットワークアドレス範囲が内包されているため」となります。
構成図内 VPC01 と VPC02 に対する経路において CIDR 内に記載のある「10.0.0.0/8」には VPC01(10.1.0.0/16) も VPC02(10.2.0.0/16) も含まれています。このような Route Table を記載した場合は、DXGWで通信が折り返されてしまいます。
VPC 間の通信(折り返し)を発生させない実装
「Transit Gateway の Route Table の Direct Connect Gateway へ向かうルートに VPC のネットワークアドレス範囲が内包されている」経路を記載したい場合、上図の通り「blackhole(ブラックホールルート)」を追加することで VPC 間通信を遮断することが可能となります。
もしくはオンプレミス側の CIDR (Direct Connect Gateway へ向かうルート) を VPC01 と VPC02 を避けて全て記載するという対応も可能ですが、この記載方法は明確に通信を遮断しているわけではないため(つまり運用管理上遮断しているとわかりにくいため)、そのような記載をする場合でもブラックホールルートを併記するのがより良いでしょう。
ブラックホールルートについては、以下のブログも合わせてご参照ください。
VPC 間の通信が行われない(折り返さない)実装
反対に、DXGW で折り返しが起きない経路は上図の通りです。
「Transit Gateway の Route Table の Direct Connect Gateway へ向かうルートに VPC のネットワークアドレス範囲が内包されている」場合に折り返しが起きるため、黄色で囲った箇所の通り「172.16.0.0/12」であれば VPC01 と VPC02 が内包されません。
VPC 間の通信が行われない(折り返さない)構成で VPC 間通信を行う実装
VPC 間の通信が行われない構成を VPC 間の通信が行われる構成に変更したい場合は、TGW で制御をすれば問題ありません。
上図の通り、Route Table において VPC01 と VPC02 それぞれの宛先を記載して通信を行わせることで対応が可能です。
なお、本対応は代わりに VPC Peering を実装しても同様の動作となります。
まとめ
今回のブログでは Direct Connect Gateway と Transit Gateway を併用するシーンにおいて、「Transit Gateway の Route Table の Direct Connect Gateway へ向かうルートに VPC のネットワークアドレス範囲が内包されている」場合に折り返しが起きる件を AWS 環境構成図を添えてご説明させて頂きました。
何かの参考になれば幸いです。なお、本記事は2020年9月頃に発生した事象を振り返っての記載になりますため、今現在の動作と何らかの差が発生している可能性もございます。そのため、ネットワークの実装にあたっては動作確認を確実に行って頂けますようお願い致します。
ではまたお会いしましょう。
佐竹 陽一 (Yoichi Satake) エンジニアブログの記事一覧はコチラ
マネージドサービス部所属。AWS資格全冠。2010年1月からAWSを利用してきています。2021-2022 AWS Ambassadors/2023-2024 Japan AWS Top Engineers/2020-2024 All Certifications Engineers。AWSのコスト削減、最適化を得意としています。