記事を読んでいただきありがとうございます!
モブエンジニア(@mob-engineer)です!
今回は、AWS公式からUpされているTrangit Gatewayハンズオン記事をもとに詰まるポイントやユースケースについて考えてみたいと思います。
所見の方でサクッと読めるように平易な表現で執筆しておりますので、お気軽にお読みいただければ幸いです。
AWSハンズオンサイト
クラスメソッドさん記事
-
対象読者
-
構成イメージ
-
ハンズオン
- その1:トランジットゲートウェイによるVPC間接続
- その2:別のアカウントから VPC を追加する
- その3:ルートテーブルを使用してトラフィックを分離する
-
所感
対象読者
次のような課題を抱えている方に本記事をお役立ていただければ幸いです。
- Trangit Gatewayをざっくり触ってみたい方
- 触りながらユースケースを考えてみたい方
構成イメージ
ハンズオンページに掲載されている図を抜粋いたしました。
今回の構成として、バージニア北部リージョンと東京リージョンをTrangit Gatewayで接続したイメージとなります。
デプロイされるリソース一覧は次の通りです。
ハンズオン
ハンズオンを行う前に検証用のAWSアカウントをあらかじめ作成しておいてください。
AWS Organizationsを利用することで簡単に管理できると思います。
AWS Organizationsで作成したAWSアカウントへアクセス用にユーザアカウントを紐づけておくことを忘れないでください。
その1:トランジットゲートウェイによるVPC間接続
ハンズオン資料から今回行う構成について抜粋します。
- 最初にハンズオンページからCloudFormatinoのリソースをダウンロードしてください
- 検索ボックスにCloudFormationと入力します
- 検索結果よりCloudFormationをクリックします
- 右上のスタックの作成>新しいリソースの作成(標準)をクリックします
- 下へスクロールしテンプレートファイルのアップロードのラジオボタンをクリックします
- ファイルの選択ボタンをクリックするとファイル選択が行えるため、先ほどダウンロードしたテンプレートファイルを選択します
- 最下部へスクロールし次へボタンをクリックします
- スタック名に任意の名前を入れておきます
- 最下部へスクロールし次へボタンをクリックします
- 最下部へスクロールしAWS CloudFormation によって IAM リソースが作成される場合があることを承認しますのチェックボックスにチェックを入れます
- 次へボタンをクリックします
- 最下部へスクロールし送信ボタンをクリックします
設定画面について個人的に気になる箇所もいくつかあるので、
別途検証記事をまとめてみたいと思います。
- スタック一覧へ遷移します
- 作成したスタックのステータスがCREATE_COMPLETEになっていることを確認します
- 検索ボックスにEC2と入力します
- 検索結果よりEC2をクリックします
- 左側ペインよりインスタンスをクリックします
- クリック後、2台インスタンスが立ち上がっていることを確認します
- Name末尾が192-168-1-100のインスタンスのチェックボックスをクリックし、接続ボタンをクリックします
- 接続方法が表示されます
- セッションマネージャータブをクリックします
- 接続ボタンをクリックします
- 対向機器への疎通確認を行います
ping 10.0.1.100
- インターネット抜けしているか確認を行います
ping aws.amazon.com
対向機器(10.0.1.100)も同様に疎通確認を行います。
ping 192.168.1.100
ping aws.amazon.com
疎通確認をした結果として次の通りでした
それぞれのEC2インスタンスが所属しているVPCの設定についてみてみましょう
wstgwEc2Instance192-168-1-100
wstgwEc2Instance10-0-1-100
wstgwEc2Instance10-0-1-100が所属しているVPCのルートテーブルにインターネットゲートウェイが存在しないといった原因がわかりました。
ただし、今回のハンズオンではTrangit Gatewayを用いた設定のためTrangit Gatewayルートテーブルの追加を行います。
インターネット抜けしていないなぁと思ったらインターネットゲートウェイを設定していないはよくあるケースですね。
- 左側ペインよりTrangit Gatewayルートテーブルをクリック
- 表示されているルートテーブルIDをクリックします
- 設定画面が表示されます
- ルートタブをクリックし、静的ルートを作成ボタンをクリックします
- 静的ルート設定画面が表示されます
- 次の画像の通り設定し、静的ルートを作成ボタンをクリックします
- ルートが追加されていることを確認します
この状態で先ほど失敗した疎通確認を行ってみたいと思います。
ping aws.amazon.com
無事疎通が取れるようになりました。
その2:別のアカウントから VPC を追加する
次は別アカウントからVPCを追加して疎通確認を行ってみます。
2つのアカウントを交互に操作するため、シークレットウインドウで使い分けすることをお勧めします。
- あらかじめ作成した別アカウントへログインしました
- ラボ1と同じようにCloudFormationでリソースを作成します
- リソースに関しては以下URLを参考にしてください
- CloudFormationで一通り設定し実行しました
以下作業はアカウント1で行います。
- VPCメニューの左側ペインよりTrangit Gatewayをクリックします
- 作成済みのTrangit Gatewayをクリックし、アクション>Trangit Gatewayを共有をクリックします
AWS Network Managerについてポップアップが表示されていたので検証してみたいと思います。
- リソース共有を作成ボタンをクリックします
- リソース共有作成画面が表示されます
- 赤枠で囲っている通り設定後、次へボタンをクリックします
- デフォルト設定で問題ないため、次へボタンをクリックします
- 対向アカウントを登録し、次へボタンをクリックします
- リソースの共有が正常に作成されましたのポップアップが表示されていることを確認します
- ステータスがアクティブになっていることを確認します
以下作業はアカウント2で行います。
- 検索ボックスにResource Access Managerと入力
- 検索結果よりResource Access Managerをクリック
- 左側ペインのリソースの共有をクリック
- 表示されているリソース共有(wstgw-RAM)をクリック
- 上部のリソースの共有を承認ボタンをクリック
- リソースの共有を承認のポップアップが表示される
- 承認ボタンをクリックします
- ステータスがアクティブになっていることを確認します
アカウント間での承認対応はVPCピアリング設定でも行います。
- 検索ボックスにVPCを入力します
- 検索結果よりVPCをクリックします
- 左側ペインのTrangit Gatewayアタッチメントをクリックします
- 画面上部のTrangit Gatewayアタッチメントを作成ボタンをクリックします
- 名前タグにwstgwTgwVpcAttachmentPrivateVpc2を入力します
- Trangit Gateway IDにtgw-XXを選択します
- 今回のハンズオンでは一つだけでしか表示されません
- VPC IDにwstgwPrivateVpc2を選択します
- サブネットIDにwstgwPrivateVpc2TgwSubnetを選択します
- 最下部のTrangit Gatewayアタッチメントを作成ボタンをクリックします
- 一定時間経過後、作成したTrangit Gatewayアタッチメントの状態がAvailableになっていることを確認します
- 左側ペインのルートテーブルをクリックします
- wstgwRtbPrivateVpc2PrivateSubnetのルートをクリックします
- 画面上部のアクション>ルートを編集をクリックします
- ルートの追加ボタンをクリックするとルート追加ができます
- 赤枠の通りルートを追加します
- 追加したら変更を保存ボタンをクリックします
- ルートが追加されていることを確認します
それでは、アカウント1・アカウント2にあるEC2インスタンスの実行結果を見てみたいと思います。
BoundaryVPC(192-168-1-100)
PrivateVPC1(10.0.1.100)
PrivateVPC2(10.1.1.100)
とりあえず、各EC2インスタンス間とネットワーク抜けしていることは確認取れました。
その3:ルートテーブルを使用してトラフィックを分離する
今までの構成はいわゆるフルメッシュ構成でしたが、
設計要件によってはハブとなるEC2を経由した通信を求められる場合があります。(ハブandスポーク構成)
ハブandスポーク構成を実現するハンズオンを行っていきたいと思います。
本セクションではアカウント1を操作します。
- 左側ペインよりTrangit Gatewayルートテーブルをクリックします
- 画面上部のTrangit Gatewayルートテーブルを作成ボタンをクリックします
- 名前タグにwstgwRtbPrivateVPCを入力します
- Trangit Gateway IDはプルダウンをクリックして表示されたものをクリックします
- 設定後、Trangit Gatewayルートテーブルを作成ボタンをクリックします
- 左側ペインよりTrangit Gatewayアタッチメントをクリックします
- 赤枠で囲っているアタッチメントIDをメモしておきます(削除するため)
- 左側ペインよりTrangit Gatewayルートテーブルをクリックします
- Nameがブランクのルートテーブルをクリックします
- 関連付けタブをクリックし先ほど控えたアタッチメントIDと同じものをチェック>関連付けを削除をクリックします
一個ずつしかアタッチメントは削除できません。
削除完了後の関連付け状態
- Nameがブランクでない方のルートテーブルをクリックします
- 関連付けを作成ボタンをクリックします
- 関連付けるアタッチメントのプルダウンをVPC1で終わるものをクリックします
- 関連付けを作成ボタンをクリックします
- Nameがブランクでない方のルートテーブルをクリックします
- 画面上部のアクション>静的ルートを作成をクリックします
- CIRDに0.0.0.0/0を入力します
- アタッチメントのプルダウンを*VPCで終わるもの**をクリックします
- 静的ルートを作成ボタンをクリックします
- 同じ要領で10.0.0.0/15宛のルートは拒否する設定**を入れておきます
今回の10.0.1.100と10.1.1.100のアドレス帯は10.0.0.0/15に含まれるため、
10.0.0.0/15をBlackhole処理すれば転送が拒否されます。
それでは同じように疎通確認を行ってみます。
BoundaryVPC(192-168-1-100)
PrivateVPC1(10.0.1.100)
PrivateVPC2(10.1.1.100)
ハンズオンと異なる挙動でしたので調査が必要だと思いました。
所感
とりあえず一通りTrangit Gatewayの機能を理解するのであれば、本ハンズオンだけで事足りると思います。(うまくいかなかった個所は調査が必要ですが)
そのうえで、Trangit Gatewayを利用するユースケースとして次のようなパターンがあると考えています。
- 複数アカウントでのネットワーク利用がある場合
- ネットワークルートを一元管理したい場合
- トラフィックの監視について最低限行いたい場合
ただし、Trangit Gatewayのハンズオンを触ったうえで感じたこととして、CloudFormatinoやCDKなどのIaCを活用しないと設定ミスが起きる可能性があるといった印象を持ちました。(作業ステップ数が多いので)
また、詳細な挙動調査についても次回以降行っていきたいと思います。
最後まで記事をお読みいただきありがとうございました!!
Views: 0