Transit GatewayとDirect Connectの併用構成

記事タイトルとURLをコピーする

Transit GatewayとDirect Connectを組み合わせた構成の案件が増えてきました。
更にそのような場合はAWSアカウントが複数ある場合が多いということもわかってきました。
そこで2020年2月に作るならこんな感じになるよねっていう構成を書いてみました。

構成図

細かいので拡大して見ていただければと思います。

ネットワーク設計のポイント

Transit GatewayとDirect Connectには仕様上の制約が多くあります。
私自身も完全には把握できていないのですが、いくつかお伝えできればと思います。
以下では、Transit GatewayをTGW、Direct Connect GatewayをDXGWと省略して記載します。

と、その前に

まずはAWSの動画を見ましょう

なお、Black Beltなどはドキュメント読むだけで済ませる方もいるかと思いますが、個人的には動画をオススメします。 わかりやすいということに加えて、ドキュメントに書いてないことを動画で話すこともあります。(後述します) また、東京では下記のトレーニングを受けることができます。 残念ながら現時点ではTransit Gatewayは含まれない構成のラボトレーニングですが、Direct Connectに触れることのできる貴重な機会ですので、こちらの参加もオススメします。

ポイント1.Transit VIFはConnectionにつき1本まで

Direct Connectは、1本のConnection(物理線)の中に複数のVIF(仮想インターフェース)を作成できます。
しかし、それはPrivate VIFの話で、Transit VIFは1本だけです。
そして、Direct ConnectとTGWを使う場合はTransit VIFが必要です。
この時点でそもそも難しいケースもあるかと思います。

ポイント2.AWS側が複数のAS(自律システム)を持つ

トランジットゲートウェイの関連付けに以下の記載があります。

トランジットゲートウェイ を 1 つ以上の Direct Connect ゲートウェイに関連付ける場合、トランジットゲートウェイ およびその Direct Connect ゲートウェイで使用される自律システム番号 (ASN) は異なる値である必要があります。たとえば、トランジットゲートウェイ と Direct Connect ゲートウェイの両方にデフォルトの ASN 64512 を使用すると、関連付けのリクエストは失敗します。

Direct ConnectとVGWの場合

  • オンプレ側ルータ(ASN:65000) --- BGP接続 --- VGW(ASN:64512)

Direct ConnectとTransit Gatewayの場合

  • オンプレ側ルータ(ASN:65000) --- BGP接続 --- DXGW(ASN:64512) --- BGP接続? --- TGW(ASN:64513)

DXGWがオンプレ側ルータとBGP接続をすることになります。 DXGWとTGWの接続は、設定的には関連付けるだでIPアドレスなども見えないので謎ですが、ASNが異なることから内部的にBGP接続をしていると推測します。 ログインして、ステータスを見ることができないので、ピンとこないのですが、DXGWやTGWは異なるASNにする必要があると覚えてください。

ポイント3.オンプレ側へ広報するCIDRは、DXGWの許可されたプリフィックスで設定する

許可されたプレフィックスのインタラクションによれば、オンプレ側ルータに広報されるのは許可されたプリフィックスで設定したCIDRとのことです。VPCのCIDRは関係が無いというのは意外でした。 なお、例では10.0.0.0/8とサマライズしてますが、10.2.0.0/16と10.3.0.0/16の2つを記載することも可能です。

ポイント4.Attachmentを配置するサブネットは、専用サブネットとする

各AZの任意のサブネット内にAttachmentを配置する必要がありますが、Attachment専用サブネットとするのがオススメです。 他のリソースがある既存サブネットに配置することも可能ですが、NACLがある時は上手く設計しないとトラブルが発生する可能性があります。 【AWS Black Belt Online Seminar】AWS Transit Gatewayの38分50秒で「ドキュメントに書いてないんですが...」と話されてます。 理由をきちんと理解するには、上記の動画でTGWのAZ間の通信経路を理解するといいと思います。

ポイント5.Transit Gateway RouteTableはAttachmentごとに作成する

TGW RouteTableには、Attachmentにパケットが到達した時に次にどのAttachmentから送信したらいいかを判断するための経路情報を記載します。
TGWは複数のルートテーブルを持つことができるので、基本的にはそちらをオススメします。
しかし、複数のルートテーブルを持つシステムというのは、複雑になります。
なぜ、そんなことをするのか理解しておきましょう。
実は今回の構成では、下記のように一つのTGW RouteTableを3つのAttachmentに関連付ける設計でも同じ結果になります。

しかし、もし急に下記のような通信要件に変わった場合に対応できなくなります。

  • AWSアカウント1とオンプレは通信させる
  • AWSアカウント2とオンプレは通信させる
  • AWSアカウント1とAWSアカウント2は通信させない

AttachmentごとにTGW RouteTableがあれば、下記の図のように一部のルートエントリを削除で対応できます。(グレーアウトさせた部分)

最後に

公式ドキュメント読みましょう。
クォータを見ると、「この制限を増やすことはできません。」という項目も多いです。

渡辺 信秀 (記事一覧)