Transit Gatewayを利用して、VPC間を接続してみる


この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので十分ご注意ください。

TransitGatewayは複数のVPCを接続するときや、オンプレミスネットワーク、DirectConnectゲートウェイを接続する際に活躍するサービスです。

 

同一アカウント内のVPCだけではなく、他のアカウントのVPCとの接続も可能です。

 

Transit Gatewayについて調べる機会があったので、Transit Gatewayの紹介をしつつ、簡単なハンズオンも実施します。

 

【この記事はこんな方におすすめ】

  • Transit Gatewayについてさらっと知りたい方
  • Transit Gatewayのハンズオンをやってみたい方

 

 

Transit Gatewayを利用して、VPC間を接続してみる

■Transit Gatewayとは

transitgateway-icon

 

Transit Gatewayは仮想プライベートクラウド(VPC)とオンプレミスネットワークを相互接続するために使用できるネットワークの中継ハブです。Transit Gatewayを使用すると、同じリージョンにVPCとVPN接続をアタッチして、それらの間でトラフィックをルーティングできます。

 

Transit GatewayはAWSアカウント間で機能し、AWS Resource Access Manage(RAM)を使用してTransit Gatewayを他のアカウントと共有できます。他のAWSアカウントとTransit Gatewayを共有した後、アカウントの所有者はTransit GatewayにそれらのVPCをアタッチすることができます。(AWS公式ドキュメントより)

 

TransitGatewayを理解するうえで、重要な用語があります。

 

  • アタッチメント
  • ルートテーブル
  • アソシエーション
  • プロパゲーション

 

ひとつひとつ説明していきます。

 

 

●重要用語①アタッチメント

VPCやVPNなどをTransit Gatewayに接続する設定です。アタッチメントをすることでVPCやVPN同士で通信できる準備ができます。アタッチメント可能な接続先は、以下の通りです。

 

  • 1つ以上のVPC
  • DirectConnectゲートウェイ
  • 別の中継ゲートウェイとのピアリング接続
  • 中継ゲートウェイへのVPN接続

 

Transitgateway注意

 

 

●重要用語②ルートテーブル

Transitgatewayが持つ経路情報テーブルです。デフォルトで一つ作られ、複数作ることも可能です。デフォルトでは、Transit Gatewayアタッチメントはデフォルトの Transit Gatewayルートテーブルに関連付けられます。もしアソシエーションやプロパゲーションしないようにしたい場合、作成時にチェックを外しましょう。

 

Transitgateway注意

 

 

●重要用語③アソシエーション(関連付け)

アタッチメントしたVPCなどをルートテーブルに結びつけることです。アソシエーションは一つのルートテーブルにしか適用できません。

 

 

●重要用語④プロバケーション(伝播)

アタッチメントしたVPCからルートテーブルに経路を伝播します。ルートテーブルに伝播した経路が登録され、ルーティングの際に参照されます。プロパゲーションはアソシエートに関係なく、複数ルーティングテーブルに設定が可能です。

 

 

■VPC間接続ハンズオン


 

AWS Transit Gatewayを理解するために、VPC間を接続するハンズオンを実施してみます。テストに関しては、各VPC内のプライベートサブネットにあるEC2を利用し疎通確認を行ったり、NAT Gatewayを利用しインターネット向けの疎通確認をしたりします。構築の概要は以下の通りです。

 

 

~今回使用するAWSサービス~

 

  • Amazon CloudFormation
  • AWS Transit Gateway
  • キーペア
     

 

それでは、構築していきます。

 

■CloudFormationを利用し環境構築

今回のハンズオンではTransit Gatewayの仕組みをざっくり理解してほしいので、環境構築に関してはCloudFormationを利用していきます。

 

まずはキーペアを作ります。設定値は以下の通りです。

 

項目 設定値
名前 TGW-test-keypairs(任意)
キーペアのタイプ RSA
プライベートキーファイル形式 .pem

 

 

saitou-handson-transitgateway-CFn

 

 

