目指すはコレ!
同一リージョン内の異なる2つのAmazon VPC間で、Transit Gateway (TGW) を用いたプライベートネットワーク接続を確立すること。VPC-AのEC2インスタンスからTGWを経由してVPC-BのEC2インスタンスへpingコマンドで接続を確認します。なお、VPC-AのEC2にはAWS Systems Manager (SSM) を使ってセキュアにアクセスし、そこから通信テストを実施します。
この構成のメリット
TGWによるVPC接続は、スケーラブルかつセキュアなネットワーク設計を実現できます。
-
セキュアな通信経路
TGWはAWSの内部ネットワークを通じてVPC間通信を提供するため、インターネットを介さずセキュアな環境が構築できます。 -
スケーラブルな接続性
複数のVPCをハブアンドスポーク構成で簡単に接続可能。ピアリング接続のようにフルメッシュにする必要がありません。 -
運用の柔軟性と拡張性
ネットワーク構成の拡張やマルチアカウント構成への対応がしやすく、将来的な構成変更にも柔軟に対応可能です。
アーキテクチャ図
【Transit GatewayによるVPC間通信アーキテクチャ】

Transit Gatewayの基本用語と概念
Transit Gatewayとは???
複数のVPCやオンプレミス環境をハブ型構成で相互接続できるAWSサービス。 ピアリング接続とは異なり、スケーラブルかつセントラルな管理が可能。ルーティングも柔軟で、ルートテーブルを分けることでVPC間のアクセス制御も容易に行える。
アタッチメントとは???
VPC、VPN接続、またはDirect ConnectゲートウェイといったネットワークリソースをTransit Gatewayに接続するための論理的なリンク。 これにより、これらのネットワークがTransit Gatewayを介して相互に通信できるようになります。Transit Gatewayにトラフィックを流し込むための出入口となる接続点。
アソシエーション(関連付け)とは???
特定のアタッチメントをTransit Gatewayルートテーブルに紐づけること。 これにより、そのアタッチメントからのトラフィックが、どのルーティングルールに従うかが決まる。
プロパゲーション(伝播)とは???
Transit Gatewayアタッチメントに接続されたネットワークのルート(CIDRブロックなど)を、自動的にTransit Gatewayルートテーブルに伝播(学習)させる機能。 この設定を有効にすると、手動でルートを追加することなく、接続されたネットワークの情報をTransit Gatewayルートテーブルが自動的に認識し、ルーティングに利用できるようになる。
手順
VPCとプライベートサブネットの準備
VPC-A
-
CIDR
10.1.0.0/16 -
サブネット(EC2-A用)
10.1.1.0/24→ SSM接続 & pingの送信元 -
サブネット(TransitGateway用)
10.1.2.0/28 -
AZ
ap-northeast-1a
VPC-B
-
CIDR
10.2.0.0/16 -
サブネット(EC2-B用)
10.2.1.0/24→ ping受信先 -
サブネット(TransitGateway用)
10.2.2.0/28 -
AZ
ap-northeast-1a
TransitGateway用サブネット
セキュリティとネットワーク管理の明確化のために、TransitGateway専用のサブネットを作成することが推奨されいる。 他のリソースから分離することで、TGWのENIを保護し、ルーティングやセキュリティグループのルール適用をシンプルかつ効果的に行える。
また、TGW専用サブネットはTGWのENI以外の用途には使わないため、必要最小限のIPアドレスで十分であり、ネットワークリソースの効率的な利用のために小さいサイズ(xxx.xxx.xxx.xxx/28) にすることが推奨されている。
TransitGatewayの作成と設定
1. TGW作成
-
DNSサポート
Transit Gateway にアタッチされた VPC のドメイン名の解決を有効にする -
セキュリティグループ参照サポート
Transit Gateway にアタッチされた VPC のセキュリティグループ参照を有効にする -
デフォルトルートテーブルの関連付け
新しいTransit Gatewayアタッチメントを作成した際に、自動的にTransit Gatewayの「デフォルトルートテーブル」に紐づけられる設定
→ 今回は設定をOFFにして手動で設定 -
デフォルトルートテーブル伝播
新しいTransit Gatewayアタッチメントを作成した際に、そのアタッチメントに接続されたネットワークのルート情報(CIDRブロックなど)が、自動的にTransit Gatewayの「デフォルトルートテーブル」に登録される設定
→ 今回は設定をOFFにして手動で設定
TGWルートテーブル作成
-
Transit Gateway ID
作成したTGW ID
2. アタッチメント作成
VPC-A、VPC-Bそれぞれのアタッチメントを作成します。
-
Transit Gateway ID
作成したTGW ID -
アッチメントタイプ
VPC -
VPC ID
VPC-A / VPC-B -
サブネットID
VPC-AのTGW専用サブネット / VPC-BのTGW専用サブネット
3. アソシエーション設定
作成した2つのアタッチメントをTransit Gatewayルートテーブルに紐づけます。
4. プロパゲーション設定
作成した2つのアタッチメントのCIDR情報を自動的にTransit Gatewayルートテーブルに伝播させます。
Transit Gatewayルートテーブルに追加される
【Transit Gatewayルート画面】

