Transit Gatewayの基礎

# 内容
下記勉強会での発表内容になります。Transit Gatewayを分かりやすく説明します。

https://infra365.connpass.com/event/312035/

# AWS環境で発生するネットワーク通信

Transit Gatewayの話に入る前に、AWS内ではどのようなネットワーク通信があるかを見ていきます。まず最初にVPNやDirect Connectを使用したオンプレミスからAWSへの通信があります。

![スライド4.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2523652/7e982bfc-1a0a-70fb-9e06-6c8f550af0ea.png)

次にVPC内のPublic SubnetからInternet Gatewayを介したインターネット通信があります。

![スライド5.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2523652/2cf4c9d4-55ac-4734-dea3-cc289e765945.png)

あとはVPC内、VPC間通信というところで、例えばEC2をVPC内、異なるVPCに構築してEC2サーバ間の通信などが挙げられます。

![スライド6.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2523652/425d57a1-27fa-ea8f-de64-ff546e19103d.png)

![スライド7.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2523652/ad876a8e-780d-e033-70f7-518a7ce949bb.png)

このようにAWSでは色々なネットワーク通信がありますが、Transit Gatewayはオンプレミスからの接続、VPC間通信を集約することが出来るサービスになります。

![スライド8.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2523652/3756b8e5-7159-a0f8-fe47-693f65c735a9.png)

# VPC間通信
次にTransit Gatewayの説明に入る前にもう一点、VPC間通信を行うためにどのようなサービスがあるかを見てきます。

![スライド10.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2523652/b2e460dc-94e0-85b9-2c45-cf3b78b80ea6.png)

最初にVPC Peeringという方法があります。この方法は簡単に構成することが出来ます。VPC AとVPC Bを接続したい場合はAとB間でVPC Peeringの設定を。VPC AとVPC B間で接続したい場合はAとC間でVPC Peeringの設定を行います。

![スライド11.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2523652/f3b61dbe-9a18-df8b-ec8b-1f4912850349.png)

ただし、VPC Peeringは推移的な接続をサポートしていないため、この場合、VPC BとVPC Cは通信することが出来ません。

![スライド12.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2523652/7e2f513c-4d35-8552-702c-f4ef3256d818.png)

VPC BとVPC C間の通信が必要な際は、VPC BとVPC C間にもVPC Peeringの設定を行う必要があります。

![スライド13.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2523652/fc825683-f577-8e99-881a-fc635b94ab70.png)

VPCの数が少なければ良いですが、VPC数が増えて全てのVPC間で通信を行いたい場合はフルメッシュ構成が必要なため、構成が複雑になります。

![スライド14.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2523652/9e7d82c7-fd7b-3dcd-8b16-e94e29276f6e.png)

これを解消できるのが、Transit Gatewayとなり、Transit Gatewayを中央のハブとして設置して、各VPCを接続することによって、ネットワーク構成をシンプルにすることが出来ます。

![スライド15.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2523652/dacdfbbe-37e9-7310-1ac9-04b300fa899f.png)

ただし、Transit GatewayやVPC PeeringではCIDRが同じVPC間の接続を行うことが出来ません。

![スライド17.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2523652/cb592d62-2bce-a8a8-26c1-e019846dc1e2.png)

この場合はAWS PrivateLinkを使用します。EndpointsとEndpoints Serviceを作成して接続することでAWSの内部通信でVPC間接続を行うことが出来ます。

![スライド18.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2523652/0ae87eea-02c4-5049-5834-4f8a3c10395b.png)

# Transit Gatewayの基礎
Transit Gatewayは大きく分けると3つの構成要素から構成されます。

![スライド21.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2523652/260212f1-fadd-ba98-9bee-7100e6187c4a.png)

1つ目はTransit Gateway本体です。しかしTransit Gateway本体を作成しただけだとまだ何のコンポーネントとも接続していないため、通信することが出来ません。

![スライド23.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2523652/e2832192-acee-5300-9555-0bf49ce6c536.png)

そこでTransit Gatewayアタッチメントが出てきます。Transit GatewayアタッチメントはTransit Gatewayと何かをつなげて通信できるようにするものですが、下記のような種類があります。

![スライド25.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2523652/19ee7196-7ba3-5603-f82c-b02772a4ac5a.png)

Transit Gatewayアタッチメントを作成すると各コンポーネントがつながりました。

![スライド26.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2523652/ac64de28-fb8d-446c-fab9-207aa5cfd66e.png)

しかしこの状態だと、どのパケットをどこに流せばよいか分からないため、通信することが出来ません。そこで出てくるのが、Transit Gatewayルートテーブルです。Transit Gatewayルートテーブルに通信経路を設定することによって通信が可能になります。

![スライド29.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2523652/5bcdfce8-125b-ef95-8364-8d39953d27d9.png)

最後に、サブネット側のルートテーブルの設定も必要になります。

![スライド30.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2523652/9f12e47b-9d24-364a-453f-c768c0f2dedb.png)


# 次回勉強会の開催
定期的にインフラ技術基礎勉強会を開催しております。

https://infra365.connpass.com/event/313272/