次にスタックを作成します。スタック作成に用いるテンプレートファイルは、VPCやEC2だけではなく、TransitGatewayの作成、アタッチメント、ルートテーブル、セキュリティグループの設定も盛り込まれているファイルです。

 

 

CloudFormationのコンソール画面から「スタック」を押し、「スタックの作成」をクリックしてください。

 

saitou-handson-transitgateway-CFn

 

↓「新しいリソースを使用(標準)」を押しましょう。

 

saitou-handson-transitgateway-CFn

 

↓スタック作成の設定値は以下の通りです。使用するテンプレートファイルは、こちらのwstgw-lab1.templateからダウンロードしてください。

 

項目 設定値
テンプレートの準備 テンプレートの準備完了
テンプレートソース テンプレートファイルのアップロード
テンプレートファイルのアップロード wstgw-lab1.template

 

saitou-handson-transitgateway-CFn

 

↓スタックの名前は「saitou-TGW-test-stack1(任意)」で、wstgwKeyNameの欄では作成したキーペアを選択し、「次へ」をクリックしてください。
 

saitou-handson-transitgateway-CFn

saitou-handson-transitgateway-CFn

saitou-handson-transitgateway-CFn

 

↓ページ下部にあります“AWS CloudFormation によって IAM リソースが作成される場合があることを承認します。”に☑をし、「送信」を押します。

 

saitou-handson-transitgateway-CFn

saitou-handson-transitgateway-CFn

 

↓“CREATE_COMPLETE”に変わるまで、数分かかります。

 

saitou-handson-transitgateway-CFn

 

 

CloudFormationスタック作成は以上です。

 

 

■疎通確認1(VPC間)

Transitgateway疎通確認

 

デプロイされたEC2インスタンス(wstgwEc2Instance192-168-1-100)とEC2インスタンス(wstgwEc2Instance10-0-1-100)の疎通確認をしてみましょう。

 

 

EC2のコンソール画面から「インスタンス」を押します。EC2インスタンス(wstgwEc2Instance192-168-1-100)を選択し、「接続」を押してください。

 

saitou-handson-transitgateway-instances

 

↓「セッションマネージャー」タブをクリックし、「接続」を押してください。

 

saitou-handson-transitgateway-instances

 

↓ターミナルが起動します。以下のコマンドを押してください。

bash -I

 

saitou-handson-transitgateway-instances

 

↓次にPrivateVPCにありますEC2インスタンスに疎通確認をしてみます。

ping 10.0.1.100

 

saitou-handson-transitgateway-instances

 

↓インターネット向けの疎通も確認してみましょう。BoundaryVPC内にNAT Gatewayを置いているので、インターネット向けのパケット送信が可能です、

ping amazon.co.jp

 

saitou-handson-transitgateway-instances

 

 

BoundaryVPC(192-168-1-100)からPrivteVPC1(10-0-1-100)の疎通確認ができました。同様の手順でPrivteVPC1(10-0-1-100)からBoundaryVPC(192-168-1-100)も確認してみましょう。

 

 

セッションマネージャーを利用し、EC2インスタンス(wstgwEc2Instance10-0-1-100)に接続します。

 

saitou-handson-transitgateway-instances

saitou-handson-transitgateway-instances

 

↓まずは以下のコマンドを打ってみましょう。

bash -I

 

saitou-handson-transitgateway-instances

 

↓次にBoundaryVPC(192-168-1-100)への疎通を確認します。

ping 192.168.1.100

 

 

↓続いて、インターネット向けの疎通も確認してみましょう。

ping amazon.co.jp

 

saitou-handson-transitgateway-instances

 

 

インターネット向けの疎通はできないかと思いますので、“Ctr+c”で離脱してください。

 

現在のTransit Gatewayルートテーブルの設定確認してみると、BoundaryVPC(192.168.0.0/16)とPrivteVPC1(10.0.0.0/16)の経路情報は登録されています。しかし、「0.0.0.0/0」は書かれていないので、PrivteVPC1(10-0-1-100)からTransit Gatewayを経由してインターネット向けに通信はできません。

 

transitgateway-routetable

 

 

