はじめに
こんにちは!クラウドエンジニアの竹村 (@ayaka_t_1005)です。大規模なAWS環境でのVPC間通信としてTransit Gatewayを使うことが最近多いため、初心者向けにTransit Gatewayの設定方法を紹介しようと思います!
Transit Gatewayとは
AWS Transit Gateway(TGW) は、複数のVPCを一元的に接続 する 「中央ハブ」 のようなサービスです。各VPCを個別に接続する VPC Peering とは異なり、Transit Gatewayを介して複数のVPCをまとめて接続できるため、ネットワーク構成がシンプルになり、管理がしやすくなります。特に、マルチアカウント環境や大規模なVPC構成では、拡張性を考慮してTransit Gatewayを利用するケースが増えています。また、Direct Connectと組み合わせることで、オンプレミス環境との接続も可能です。
構成
今回は以下のような同一アカウント・リージョン内にVPCを作成し、各VPCに配置したEC2間でTransit Gateway経由で通信ができることを確認します。次の設定のセクションでは、Transit Gateway周りの設定を実際に行います。ただし、以下の準備は 事前に設定が必要 となるため、あらかじめ完了しておいてください。
- VPCの作成
- サブネットの作成およびサブネットのルートテーブル作成
- 疎通確認用のEC2作成(Session Manager でログインできるように設定)
- セキュリティグループ設定
Transit Gatewayの具体的な設定方法
1.Transit Gatewayの作成
コンソールのVPCメニューからTransit Gatewayを選択し、「Transit Gatewayを作成」をクリック
今回はデフォルトのルートテーブルを利用せず、後ほど手動で個別のTransit Gatewayルートテーブルを作成するため「デフォルトルートテーブルの関連付け」「デフォルトルートテーブルの伝搬」のチェックを外します。
Transit Gatewayが作成されました。
2.アタッチメントの作成
VPCとTransit Gatewayを繋ぐためのTransit Gatewayアタッチメントを作成します。
※アタッチメントは時間あたりの利用料金がかかるサービスです。料金も現在0.07 USD/時間と結構お高めなので、検証が終わって利用しなくなったら削除するようにしてください。
コンソールのVPCメニューからTransit Gatewayアタッチメントを選択し、「Transit Gatewayアタッチメントを作成」をクリック
VPCAのAttachment1を作成します。
先ほど作成したTransit Gatewayをアタッチ先として選択し、アタッチメントタイプはVPCを選択します。アタッチメントを配置するVPCとサブネットを選択して「Transit Gatewayアタッチメントを作成」をクリック
アタッチメントが作成されました。状態がPendingになっていますが、作成後2-3分でAvailableとなりますので気長に待ちましょう。VPC BのAttachment2も同様に作成します。
両方のアタッチメントの状態がAvailableとなりました。
ここからTransit Gatewayルートテーブルを作成し、アタッチメントに関連づけ(Association)をします。
3.ルートテーブルの関連付け
Attachment1とAttachment1用のTransit Gatewayルートテーブルを関連付けします。ルートテーブルの関連付けのタブを見ると、アタッチメントと関連付けがされていることが確認できます。
ここのルートテーブルを関連づけすることにより、VPCからアタッチメント経由でTransit Gatewayに通信が来た際にどのルートテーブルに従ってルーティングするかを指定することができます。
Attachment2とAttachment2用のTransit Gatewayルートテーブルについても同様に関連付けします。
今回のような小規模な構成であれば、本来Transit Gatewayルートテーブルをアタッチメントごとに作成せず共通で1つ作成でも問題ないかと思います。実際にTransit Gatewayを使うようなマルチアカウント構成においては、各VPCの通信要件に応じてTransit Gatewayルートテーブルにて通信を制御するため、基本的にTransit Gatewayルートテーブルは分けることが多いです。
4.Transit Gatewayルートテーブル作成
Attachment1用のTransit Gatewayルートテーブルを作成します。
「Transit Gatewayルートテーブルを作成」をクリックし、関連付けるTransit Gatewayを選択。
この時点ではTransit Gatewayルートテーブルにはルートはまだありません。
5.Transit Gatewayルートテーブルのルート設定
ルートを設定する方法は静的(Static)と動的(Propagation)があります。
厳密に意図しない通信を防ぎたい場合は Static (静的ルート) を利用しますが、今回は Propagation (動的ルート伝播) の挙動を確認するため、動的ルートを設定します。
Transit Gatewayルートテーブルを選択し、伝搬を作成をクリック
伝搬するアタッチメントを選択で、対向のVPC側のアタッチメントを選択して伝搬を作成をクリック
伝搬が作成されました。
ルートのタブを確認すると対向のVPCB側のルートが追加されました。
Attachment2用のルートテーブルについても同様に伝搬を作成します。
疎通確認
- VPC A→VPC B
1 2 3 4 5 6 7 |
$ ping 192.168.0.164 PING 192.168.0.164 (192.168.0.164) 56(84) bytes of data. 64 bytes from 192.168.0.164: icmp_seq=1 ttl=126 time=1.28 ms 64 bytes from 192.168.0.164: icmp_seq=2 ttl=126 time=1.25 ms 64 bytes from 192.168.0.164: icmp_seq=3 ttl=126 time=0.642 ms 64 bytes from 192.168.0.164: icmp_seq=4 ttl=126 time=0.465 ms 64 bytes from 192.168.0.164: icmp_seq=5 ttl=126 time=0.874 ms |
- VPC B→VPC A
1 2 3 4 5 6 7 |
$ ping 172.16.0.154 PING 172.16.0.154 (172.16.0.154) 56(84) bytes of data. 64 bytes from 172.16.0.154: icmp_seq=1 ttl=126 time=1.50 ms 64 bytes from 172.16.0.154: icmp_seq=2 ttl=126 time=0.752 ms 64 bytes from 172.16.0.154: icmp_seq=3 ttl=126 time=0.913 ms 64 bytes from 172.16.0.154: icmp_seq=4 ttl=126 time=1.82 ms 64 bytes from 172.16.0.154: icmp_seq=5 ttl=126 time=0.919 ms |
まとめ
今回は、Transit Gateway を利用した VPC 間通信の設定について記事にしました。実際の環境では、リージョン間やアカウント間の通信など、より複雑な構成 になることが多いですが、今回の内容が Transit Gateway の基本を理解する最初のステップ になればと思います。
最後まで読んでいただき、ありがとうございました!
SESの会社でオンプレミスのネットワークエンジニアとして、クライアントのネットワーク運用保守や移行プロジェクトに携わる。ネットワークにとどまらず、広くインフラやクラウド技術を習得するために、MENTAで@adachin0817さんにインフラの指導を受け、TechBullに参加し、2024年5月にクラウドエンジニアとして転職。現在はクラウドエンジニアやコミュニティの記事を執筆しながら新しいメンティーの受け入れで1on1を実施している。