Transit Gatewayでリージョン間通信行ってみた（東京↔バージニア北部）

## はじめに
この度はTransit Gatewayの意味を深めるにあたって、リージョン間通信を用いて
東京↔バージニア北部間でec2の疎通確認を実施したいと思います。
初めて勉強しますと言う方に向けた記事になりますので、よろしくお願いいたします。
## 構成

・VPC　2個
・Transit Gataway 2個
・EC2 インスタンス 2台
・Transit Gataway　ルートテーブル 2個（東京）
・Transit Gataway　ルートテーブル 2個（バージニア）
・Transit Gataway Attachment 2個（東京）
・Transit Gataway Attachment 2個（バージニア）
※構成図更新予定
## 手順概要
手順の概要を簡潔にまとめています。

1.東京リージョン(10.0.0.0/16)/バージニア北部リージョン(192.16.0.0/16)VPC作成
→サブネット,EC2インスタンスの作成も必要

2.TGWの作成
・TGWの作成（バージニア）
・TGW Attachmentの作成
・TGWの作成(東京)
・TGW Attachmentの作成
・TGW Attachment (Peering)の作成（どちらのリージョンでも作成出来ます）
・TGW Attachment (Peering)の承認（東京）
※TGW Attachment (Peering)は今回はバージニア北部のリージョンで作成します

3.TGW　ルートテーブルのルート設定（VPC側のRT,Peering側のRT）
・VPCのルートテーブル設定
・TGW　ルートテーブル２個作成（VPC側のRT,Peering側のRT）
・通信先の相手側リージョンのルートを設定

4.インスタンスのリージョン間疎通確認
・pingで疎通確認
## 手順
●1.東京リージョン(10.0.0.0/16)/バージニア北部リージョン(192.16.0.0/16)VPC作成
以下の内容で事前準備で作成する。
```作成リソース
VPC        10.0.0.0/16（東京) 192.16.0.0/16(バージニア北部)
サブネット　10.0.0.0/24（東京）192.16.0.0/24(バージニア北部)
EC2インスタンス 2台
```

●2.TGWの作成（バージニア,東京）
①TGW（バージニア）作成を行う。
※赤枠の箇所はチェックボックスを外す
今回デフォルトは使わずに通信させたい任意のVPCの設定を行います。
![TG1-bg修正.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1719794/8bed132d-5dc0-a885-af99-385bd017e99f.png)

②TGW（バージニア）Attachmentの作成を行う。
①で作成したTGWに紐づけを行い、バージニア北部リージョン(192.16.0.0/16)のVPCにアタッチする。
![tgw-bg2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1719794/45c4533f-eab4-1c3a-a977-25f006a6361b.png)

③TGWの作成(東京)・TGW Attachmentの作成
①同様にTGWの作成を行い、②同様に10.0.0.0/16（東京)のVPCにアタッチを行い
TGW Attachmentの作成を行う。

④TGW Attachment (Peering)の作成（バージニア）
リージョン間の通信を行うために、TGW Attachment (Peering)を作成します。
どちらのリージョンでも作成は出来ますが今回はバージニアで作成をしています。
アタッチメントタイプは「Peering Connection」を選択して、リージョン間通信を行いたい
リージョンを選択してTGW（東京）のIDを入力して、アタッチメントを作成する。
※名前はリージョンごとに分かりやすく記載することをおススメします
![tgw-bg3.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1719794/15279ac7-a8f4-64ac-6b4d-d6723b649951.png)
作成後は以下のように表示されます。（バージニア）
状態が「Initiating Request」と表示されるので相手側のリージョンで承認が必要になります。
※相手側のリージョンで承認がされると状態が「Available」と表示される
■承認前
![tgw-bg4.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1719794/ca3057a7-d952-7855-7174-d8225c78a851.png)

■承認後
![tgw-bg7.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1719794/2cf8a2a2-ee24-dc97-cd56-320752a6f55a.png)

こちら相手側リージョンの表示画面です。（東京）
対象のTGW Attachment (Peering)を選択して、アクションから「承諾」を押すと承認することが出来ます。
※東京の方は名前タグがないので任意で分かりやすい表記名にすることをおススメします
![tgw-bg5.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1719794/71277a38-36b3-98fe-3937-966828d507e3.png)

![tgw-bg6.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1719794/fb8ed8c6-5fbd-4f9c-f87a-520dacc55e6b.png)

●3.TGW　ルートテーブルのルート設定（VPC側のRT,Peering側のRT）
①VPCのルートテーブル設定
TGW　ルートテーブルの作成を行う前にVPC側のルートテーブルの設定を行います。

