おれさまラボ

実際に手を動かして理解を深めるブログ。

複数の AWS Transit gateway を VPC にアタッチできるのか

はじめに

必要に迫られたので、Transit gateway を使った実験をしてみました。

実験の背景(シナリオ)

AWS アカウントα と AWS アカウントβ が存在し、α は β 内で作成された Transit Gateway をすでに使用しています。しかし、α 側の組織でも Transit gateway を使ってアカウント内の VPC を接続したいという要求が出てきました。このとき、β の Transit gateway と接続している VPC-x は α の Transit gateway と β の Transit gateway の双方に接続する必要があります。

実験の目的

複数の AWS Transit gateway を 1つの VPC にアタッチできるのか、また疎通が問題ないかを確認します。

実験

全部で3つの実験を行いました。

実験1

VPC-A と VPC-B を Transit gateway(TGW-A)で接続し、疎通確認を行いました。一般的な構成であり、ping による疎通確認が成功しました。

f:id:naoto408:20200719104502p:plain

実験2

実験2-a

実験1の構成に Transit gateway(TGW-B)を追加し、VPC-A と VPC-B に接続できるか確認しました。成功しました。

実験2-b

実験2-a の構成で、TGW-B を経由した VPC-A と VPC-B 間の疎通がとれるか確認しました。確認にあたっては EC2 が所属する各サブネットのルートテーブルに /32 のルートを追加し、ターゲットに TGW-B を指定しました。こちらも ping による疎通確認が成功しました。

f:id:naoto408:20200719104512p:plain

実験3

アカウント間の Transit gateway 接続でも 複数の Transit gateway を 1つの VPC にアタッチできるのか確認しました。実験1の構成に Shared Transit gateway(TGW-X)を追加しました。アカウント間であっても1つの VPC に複数の Transit gateway をアタッチすることができました。相手側の都合により、疎通確認は取れませんでしたが、恐らくうまくいくはずです。

f:id:naoto408:20200719104621p:plain

結果

アカウント内でもアカウント間でも、Transit gateway を1つの VPC にアタッチすることができました。また、通信も問題なく行え、パケットロスも見られませんでした(各実験で 1,000 発の Ping を打ってロスがないことを確認)。

考察

今回の構成だと EC2-a → EC2-b(逆もまた然り)で traceroute を打っても結果は * となってしまい、途中経路の確認がとれませんでした。理論上、サブネットのルートテーブルに /32 のルートを追加しているので経路が切り替わっているはずですが、事実確認は取れていません。

これを確認するアイデアとしては、Transit gateway を流れるトラフィック量を監視してあげればいいと思いますが、今回はそこまで確認できていません。なお、Transit gateway のルートアナライザも使ってみましたが、あまり役には立ちませんでした。

もうひとつ、Transit gateway の接続構成は、ネットワークアナライザでトポロジを確認することができます。趣旨とは関係ありませんが、別アカウントからシェアされた Transit gateway をトポロジに反映することは権限の問題でできませんでした。これもできるようになれば、ネットワーク構成を把握する上で大変強いと思うのですが、残念です。

おわりに

身近に検証を手伝ってくれる仲間がいるとはかどりますね。大変ありがたかったです。

以上