<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Direct Connect on 図解 わかりやすいAWS</title><link>https://cloud-aws.net/tags/direct-connect/</link><description>Recent content in Direct Connect on 図解 わかりやすいAWS</description><generator>Hugo -- gohugo.io</generator><language>ja</language><lastBuildDate>Sat, 26 Nov 2022 00:00:00 +0000</lastBuildDate><atom:link href="https://cloud-aws.net/tags/direct-connect/index.xml" rel="self" type="application/rss+xml"/><item><title>マルチリージョン接続 — DX-GWの限界とTransit Gatewayピアリング</title><link>https://cloud-aws.net/post/aws-transit-gateway-peering/</link><pubDate>Sat, 26 Nov 2022 00:00:00 +0000</pubDate><guid>https://cloud-aws.net/post/aws-transit-gateway-peering/</guid><description>
 &lt;blockquote&gt;
 &lt;p&gt;&lt;strong&gt;連載: VyOSで作るAWSハイブリッド接続（全4回）&lt;/strong&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;a class="link" href="https://cloud-aws.net/post/site-to-site-vpn-vyos/" &gt;単一Site-to-Site VPN — VyOS×AWSの基礎&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="link" href="https://cloud-aws.net/post/aws-vpn-bgp-traffic-engineering/" &gt;トンネル冗長化とBGP経路制御&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="link" href="https://cloud-aws.net/post/aws-transit-gateway-vpn-ecmp/" &gt;Transit Gatewayへの置き換えとECMP&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;マルチリージョン接続 — DX-GWの限界とTGWピアリング&lt;/strong&gt;（この記事）&lt;/li&gt;
&lt;/ol&gt;

 &lt;/blockquote&gt;
&lt;h2 id="0-この回のテーマ"&gt;0. この回のテーマ
&lt;/h2&gt;&lt;p&gt;&lt;a class="link" href="https://cloud-aws.net/post/aws-transit-gateway-vpn-ecmp/" &gt;第3回&lt;/a&gt;で、VPNの終端をリージョンのハブ＝&lt;strong&gt;Transit Gateway&lt;/strong&gt;にしました。ハブができたので、次の自然な欲求は &lt;strong&gt;「別のリージョンともつなぎたい」&lt;/strong&gt; です。&lt;/p&gt;
&lt;p&gt;東京（ap-northeast-1）のVPCと、バージニア（us-east-1）のVPCを相互接続し、さらに&lt;strong&gt;オンプレ（VyOS）から両リージョンに届く&lt;/strong&gt;状態をゴールにします。&lt;/p&gt;
&lt;p&gt;ここで多くの人が最初に考えるのが &lt;strong&gt;Direct Connect Gateway（DX-GW）&lt;/strong&gt; です。「DX回線を複数リージョンで共用できる」と聞くと、リージョン間もつながりそうに見える。ところが、&lt;strong&gt;ここに落とし穴があります&lt;/strong&gt;。この回は「DX-GWでは越えられない壁」を確認してから、正しい道具＝&lt;strong&gt;TGWピアリング&lt;/strong&gt;で超えます。&lt;/p&gt;
&lt;h2 id="1-なぜdx-gwではリージョン間がつながらないのか"&gt;1. なぜDX-GWではリージョン間がつながらないのか
&lt;/h2&gt;&lt;p&gt;DX-GWは、&lt;strong&gt;1本のDirect Connect回線を、複数リージョン・複数アカウントのVPC/TGWから共用する&lt;/strong&gt;ための仕組みです。「オンプレ↔各リージョン」の通信を提供します。&lt;/p&gt;
&lt;p&gt;ですが、&lt;strong&gt;DX-GWはリージョン間（TGW↔TGW）のルートを交換しません&lt;/strong&gt;。各リージョンのTGWルートテーブルは、DX-GW経由で別リージョンの経路を学習しないからです。&lt;/p&gt;
&lt;p&gt;&lt;img alt="dx-gw limitation" class="gallery-image" data-flex-basis="548px" data-flex-grow="228" height="788" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://cloud-aws.net/post/aws-transit-gateway-peering/dxgw-limitation.png" srcset="https://cloud-aws.net/post/aws-transit-gateway-peering/dxgw-limitation_hu_e2faa5d976c16bb1.png 800w, https://cloud-aws.net/post/aws-transit-gateway-peering/dxgw-limitation_hu_8468bea2d5ce55a8.png 1600w, https://cloud-aws.net/post/aws-transit-gateway-peering/dxgw-limitation.png 1800w" width="1800"&gt;&lt;/p&gt;
&lt;p&gt;図の &lt;code&gt;×&lt;/code&gt; がそれです。オンプレからは各リージョンに届くのに、&lt;strong&gt;東京VPC ↔ バージニアVPC が直接つながらない&lt;/strong&gt;。DX-GWはあくまで「オンプレとAWSをつなぐDX回線の共用ポイント」であって、「リージョン間ルータ」ではないからです。&lt;/p&gt;

 &lt;blockquote&gt;
 &lt;p&gt;&lt;strong&gt;補足:&lt;/strong&gt; 今回DXは用意できないので、DX-GWは「あるものと想定」して実際には構築していません。Terraform定義だけ置いておきます。要点は &lt;strong&gt;「DX-GWの守備範囲はオンプレ↔AWSであって、リージョン間ではない」&lt;/strong&gt; という役割の理解です。&lt;/p&gt;

 &lt;/blockquote&gt;