EC2インスタンスの準備
EC2-A(VPC-A)
-
サブネット
10.1.1.0/24 -
AMI
Amazon Linux 2023 AMI -
インスタンスタイプ
t2.micro -
パブリックIPの自動割り当て
無効化 -
IAMインスタンスプロフィール(SSM接続用)
AmazonSSMManagedInstanceCoreポリシーをアタッチしたロールを付与 -
セキュリティグループ設定
Ping接続用、SSM接続用の設定が必要
セキュリティグループ設定参照
EC2-B(VPC-B)
-
サブネット
10.2.1.0/24 -
AMI
Amazon Linux 2023 AMI -
インスタンスタイプ
t2.micro -
パブリックIPの自動割り当て
無効化 -
セキュリティグループ設定
Ping接続用の設定が必要
セキュリティグループ設定参照
SSM接続に必要な準備
IFエンドポイント作成、IAMロール作成、セキュリティグループ設定などの準備が必要。
詳細は以下を参照。
ルートテーブルとセキュリティグループの設定
ルートテーブル
VPC-A
- TransitGateway用サブネット
- 宛先:
10.1.0.0/16、ターゲット:local
- 宛先:
- EC2-A用サブネット
- 宛先:
10.1.0.0/16、ターゲット:local - 宛先:
10.2.0.0/16、ターゲット:tgw-xxxxxxxxxxxxxx
- 宛先:
VPC-B
- TransitGateway用サブネット
- 宛先:
10.2.0.0/16、ターゲット:local
- 宛先:
- EC2-B用サブネット
- 宛先:
10.2.0.0/16、ターゲット:local - 宛先:
10.1.0.0/16、ターゲット:tgw-xxxxxxxxxxxxxx
- 宛先:
【TransitGatewayルートテーブル】
- CIDR:
10.1.0.0/16、アタッチメントID:tgw-attach-xxxxx(VPC-A) - CIDR:
10.2.0.0/16、アタッチメントID:tgw-attach-xxxxx(VPC-B)
セキュリティグループ
VPC-A
-
EC2-A
-
Ping接続用
■インバウンド
なし
■アウトバウンド
タイプ:すべての ICMP - IPv4、送信先:10.2.0.0/16(VPC-BのCIDR) -
SSM接続用
■インバウンド
タイプ:HTTPS(443)、送信元:sg-IfEndPoint(IFエンドポイント用)
■アウトバウンド
なし
-
Ping接続用
-
IFエンドポイント用(SSM接続)
-
共通
■インバウンド
タイプ:HTTPS(443)、送信元:sg-SSM-EC2-A(EC2-AのSSM接続用)
■アウトバウンド
なし
-
共通
VPC-B
-
EC2-B
-
Ping接続用
■インバウンド
タイプ:すべての ICMP - IPv4、送信元:sg-ICPM-EC2-A(Ping接続EC2-A用)
■アウトバウンド
なし
-
Ping接続用
セキュリティグループ参照サポート
別VPCのSGが参照できるのはインバウンドルール作成時のみ。
アウトバウンドルール作成時は参照できないので、CIDRを設定する必要がある。
[以下参考]
SSMによるEC2接続と通信確認
SSM Session開始
aws ssm start-session --target <インスタンスID(EC2-A)>
Ping実行
ping <EC2-BのプライベートIPアドレス>
【Ping疎通確認結果画面】

結果として、EC2-A から EC2-B に対する Ping が成功すれば、TGW経由の通信が正しく設定されていることが確認できます。
今回の学び
-
TGWのセキュリティグループ参照サポート
TGW経由の通信ではこの設定を有効することで、異なるVPCのSGを参照できるようになる!
※インバウンドルール作成時のみ!アウトバウンドルール作成時には参照できない!
(知らずにSG設定を行っていたが、Ping通信が失敗した。CIDRを指定したら成功したのでSGが参照できていない事が原因だと気づき、調べたらこの設定が必要だと知った)




