この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので十分ご注意ください。
TransitGatewayは複数のVPCを接続するときや、オンプレミスネットワーク、DirectConnectゲートウェイを接続する際に活躍するサービスです。
同一アカウント内のVPCだけではなく、他のアカウントのVPCとの接続も可能です。
Transit Gatewayについて調べる機会があったので、Transit Gatewayの紹介をしつつ、簡単なハンズオンも実施します。
【この記事はこんな方におすすめ】
- Transit Gatewayについてさらっと知りたい方
- Transit Gatewayのハンズオンをやってみたい方
Transit Gatewayを利用して、VPC間を接続してみる
■Transit Gatewayとは
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が持つ経路情報テーブルです。デフォルトで一つ作られ、複数作ることも可能です。デフォルトでは、Transit Gatewayアタッチメントはデフォルトの Transit Gatewayルートテーブルに関連付けられます。もしアソシエーションやプロパゲーションしないようにしたい場合、作成時にチェックを外しましょう。
●重要用語③アソシエーション(関連付け)
アタッチメントした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 |
次にスタックを作成します。スタック作成に用いるテンプレートファイルは、VPCやEC2だけではなく、TransitGatewayの作成、アタッチメント、ルートテーブル、セキュリティグループの設定も盛り込まれているファイルです。
CloudFormationのコンソール画面から「スタック」を押し、「スタックの作成」をクリックしてください。
↓「新しいリソースを使用(標準)」を押しましょう。
↓スタック作成の設定値は以下の通りです。使用するテンプレートファイルは、こちらのwstgw-lab1.templateからダウンロードしてください。
項目 | 設定値 |
---|---|
テンプレートの準備 | テンプレートの準備完了 |
テンプレートソース | テンプレートファイルのアップロード |
テンプレートファイルのアップロード | wstgw-lab1.template |
↓スタックの名前は「saitou-TGW-test-stack1(任意)」で、wstgwKeyNameの欄では作成したキーペアを選択し、「次へ」をクリックしてください。
↓
↓
↓ページ下部にあります“AWS CloudFormation によって IAM リソースが作成される場合があることを承認します。”に☑をし、「送信」を押します。
↓
↓“CREATE_COMPLETE”に変わるまで、数分かかります。
CloudFormationスタック作成は以上です。
■疎通確認1(VPC間)
デプロイされたEC2インスタンス(wstgwEc2Instance192-168-1-100)とEC2インスタンス(wstgwEc2Instance10-0-1-100)の疎通確認をしてみましょう。
EC2のコンソール画面から「インスタンス」を押します。EC2インスタンス(wstgwEc2Instance192-168-1-100)を選択し、「接続」を押してください。
↓「セッションマネージャー」タブをクリックし、「接続」を押してください。
↓ターミナルが起動します。以下のコマンドを押してください。
bash -I
↓次にPrivateVPCにありますEC2インスタンスに疎通確認をしてみます。
ping 10.0.1.100
↓インターネット向けの疎通も確認してみましょう。BoundaryVPC内にNAT Gatewayを置いているので、インターネット向けのパケット送信が可能です、
ping amazon.co.jp
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)に接続します。
↓
↓まずは以下のコマンドを打ってみましょう。
bash -I
↓次にBoundaryVPC(192-168-1-100)への疎通を確認します。
ping 192.168.1.100
↓続いて、インターネット向けの疎通も確認してみましょう。
ping amazon.co.jp
インターネット向けの疎通はできないかと思いますので、“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を経由してインターネット向けに通信はできません。
Transit Gatewayルートテーブルの設定を変更し、PrivteVPC1からTransit Gatewayを経由し、BoundaryVPC内にあるNATGatewayを経てインターネットアクセスできるようにしましょう。
VPCコンソール画面の左ペインから「Transit Gatewayルートテーブル」をクリックしてください。
↓Nameが無いデフォルトテーブルを選択肢、「ルート」タブから「静的ルートを作成」を押してください。
↓設定値は以下の通りです。入力が完了しましたら、「静的ルートを作成」を押してください。
項目 | 設定値 |
---|---|
CIDR | 0.0.0.0/0 |
タイプ | アクティブ |
アタッチメントを選択 | wstgwTgwVPCAttachmentBoundaryVpc |
↓追加された確認してみます。
Transit Gatewayルートテーブルの追加設定は以上です。
■疎通確認2(インターネットへ)
それではもう一度、EC2インスタンス(wstgwEc2Instance10-0-1-100)からインターネット向けの疎通確認をしてみます。
EC2のコンソール画面から「インスタンス」を押し、wstgwEc2Instance10-0-1-100を選択してください。上の「接続」を押します。
↓「セッションマネージャー」タブから、「接続」を押します。
↓以下のコマンドを打ってみましょう。
ping amazon.co.jp
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/