Transit Gatewayルートテーブルの設定を変更し、PrivteVPC1からTransit Gatewayを経由し、BoundaryVPC内にあるNATGatewayを経てインターネットアクセスできるようにしましょう。

 

Transitgatewayインターネットアクセス

 

 

VPCコンソール画面の左ペインから「Transit Gatewayルートテーブル」をクリックしてください。

 

saitou-handson-transitgateway-route

 

↓Nameが無いデフォルトテーブルを選択肢、「ルート」タブから「静的ルートを作成」を押してください。

 

saitou-handson-transitgateway-route

 

↓設定値は以下の通りです。入力が完了しましたら、「静的ルートを作成」を押してください。

 

項目 設定値
CIDR 0.0.0.0/0
タイプ アクティブ
アタッチメントを選択 wstgwTgwVPCAttachmentBoundaryVpc

 

 

saitou-handson-transitgateway-route

 

↓追加された確認してみます。

 

saitou-handson-transitgateway-route

 

Transit Gatewayルートテーブルの追加設定は以上です。

 

 

■疎通確認2(インターネットへ)

Transitgatewayインターネットアクセス

 

それではもう一度、EC2インスタンス(wstgwEc2Instance10-0-1-100)からインターネット向けの疎通確認をしてみます。

 

 

EC2のコンソール画面から「インスタンス」を押し、wstgwEc2Instance10-0-1-100を選択してください。上の「接続」を押します。

 

saitou-handson-transitgateway-session

 

↓「セッションマネージャー」タブから、「接続」を押します。

 

saitou-handson-transitgateway-session

 

↓以下のコマンドを打ってみましょう。

ping amazon.co.jp

 

saitou-handson-transitgateway-session

 

PING amazon.co.jp (52.119.164.121) 56(84) bytes of data.
64 bytes from 52.119.164.121 (52.119.164.121): icmp_seq=1 ttl=225 time=167 ms
64 bytes from 52.119.164.121 (52.119.164.121): icmp_seq=2 ttl=225 time=166 ms
64 bytes from 52.119.164.121 (52.119.164.121): icmp_seq=3 ttl=225 time=166 ms
64 bytes from 52.119.164.121 (52.119.164.121): icmp_seq=4 ttl=225 time=166 ms
64 bytes from 52.119.164.121 (52.119.164.121): icmp_seq=5 ttl=225 time=166 ms
^C
--- amazon.co.jp ping statistics ---
5 packets transmitted, 5 received, 0% packet loss, time 4006ms
rtt min/avg/max/mdev = 166.368/166.530/167.001/0.436 ms

 

インターネット向けの疎通が確認できました。

 

ハンズオンは以上です

 

 

まとめ:Transit Gatewayを利用して、VPC間を接続してみる

Transit GatewayはVPCとVPCを簡単につなげることができ、ピアリング接続とは違い、数千のVPC、VPN、DirectConnectGatewayとの接続が可能です。

 

今回のハンズオンではCloudFormationを利用して環境構築したので、Transit Gatewayの詳細な設定はしていません。ネクストステップとしてさらに理解を深めたい方は、今回の構築図をもとに一から作成し疎通確認することをおすすめします

 

一から作成する場合に躓くポイントは、セキュリティグループやサブネットのルートテーブルです。冒頭で説明した通り、TransitGatewayの設定はアタッチメントを作成した時点で、アソシエーションとプロバケーションがデフォルトで設定されるため簡単です。

 

しかし、サブネットのルートテーブルやセキュリティグループに関しては、自身で経路とトラフィックを考えて設定する必要があります。ぜひ構築図を見ながら一から構築してみてください

 

また、今回のハンズオンの延長で他のアカウントのVPCとの接続も行いましたので、後日ブログで公開します。

 

 

参考リンク:AWS公式ドキュメントAWS Transit Gateway ハンズオン
 

 

↓ほかの協栄情報メンバーもAWS Transit Gatewayに関する記事を公開しています。ぜひ参考にしてみてください。

 

■DirectConnect GWとTransit GWを利用して国に跨るグローバルネットワークを構築(juwei)
https://cloud5.jp/directconnect-transitgw/

 

Last modified: 2022-12-30

Author