■バージニア
対象VPC（バージニア）のルートテーブルから相手側リージョン（東京）のルートを
追加する。送信先は10.0.0.0/24（東京）にTGW（バージニア）をターゲットに追加を行う。
![tgw-bg8.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1719794/eaa2c732-6c26-4e18-6af7-1c7dcd4982ab.png)

■東京
対象VPC（東京）のルートテーブルから相手側リージョン（バージニア）のルートを
追加する。送信先は192.16.0.0/24（バージニア）にTGW（東京）をターゲットに追加を行う。
![tgw-tk-1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1719794/4ad589fa-2052-6796-ac17-5c45cf0dc597.png)

②TGWルートテーブルの作成（VPC側のRT,Peering側のRT,バージニア）
■TGWルートテーブル作成（VPC側のRT,バージニア）
任意の名前を付けて、ルートテーブルを作成する

■TGWルートテーブル作成（Peering側のRT,バージニア）
任意の名前を付けて、ルートテーブルを作成する

③TGWルートテーブルのルート設定
■TGWルートテーブルのルート設定（VPC側のRT,バージニア）
10.0.0.0/24(東京)に接続をするため、アタッチメントは
TGW Attachment（Peering）を追加する。
![tgw-bg11.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1719794/471c1e25-101d-cdab-5e23-b2368bbdb653.png)

■TGWルートテーブルのルート関連付け（VPC側のRT,バージニア）
経路を作成した後は「関連付け」よりアタッチメントのアタッチが必要になります。
「関連付け」していない場合は作成した「ルート」に情報が届かないので接続が出来なくなります。今回はアタッチするのはTGW Attachment（VPC側）を追加する。
![tgw-bg-13.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1719794/8dba886a-3f70-db90-9b04-b68a9534fe64.png)

■TGWルートテーブル（Peering側のRT,バージニア）
192.168.0.0/24（バージニア）の経路をTGW Attachment（VPC側）を追加する。
![tgw-bg-12.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1719794/b0841adb-fb78-7bbc-4a8e-97e9010311cd.png)


■TGWルートテーブルのルート関連付け（Peering側のRT,バージニア）
アタッチするのはTGW Attachment（Peering）を追加する。
![tgw-bg-15.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1719794/78179f00-1a31-fcfc-74ae-5c44fc08bb3b.png)


④TGWルートテーブルの作成（VPC側のRT,Peering側のRT,東京）
■TGWルートテーブル作成（VPC側のRT,東京）
②同様にルートテーブルを作成する。

■TGWルートテーブル（Peering側のRT,東京）
②同様ににルートテーブルを作成する。

⑤TGWルートテーブルのルート設定（東京）
■TGWルートテーブルのルート設定（VPC側のRT,東京）
192.168.0.0/24(バージニア)に接続をするため、アタッチメントは
TGW Attachment（Peering）を追加する。

■TGWルートテーブルのルート関連付け（VPC側のRT,東京）
今回アタッチするのはTGW Attachment（VPC側）を追加する。

■TGWルートテーブルのルート設定（Peering側のRT,東京）
10.0.0.0/24（東京）の経路をTGW Attachment（VPC側）を追加する。

■TGWルートテーブルのルート関連付け（Peering側のRT,東京）
アタッチメントはTGW Attachment（Peering）を追加する。

●4.EC2インスタンス疎通確認
問題なく疎通確認できるようになりました。
EC2（バージニア）
![image (3).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1719794/a0364798-285a-c5f3-dbcd-ce6e970c8983.png)

EC2(東京)
![image (2).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1719794/e080ab05-02f7-e60c-3c94-cc45e2fd30ee.png)

## 注意点
■セキュリティグループ（SG）
TGW側の問題も全く見当たらなかったので真っ先に見るべきSGを確認したところ
SGはssh（22）だけインバウンドで開けていましたが、通信が出来ませんでした。
私は全てのトラフィックを追加して開けることで通信に成功することが出来ました。
・インバウンドルール（SG）
```
すべてのトラフィック　すべて　すべて　0.0.0.0/0 ※推奨しません
SSH TCP 22 0.0.0.0/0 ※推奨しません
```
■Transit Gatewayアソシエーション
ルートテーブルを設定したから大丈夫。だと思っていましたが
設定したルートテーブルをアタッチしないとルートの道のりが反映されないことを
知り、設定を見直したところ紐づけていなくいつまで経っても繋がりませんでした。
念のために詰まってしまったので今回手順に含んでみました（笑）
## まとめ
TGWの知識が全くなかったので知見をもっと増やしたいと思いました。
ネットワークに苦手意識があるのでこれを機にどんどん検証進めていきたいと思います。
また構成図等も記載して後日、更新したいと思っています。（理解がより深まると思いました）記事を最後まで見ていただいて、ありがとうございました。