9
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Transit Gatewayでつなぐ!3つのVPC間通信を体験してみよう

Posted at

こんにちは、ABeamコンサルティングのYoshiです!

この記事は「2025 Japan AWS Jr. Chanpions 夏のQiitaリレー 」の36日目の記事です。
(36日目は本記事を含め2つ記事がリリースされますので、もう一つをお楽しみに!)

はじめに

今使っているVPCと別のVPCを接続しなければならなくなったとき…
まず最初に何を思い浮かべますか?

私の場合、最初に思い浮かぶのはVPC Peeringですが、
大規模構成になると「スケーラビリティ」や「管理の煩雑さ」に限界を感じることがあります。

そこで登場するのが AWS Transit Gateway(TGW)。
本記事では、以下の構成で Transit Gatewayを用いたマルチVPC通信 を実践します!

Transit Gatewayとは?

Amazon VPC Transit Gateway は、仮想プライベートクラウド (VPC) とオンプレミスネットワークを相互接続するために使用されるネットワークの中継ハブです。

特徴として、以下のようなものがあげられると思います。

  • 中央ハブとして機能
  • VPC Peeringのようなフルメッシュ接続が不要
  • スケーラブルで柔軟なルーティング制御

※Transit GatewayはオンプレとのNW接続にも有効ですが、今回はVPC間接続の観点に絞ってお伝えします。

VPC Peeringとの違い

Transit Gatewayは2つ程度のVPC間接続ではVPC Peeringとの違いがあまり生まれないですが、複数のVPC間での接続の際にその効果を発揮します。

項目 VPC Peering Transit Gateway
接続形態 ポイント・ツー・ポイント ハブ&スポーク
VPC数 接続数が増えると管理が煩雑 大規模でも一元管理可能
ルートの柔軟性 各VPCごとに手動設定 TGW側で集中管理

例えば4つのVPC間で相互に通信を行いたいとき、VPC Peeringだと6つのピアリング設定が必要になります。
image.png

Transit Gatewayの場合、4つの設定で済むわけです。
image.png

通信したいVPCが5,6,7,8...と増えて行ったとき、疎結合な構成を取れるTransit Gatewayがよりその真価を発揮してきます。

ハンズオン:3つのVPCをTransit Gatewayでつないでみよう!

習うより慣れろ、ということでまずは使ってみましょう!

アーキテクチャ構成

今回構成したいアーキテクチャは下記のようになります。
各EC2サーバから、アタッチメントを通じてTransit Gatewayへ通信を行い、別のVPCへ通信を行います。

image.png

構築する①:VPC・Subnet

まずは各VPCとサブネットを作成します。
VPCについて、今回は下記の通り作成します。

VPC名 VPC CIDR Subnet名 Subnet CIDR
VPC A 10.0.0.0/16 Subnet A 10.0.1.0/24
VPC B 10.1.0.0/16 Subnet B 10.1.1.0/24
VPC C 10.2.0.0/16 Subnet C 10.2.1.0/24
VPC

image.png

Subnet

image.png

構築する:Internet Gateway・Nat Gateway

EC2サーバへリモートデスクトップ接続するために、IGW・NATを構築します。
VPC-Aに紐づく形で構築します。
↓Internet Gateway
image.png
↓Nat Gateway
image.png

ルートテーブルも編集しておきます。
image.png

構築する②:Security Group・EC2

次に、作成したSubnet内にEC2サーバを立てます。
まずはSecurity Groupを作成します。
今回はWinodwsサーバを立ててリモートデスクトップ接続するため、インバウンド・アウトバウンドともにICMP/RDPを許可するルールを付与します。

↓設定例
image.png

image.png

次にEC2サーバを構築します。

EC2のOSはWindowsにしておいてください。
↓設定例
image.png
ネットワーク設定では作成した各VPCとSubnet、SGを指定してください。
↓設定例
image.png

EC2-AのパブリックIPを指定して、RDPできました!
image.png

構築する:Transit Gateway

Transit Gateway

まずはTransitGatewayを作成します。
今回はどんな設定をしているのかわかりやすくするため、デフォルトのルートテーブルは無効化します。
↓設定例
image.png

Attachment

次にアタッチメントを作成します。
アタッチメントは、各VPCがTransit Gatwayを経由して通信を行う口となります。
↓設定例
image.png

Route Table

RouteTableを作成します。
image.png

「関連付け」タブより、作成したRouteTableに各アタッチメントの関連付けを行います。
image.png

「伝播」タブより、各アタッチメントを設定します。
image.png

Route Table (VPC)

最後に、VPCでルートを設定します。

RouteTable名 送信先 ターゲット
RTB-A 10.1.0.0/16 TransitGateway
RTB-A 10.2.0.0/16 TransitGateway
RTB-B 10.0.0.0/16 TransitGateway
RTB-B 10.2.0.0/16 TransitGateway
RTB-C 10.0.0.0/16 TransitGateway
RTB-C 10.1.0.0/16 TransitGateway

↓設定例
image.png

通信してみる

だいぶ長くなりましたが、これから通信してみます。
まずはここです。
image.png

無事に疎通ができました。ここからが本番です。
image.png

次にVPC-AのEC2からVPC-CのEC2へリモートデスクトップでつないでみます。
image.png
↓接続中です。
image.png
通信できました!(RDPのRDPで見づらくてすみません)
image.png

記事でのスクリーンショットは無いですが、VPC-A, B, C間でのRDP接続は出来るようになります。

まとめ・感想

今回は例として3つのVPCを接続しました。

今後VPCが増えていく場合は、アタッチメントを一つ作成し、ルートテーブルを編集することで接続が可能です(早くて便利ですね!)

また、「こことここは接続させたくない」といった場合はVPCのルートテーブル側で制御もできます。

プロジェクトで実際に使ってはいましたが、個人開発で利用するのは初めてだったので最初躓きながら進めました。
途中、Reachability Analyzerを利用したりしたので、通信がうまくいかない場合は利用してみてもよいかもしれません!

皆さんの学習の一助になれば幸いです。

9
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
9
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?