Transit Gatewayの複数のルートテーブル動作を確認してみる(1)ーstatic/dynamic routingー
はじめに
Transit Gatewayを学習中、各VPCやIPsec-VPNに対して個別のルートテーブル(ingress/egress)を持たせというのがいまいちイメージが湧かず、実際に手を動かして検証してみました。
【目標】
・各VPCに対して、static routingとdynamic routingの設定方法を学ぶ
・複数のルートテーブルの設定、動作を確認する
・IPsec-VPNからのdynamic routingの設定方法を学ぶ
目次
- 構成概要
- 全体の流れ
- transit gatewayのstatic/dynamic routingを検証
- 複数ルートテーブルの動作検証 ★本記事ではここまで
- IPsec-VPNにてTGWへ接続し、dynamic routingを検証
構成概要
構成図
【Branch1 VPC】
IPsec-VPN検証用のVPC。
Public SubnetにFortigate Instance、Private Subnetに Windows Server Instanceを設置。
FortigateからTransit GatewayにIPsecを張り、Private Subnet(10.1.10.0/24)のルート情報をTransit Gatewayに伝播する。
【Branch2、App1 VPC】
Transit Gateway Attachmentを各VPCにアタッチし、Transit Gatewayのルートに乗せる。
【Gateway VPC】
1つのVPCに複数のTransit Gateway Attachmentをアタッチ。
今後のGateway Load BalancerとTransit Gatewayを用いたEast-Westネットワーク検証のために分けているが、本ネットワークではBranch2, App1と同じとみなして差支えない。
ルートテーブル
・172.16.1.0/24 : TGW Left subnet on Gateway VPC
・172.16.2.0/24 : TGW Right subnet on Gateway VPC
・10.2.1.0/24 : Branch2 subnet on Branch2 VPC
・10.3.1.0/24 : App1 subnet on App1 VPC
VPCへTGWをアタッチする際、TGW専用のサブネットを作成するのがベストプラクティスです。
これは、TGWが持つルートテーブルとサブネットが持つルートテーブルが混在し意図しないルーティングをさけるためとのことです。
・172.16.10.0/24 : Private App Left subnet on Gateway VPC
・172.16.20.0/24 : Private App Right subnet on Gateway VPC
・10.2.10.0/24 : Branch2 subnet on Branch2 VPC
・10.3.10.0/24 : App1 subnet on App1 VPC
アクセス用デフォルトゲートウェイとしてIGWを設け、Gateway, Branch2, App1の各VPCへのルートはTGWのアタッチメントを宛先にします。
各VPCに設置されたPrivate APP、Windows-SV間の通信がTransit Gatewayのルート設定でどのように変わるか確認していきます。
全体の流れ
- Transit Gateway検証環境の準備
- TGWのdynamic Routeでの疎通確認
- TGWのStatic Routeでの疎通確認
- 複数ルートテーブルの動作検証 Hub and Spoke
Transit Gateway検証環境の準備
キーペアの準備
まずは、各Private APPにアクセスするためのSSH keyを作成します。
- EC2サービスの左ペインより、ネットワーク&セキュリティ->キーペアをクリックする
- キーペアの名前を適当に入力する(tokyoregion2)
検証環境の準備
githubから検証環境をcloudformationで構築していきます。
git clone https://github.com/pero0125/transitgateway0121.git
cloudformationの展開手順
network.yml -> security.yml -> branch_instance.yml -> appliance_security.yml
の順番で展開します。
TGWのdynamic Routeでの疎通確認
各Private Appへアクセス
検証環境が整ったら、各Private Appにアクセスして、検証を進めます。
tokyoregion2を保存しているフォルダに移動し、コマンドプロンプトを表示させます。
※上図のフォルダでcmdと入力し、Enterをたたくとコマンドプロンプトが立ち上がります。
4画面用意します。
- EC2サービスの左ペインより、インスタンス->インスタンスをクリックする。
- 下図のようにインスタンスが作成されているので、各PrivateAppのチェックし、右上の接続をクリック
・tgw-Syslog-Left-Instance (GatewayVPCに所属)
・tgw-Syslog-Right-Instance (GatewayVPCに所属)
・tgw-Linux-Blanch2-Instance (Branch2VPCに所属)
・tgw-Linux-App2-Instance (App1VPCに所属)
インスタンスに接続から、SSHクライアントのコマンドをコピーする。
ssh -i "tokyoregion2.pem" ec2-user@xx.xx.xx.xx
上図のように各Private APPにアクセスします。
疎通確認
Transit Gatewayでは、デフォルトルートが存在し、各VPCのルート情報がdynamicに伝搬するように設定されています。
- VPCサービスの左ペインより、Transit Gateway->Transit Gatewayルートテーブルをクリック
- 既に一つあるルートテーブルにチェックを付け、『ルート』タブをクリック
下図のようにルート情報のルートタイプが伝達済みとなっています。
これがデフォルトでのAWSのBGPによるdynamic routingが有効となっている状態です。
【GatewayVPC -> Branch2への疎通確認】
【Branch2 -> App1への疎通確認】
TGWのStatic Routeでの疎通確認
新しいルートテーブルの作成
まずはデフォルトのルートテーブルから各VPCをデタッチします。
- デフォルトルートテーブルにチェックを付け、『関連付け』タブをクリック
- 各VPCにアタッチしているTGW attachmentをすべてデタッチしていきます。
- 右上の『Transit Gatewayルートテーブルを作成』をクリックします。
Item | Value |
---|---|
名前タグ | static_route_table |
Transit Gateway ID | TGW |
- 作成したstatic_route_tableにチェックを付け、『関連付け』タブをクリック
- 3つのVPCのTGW attachmentを関連付けていきます。
- 続けて、『ルート』タブをクリック
- 下の『静的ルートを作成』をクリックします。各VPCのセグメント(伝播したい宛先)のルート設定を行います。
Item | Value |
---|---|
CIDR | 172.16.0.0/16 |
タイプ | アクティブ |
アタッチメントを選択 | tgw-TGW-Gatewayvpc-attachment |
Item | Value |
---|---|
CIDR | 10.2.0.0/16 |
タイプ | アクティブ |
アタッチメントを選択 | tgw-TGW-Blanch2vpc-attachment |
Item | Value |
---|---|
CIDR | 10.3.0.0/16 |
タイプ | アクティブ |
アタッチメントを選択 | tgw-TGW-Applicationvpc-attachment |
疎通確認
デフォルトルートテーブルと同じように各VPCへ疎通確認を実施します。
各VPCに対して、疎通確認が取れると思います。
複数ルートテーブルの動作検証 Hub and Spoke
検証図
複数のルートテーブルを用いて、Gateway VPCからBranch2 VPCおよびApp1 VPCへの疎通は可能だが、
Branch2とApp1 VPC間の疎通は不可という構成を作成していきます。
経路図
Branch2からGateway VPCのPrivateApp Rightへの通信経路
※Transit Gatewayのルーティングの仕様上、まず同じAZを優先して通るため、GatewayVPCにアタッチしている二つのTGW Attachmentを経由します。
Spokeルートテーブルの作成
- static_route_tableを作成した時と同様に、spoke_route_tableを作成します。
- Branch2とApp1 VPCをspoke_route_tableにアタッチします。
- static_route_tableからBranch2とApp1 VPCをデタッチします。合わせて172.16.0.0/16のスタティックルートを削除します。
疎通確認
【Branch2 -> GatewayVPCへの疎通確認】
【Branch2 -> App1への疎通確認】
※Gateway VPCまでパケットは飛んでいるので、GatewayVPC通信のみに絞るのが適切
以上、Transit Gatewayの検証でした!
続きは、IPsec-VPNにてTGWへ接続し、dynamic routingを検証 していきます。
Discussion