&lt;details&gt;
&lt;summary&gt;DX-GWのTerraform（参考・未構築）&lt;/summary&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-hcl" data-lang="hcl"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;resource&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;aws_dx_gateway&amp;#34; &amp;#34;test&amp;#34;&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt; name&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;satoshi-dxgw&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt; amazon_side_asn&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;64600&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="err"&gt;//&lt;/span&gt; &lt;span class="k"&gt;東京TGWをDX&lt;/span&gt;&lt;span class="err"&gt;-&lt;/span&gt;&lt;span class="k"&gt;GWに関連付け&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;resource&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;aws_dx_gateway_association&amp;#34; &amp;#34;jp_tgw&amp;#34;&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt; dx_gateway_id&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;aws_dx_gateway&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="k"&gt;test&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="k"&gt;id&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt; associated_gateway_id&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;aws_ec2_transit_gateway&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="k"&gt;tgw&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="k"&gt;id&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt; allowed_prefixes&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="s2"&gt;&amp;#34;10.99.0.0/16&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="c1"&gt; # 東京VPC
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="s2"&gt;&amp;#34;10.0.2.0/24&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="c1"&gt; # オンプレ(VPN経由)
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="err"&gt;//&lt;/span&gt; &lt;span class="k"&gt;バージニアTGWをDX&lt;/span&gt;&lt;span class="err"&gt;-&lt;/span&gt;&lt;span class="k"&gt;GWに関連付け&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;resource&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;aws_dx_gateway_association&amp;#34; &amp;#34;us_tgw&amp;#34;&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt; provider&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;aws&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="k"&gt;us&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt; dx_gateway_id&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;aws_dx_gateway&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="k"&gt;test&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="k"&gt;id&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt; associated_gateway_id&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;aws_ec2_transit_gateway&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="k"&gt;tgw_us&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="k"&gt;id&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt; allowed_prefixes&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;10.201.0.0/16&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="c1"&gt; # バージニアVPC
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;code&gt;allowed_prefixes&lt;/code&gt; で各リージョンの経路を許可しても、それは「オンプレ↔そのリージョン」の話。&lt;strong&gt;リージョン同士の経路はここには現れません。&lt;/strong&gt;&lt;/p&gt;
&lt;/details&gt;
&lt;h2 id="2-リージョン間をつなぐ正解--transit-gatewayピアリング"&gt;2. リージョン間をつなぐ正解 — Transit Gatewayピアリング
&lt;/h2&gt;&lt;p&gt;リージョン間を直接つなぐ道具が &lt;strong&gt;TGWピアリング&lt;/strong&gt;です。東京TGWとバージニアTGWを&lt;strong&gt;1対1でピアリング&lt;/strong&gt;し、AWSのバックボーン上でリージョン間トラフィックを運びます。&lt;/p&gt;
&lt;p&gt;&lt;img alt="tgw peering" class="gallery-image" data-flex-basis="547px" data-flex-grow="228" height="1966" loading="lazy" sizes="(max-width: 767px) calc(100vw - 30px), (max-width: 1023px) 700px, (max-width: 1279px) 950px, 1232px" src="https://cloud-aws.net/post/aws-transit-gateway-peering/tgw-peering.png" srcset="https://cloud-aws.net/post/aws-transit-gateway-peering/tgw-peering_hu_66a6458ecb295c94.png 800w, https://cloud-aws.net/post/aws-transit-gateway-peering/tgw-peering_hu_b210e52bfb05c033.png 1600w, https://cloud-aws.net/post/aws-transit-gateway-peering/tgw-peering_hu_da9727974b41eef5.png 2400w, https://cloud-aws.net/post/aws-transit-gateway-peering/tgw-peering.png 4483w" width="4483"&gt;&lt;/p&gt;
&lt;p&gt;構成のポイントは2つあります。&lt;/p&gt;
&lt;h3 id="-tgwのasnをリージョンごとに分ける"&gt;① TGWのASNをリージョンごとに分ける
&lt;/h3&gt;&lt;p&gt;ピアリングする2つのTGWは、&lt;strong&gt;別々のASN&lt;/strong&gt;を持たせます（今回は東京 &lt;code&gt;65100&lt;/code&gt; / バージニア &lt;code&gt;65200&lt;/code&gt;）。&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-hcl" data-lang="hcl"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="err"&gt;//&lt;/span&gt; &lt;span class="k"&gt;東京TGW&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;resource&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;aws_ec2_transit_gateway&amp;#34; &amp;#34;tgw&amp;#34;&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt; amazon_side_asn&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="m"&gt;65100&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt; auto_accept_shared_attachments&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;enable&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt; tags&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt; { Name&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;satoshi-tgw-jp&amp;#34;&lt;/span&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="err"&gt;//&lt;/span&gt; &lt;span class="k"&gt;バージニアTGW&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;resource&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;aws_ec2_transit_gateway&amp;#34; &amp;#34;tgw_us&amp;#34;&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt; provider&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;aws&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="k"&gt;us&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt; amazon_side_asn&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="m"&gt;65200&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt; auto_accept_shared_attachments&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;enable&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt; tags&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt; { Name&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;satoshi-tgw-us&amp;#34;&lt;/span&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id="-ピアリングは張るとルートを書くが別作業"&gt;② ピアリングは「張る」と「ルートを書く」が別作業
&lt;/h3&gt;&lt;p&gt;ここが一番の落とし穴です。&lt;strong&gt;TGWピアリングはBGPでルートを自動伝播しません&lt;/strong&gt;。ピアリング接続を張っただけでは1パケットも流れない。&lt;strong&gt;各TGWのルートテーブルに、相手リージョンのCIDR宛のルートを手で登録&lt;/strong&gt;して初めて通ります。&lt;/p&gt;
&lt;p&gt;VPNやVPC内のダイナミックなルート学習に慣れていると、ここで確実にハマります。ピアリングは「線をつなぐ」だけ、「どの宛先をその線に流すか」は別途スタティックに教える、と覚えてください。&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-hcl" data-lang="hcl"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="err"&gt;//&lt;/span&gt; &lt;span class="k"&gt;ピアリング接続を張る&lt;/span&gt;&lt;span class="err"&gt;（&lt;/span&gt;&lt;span class="k"&gt;東京&lt;/span&gt;&lt;span class="err"&gt;→&lt;/span&gt;&lt;span class="k"&gt;バージニア&lt;/span&gt;&lt;span class="err"&gt;）&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;resource&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;aws_ec2_transit_gateway_peering_attachment&amp;#34; &amp;#34;jp_us&amp;#34;&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt; peer_region&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;us-east-1&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt; peer_transit_gateway_id&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;aws_ec2_transit_gateway&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="k"&gt;tgw_us&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="k"&gt;id&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt; transit_gateway_id&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;aws_ec2_transit_gateway&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="k"&gt;tgw&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="k"&gt;id&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="err"&gt;//&lt;/span&gt; &lt;span class="k"&gt;バージニア側で受諾&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;resource&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;aws_ec2_transit_gateway_peering_attachment_accepter&amp;#34; &amp;#34;tgw_us&amp;#34;&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt; provider&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;aws&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="k"&gt;us&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt; transit_gateway_attachment_id&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;aws_ec2_transit_gateway_peering_attachment&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="k"&gt;jp_us&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="k"&gt;id&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="err"&gt;//&lt;/span&gt; &lt;span class="k"&gt;東京TGWルートテーブル&lt;/span&gt;&lt;span class="err"&gt;:&lt;/span&gt; &lt;span class="k"&gt;バージニアVPC宛&lt;/span&gt; &lt;span class="err"&gt;→&lt;/span&gt; &lt;span class="k"&gt;ピアリングへ&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;resource&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;aws_ec2_transit_gateway_route&amp;#34; &amp;#34;jp_to_us&amp;#34;&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt; destination_cidr_block&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;10.201.0.0/16&amp;#34;&lt;/span&gt; &lt;span class="err"&gt;//&lt;/span&gt; &lt;span class="k"&gt;バージニアVPC&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt; transit_gateway_attachment_id&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;aws_ec2_transit_gateway_peering_attachment&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="k"&gt;jp_us&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="k"&gt;id&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt; transit_gateway_route_table_id&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;aws_ec2_transit_gateway&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="k"&gt;tgw&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="k"&gt;association_default_route_table_id&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="err"&gt;//&lt;/span&gt; &lt;span class="k"&gt;バージニアTGWルートテーブル&lt;/span&gt;&lt;span class="err"&gt;:&lt;/span&gt; &lt;span class="k"&gt;東京VPC宛&lt;/span&gt;&lt;span class="err"&gt;・&lt;/span&gt;&lt;span class="k"&gt;オンプレ宛&lt;/span&gt; &lt;span class="err"&gt;→&lt;/span&gt; &lt;span class="k"&gt;ピアリングへ&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;resource&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;aws_ec2_transit_gateway_route&amp;#34; &amp;#34;us_to_jp&amp;#34;&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt; provider&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;aws&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="k"&gt;us&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt; destination_cidr_block&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;10.99.0.0/16&amp;#34;&lt;/span&gt; &lt;span class="err"&gt;//&lt;/span&gt; &lt;span class="k"&gt;東京VPC&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt; transit_gateway_attachment_id&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;aws_ec2_transit_gateway_peering_attachment&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="k"&gt;jp_us&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="k"&gt;id&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt; transit_gateway_route_table_id&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;aws_ec2_transit_gateway&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="k"&gt;tgw_us&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="k"&gt;association_default_route_table_id&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;resource&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;aws_ec2_transit_gateway_route&amp;#34; &amp;#34;us_to_onprem&amp;#34;&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt; provider&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;aws&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="k"&gt;us&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt; destination_cidr_block&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;10.0.2.0/24&amp;#34;&lt;/span&gt; &lt;span class="err"&gt;//&lt;/span&gt; &lt;span class="k"&gt;オンプレ&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="k"&gt;VyOS&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt; transit_gateway_attachment_id&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;aws_ec2_transit_gateway_peering_attachment&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="k"&gt;jp_us&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="k"&gt;id&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt; transit_gateway_route_table_id&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;aws_ec2_transit_gateway&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="k"&gt;tgw_us&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="k"&gt;association_default_route_table_id&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;バージニア側からオンプレ（&lt;code&gt;10.0.2.0/24&lt;/code&gt;）に戻すルートも忘れずに。&lt;strong&gt;東京TGWを経由してVPNに落ちる&lt;/strong&gt;ので、&lt;code&gt;10.0.2.0/24&lt;/code&gt;宛もピアリングアタッチメントに向けます。&lt;/p&gt;
&lt;h2 id="3-オンプレvyosから見えるもの"&gt;3. オンプレ（VyOS）から見えるもの
&lt;/h2&gt;&lt;p&gt;面白いのは、&lt;strong&gt;VyOSは何も追加設定していない&lt;/strong&gt;のに、バージニアVPC（&lt;code&gt;10.201.0.0/16&lt;/code&gt;）への経路を学習している点です。東京AWSが、VPN越しに「US向けはこっち」とBGPで広告してくれるからです。しかも第3回のECMPが効いていて、2本のトンネル両方から等コストで届いています。&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;vyos@vyos:~$ show ip route
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;B&amp;gt;* 10.99.0.0/16 [20/100] via 169.254.61.113, vti1, weight 1 ## 東京VPC
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; * via 169.254.234.49, vti0, weight 1
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;B&amp;gt;* 10.201.0.0/16 [20/100] via 169.254.61.113, vti1, weight 1 ## バージニアVPC(新規)
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; * via 169.254.234.49, vti0, weight 1
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;BGPテーブルでも、東京・バージニア両方のVPCが、AS-PATH &lt;code&gt;65100&lt;/code&gt;（東京TGWのASN）越しに2本で見えています。&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;vyos@vyos:~$ show ip bgp
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; Network Next Hop Metric LocPrf Weight Path
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;*&amp;gt; 10.0.2.0/24 0.0.0.0 0 32768 i
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;*= 10.99.0.0/16 169.254.61.113 100 0 65100 i
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;*&amp;gt; 169.254.234.49 100 0 65100 i
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;*= 10.201.0.0/16 169.254.61.113 100 0 65100 i
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;*&amp;gt; 169.254.234.49 100 0 65100 i
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="4-エンドツーエンドの疎通確認"&gt;4. エンドツーエンドの疎通確認
&lt;/h2&gt;&lt;p&gt;3つの経路をすべて確認します。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;東京VPC → バージニアVPC&lt;/strong&gt;（リージョン間。これがDX-GWでは通らなかった経路）:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;$ ping 10.201.33.240
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;64 bytes from 10.201.33.240: icmp_seq=1 ttl=252 time=147 ms
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;64 bytes from 10.201.33.240: icmp_seq=2 ttl=252 time=145 ms
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;オンプレVyOS → バージニアVPC&lt;/strong&gt;（VPN→東京TGW→ピアリング→バージニア、と3ホップ跨ぐ）:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;vyos@vyos:~$ ping 10.201.33.240 source-address 10.0.2.15
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;64 bytes from 10.201.33.240: icmp_seq=1 ttl=251 time=169 ms
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;64 bytes from 10.201.33.240: icmp_seq=2 ttl=251 time=170 ms
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;バージニアVPC → オンプレVyOS&lt;/strong&gt;（戻り。バージニアTGWの&lt;code&gt;10.0.2.0/24&lt;/code&gt;ルートが効いている証明）:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;$ ping 10.0.2.15
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;64 bytes from 10.0.2.15: icmp_seq=1 ttl=61 time=166 ms
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;64 bytes from 10.0.2.15: icmp_seq=2 ttl=61 time=176 ms
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;東京経由（約25ms）に対し、バージニアは約145〜170ms。太平洋を渡る分のレイテンシがそのまま乗っていて、AWSバックボーン経由でリージョン間を通っていることが数字でも分かります。&lt;/p&gt;
&lt;h2 id="5-連載のまとめとここから先"&gt;5. 連載のまとめと、ここから先
&lt;/h2&gt;&lt;p&gt;4回かけて、VyOSを偽オンプレCGWに見立てたまま、AWSハイブリッド接続の能力を1段ずつ積み上げました。&lt;/p&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;回&lt;/th&gt;
 &lt;th&gt;到達点&lt;/th&gt;
 &lt;th&gt;核心&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;1&lt;/td&gt;
 &lt;td&gt;単一VPN&lt;/td&gt;
 &lt;td&gt;IPsec+BGPの基礎と「謎の値の出どころ」&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;2&lt;/td&gt;
 &lt;td&gt;冗長化&lt;/td&gt;
 &lt;td&gt;BGP経路制御は&lt;strong&gt;方向で道具が変わる&lt;/strong&gt;（Weight / AS-Path Prepend）&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;3&lt;/td&gt;
 &lt;td&gt;TGW + ECMP&lt;/td&gt;
 &lt;td&gt;終端をハブルータTGWに。&lt;strong&gt;MED 100/100で両系アクティブ&lt;/strong&gt;、非対称ルーティングの副作用&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;4&lt;/td&gt;
 &lt;td&gt;マルチリージョン&lt;/td&gt;
 &lt;td&gt;&lt;strong&gt;DX-GWはリージョン間を繋がない&lt;/strong&gt;。TGWピアリングは「張る」と「ルートを書く」が別作業&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;道具の守備範囲を取り違えない、というのが通底するテーマでした。VGWとTGW、DX-GWとTGWピアリング——名前が似ていても役割の格が違います。&lt;/p&gt;
&lt;h3 id="今後の拡張未検証構想"&gt;今後の拡張（未検証・構想）
&lt;/h3&gt;&lt;p&gt;この検証環境はさらに伸ばせます。以下は今後の課題として:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;AWS Network Firewall&lt;/strong&gt;: SG/ACLでは難しい、ステートフル＋ブラックリスト＋ドメインベースのフィルタを中央集約。TGWの経路上に挟む構成&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Accelerated Site-to-Site VPN&lt;/strong&gt;: AWS Global Accelerator経由でVPNを高速化（TGW終端が必須、VGW不可）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;PrivateLink / Route 53 Resolver&lt;/strong&gt;: サービス公開・DNSのハイブリッド解決&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;ベースができていれば、これらは「経路の途中に何を挟むか」の話に落ちます。土台としてのVyOS×TGW構成は、そのまま実験台に使えます。&lt;/p&gt;</description></item></channel></rss>