<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>BGP on 図解 わかりやすいAWS</title><link>https://cloud-aws.net/tags/bgp/</link><description>Recent content in BGP on 図解 わかりやすいAWS</description><generator>Hugo -- gohugo.io</generator><language>ja</language><lastBuildDate>Thu, 24 Nov 2022 00:00:00 +0000</lastBuildDate><atom:link href="https://cloud-aws.net/tags/bgp/index.xml" rel="self" type="application/rss+xml"/><item><title>VGWからTransit Gatewayへ — VPNのECMP冗長化</title><link>https://cloud-aws.net/post/aws-transit-gateway-vpn-ecmp/</link><pubDate>Thu, 24 Nov 2022 00:00:00 +0000</pubDate><guid>https://cloud-aws.net/post/aws-transit-gateway-vpn-ecmp/</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;strong&gt;Transit Gatewayへの置き換えとECMP&lt;/strong&gt;（この記事）&lt;/li&gt;
&lt;li&gt;&lt;a class="link" href="https://cloud-aws.net/post/aws-transit-gateway-peering/" &gt;マルチリージョン接続 — DX-GWの限界とTGWピアリング&lt;/a&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-vpn-bgp-traffic-engineering/" &gt;第2回&lt;/a&gt;では、VPNの終端に &lt;strong&gt;VGW（仮想プライベートゲートウェイ）&lt;/strong&gt; を使い、2本のトンネルをBGPで&lt;strong&gt;アクティブ/スタンバイ&lt;/strong&gt;に制御しました。&lt;/p&gt;
&lt;p&gt;今回はこの終端を &lt;strong&gt;Transit Gateway（TGW）&lt;/strong&gt; に置き換えます。狙いは2つです。&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;2本のトンネルを同時に使う（ECMP / ロードバランス）&lt;/strong&gt; 構成にする&lt;/li&gt;
&lt;li&gt;将来の拡張（複数VPC・マルチリージョン）の土台を作る&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id="vgwとtgwは役割の格が違う"&gt;VGWとTGWは役割の格が違う
&lt;/h3&gt;&lt;p&gt;ネットワーク機器の感覚で対比すると分かりやすいです。&lt;/p&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;&lt;/th&gt;
 &lt;th&gt;VGW&lt;/th&gt;
 &lt;th&gt;Transit Gateway&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;立ち位置&lt;/td&gt;
 &lt;td&gt;&lt;strong&gt;1つのVPC専用&lt;/strong&gt;のVPN終端装置&lt;/td&gt;
 &lt;td&gt;リージョン規模の&lt;strong&gt;ハブルータ&lt;/strong&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;束ねられるもの&lt;/td&gt;
 &lt;td&gt;そのVPCとのVPN/DXだけ&lt;/td&gt;
 &lt;td&gt;複数VPC・複数VPN・DX・別リージョンのTGWまで&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;例えるなら&lt;/td&gt;
 &lt;td&gt;拠点ルータのVPNモジュール&lt;/td&gt;
 &lt;td&gt;データセンターのコアスイッチ／ルータ&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;VGWが「VPCに後付けするVPN口」なら、TGWは「VPCもVPNもDXも全部ぶら下げる中央ルータ」です。今はVPN1本をつなぐだけですが、第4回でこのハブ性がマルチリージョン接続の鍵になります。&lt;/p&gt;
&lt;p&gt;そしてもう一つ、&lt;strong&gt;TGWはECMP（Equal-Cost Multi-Path）に対応&lt;/strong&gt;しています。これが今回の挙動差の本体です。&lt;/p&gt;
&lt;h2 id="1-vyos側-経路制御を外す"&gt;1. VyOS側: 経路制御を「外す」
&lt;/h2&gt;&lt;p&gt;第2回では、2本を意図的に偏らせるためにWeightとAS-Path Prependを入れました。ECMPは&lt;strong&gt;両トンネルを等コストにして同時利用する&lt;/strong&gt;のが目的なので、この偏りを&lt;strong&gt;削除&lt;/strong&gt;します。&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-gdscript3" data-lang="gdscript3"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="o"&gt;//&lt;/span&gt; &lt;span class="n"&gt;VyOS&lt;/span&gt; &lt;span class="err"&gt;→&lt;/span&gt; &lt;span class="n"&gt;AWS&lt;/span&gt; &lt;span class="err"&gt;の偏り（&lt;/span&gt;&lt;span class="n"&gt;Weight&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="n"&gt;delete&lt;/span&gt; &lt;span class="n"&gt;protocols&lt;/span&gt; &lt;span class="n"&gt;bgp&lt;/span&gt; &lt;span class="n"&gt;neighbor&lt;/span&gt; &lt;span class="mf"&gt;169.254&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="mf"&gt;234.49&lt;/span&gt; &lt;span class="n"&gt;address&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;family&lt;/span&gt; &lt;span class="n"&gt;ipv4&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;unicast&lt;/span&gt; &lt;span class="n"&gt;weight&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;300&amp;#39;&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 class="o"&gt;//&lt;/span&gt; &lt;span class="n"&gt;AWS&lt;/span&gt; &lt;span class="err"&gt;→&lt;/span&gt; &lt;span class="n"&gt;VyOS&lt;/span&gt; &lt;span class="err"&gt;の偏り（&lt;/span&gt;&lt;span class="n"&gt;AS&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="ne"&gt;Path&lt;/span&gt; &lt;span class="n"&gt;Prepend&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="n"&gt;delete&lt;/span&gt; &lt;span class="n"&gt;protocols&lt;/span&gt; &lt;span class="n"&gt;bgp&lt;/span&gt; &lt;span class="n"&gt;neighbor&lt;/span&gt; &lt;span class="mf"&gt;169.254&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="mf"&gt;61.113&lt;/span&gt; &lt;span class="n"&gt;address&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;family&lt;/span&gt; &lt;span class="n"&gt;ipv4&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;unicast&lt;/span&gt; &lt;span class="n"&gt;route&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;map&lt;/span&gt; &lt;span class="k"&gt;export&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;VPC-Tunnel-2-OUT&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;削除後のBGPテーブルを見ると、2本が等コストになり、&lt;code&gt;*=&lt;/code&gt;（multipath = ECMP対象）のマークが付きます。&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;*&amp;gt; 10.99.0.0/16 169.254.234.49 100 0 64512 i
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;*= 169.254.61.113 100 0 64512 i ## = はmultipath
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;code&gt;*&amp;gt;&lt;/code&gt; と &lt;code&gt;*=&lt;/code&gt; の両方が有効経路として使われる状態、これがECMPです。&lt;/p&gt;
&lt;h2 id="2-aws側-vgwを外しtgwを作るterraform"&gt;2. AWS側: VGWを外しTGWを作る（Terraform）
&lt;/h2&gt;&lt;p&gt;ここから初めてTerraformで組みます。やることは「TGWを作る」「ネットワーク用サブネットにアタッチする」「VPN接続をTGWに紐づける」の3点です。&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;Transit&lt;/span&gt; &lt;span class="k"&gt;Gateway本体&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; 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&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_vpc_attachment&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; subnet_ids&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="k"&gt;aws_subnet&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="k"&gt;network&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="k"&gt;id&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_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; vpc_id&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;var&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="k"&gt;vpc&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; 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;tgw-attach-shared-vpc&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;Publicサブネットから&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="m"&gt;10&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="m"&gt;0&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="m"&gt;2&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="m"&gt;0&lt;/span&gt;&lt;span class="err"&gt;/&lt;/span&gt;&lt;span class="m"&gt;24&lt;/span&gt;&lt;span class="p"&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_route&amp;#34; &amp;#34;public_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; route_table_id&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;aws_route_table&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="k"&gt;pub&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; 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&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;Site&lt;/span&gt;&lt;span class="err"&gt;-&lt;/span&gt;&lt;span class="k"&gt;to&lt;/span&gt;&lt;span class="err"&gt;-&lt;/span&gt;&lt;span class="k"&gt;Site&lt;/span&gt; &lt;span class="k"&gt;VPNの接続先を&lt;/span&gt; &lt;span class="k"&gt;VGW&lt;/span&gt; &lt;span class="k"&gt;ではなく&lt;/span&gt; &lt;span class="k"&gt;TGW&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_vpn_connection&amp;#34; &amp;#34;vpn&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; 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 class="err"&gt;//&lt;/span&gt; &lt;span class="err"&gt;←&lt;/span&gt; &lt;span class="k"&gt;ここがVGWからの変更点&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt; customer_gateway_id&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;aws_customer_gateway&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="k"&gt;cgw&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; type&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;ipsec.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; static_routes_only&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="kt"&gt;false&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;BGP&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&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;tunnel1_log_options&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="k"&gt;cloudwatch_log_options&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt; log_enabled&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="kt"&gt;true&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt; log_group_arn&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;aws_cloudwatch_log_group&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="k"&gt;vpn&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="k"&gt;arn&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt; log_output_format&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;json&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="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;${var.name}-vpn-01&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="tgwアタッチで踏みやすい3つの注意点"&gt;TGWアタッチで踏みやすい3つの注意点
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;AZの一致&lt;/strong&gt;: あるサブネットからTGW経由で通信したいなら、&lt;strong&gt;そのサブネットと同じAZにTGWのアタッチメント（ENI）が存在&lt;/strong&gt;している必要があります。AZをまたぐと無言で届きません。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;専用サブネット推奨&lt;/strong&gt;: TGWアタッチ用に&lt;strong&gt;小さな専用サブネット&lt;/strong&gt;を切るのがベストプラクティス。EC2を置くサブネットと混ぜない。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;ルートテーブルへの明示&lt;/strong&gt;: VPCのルートテーブルに、オンプレ宛（&lt;code&gt;10.0.2.0/24&lt;/code&gt;）を&lt;strong&gt;TGW向き&lt;/strong&gt;で登録する必要があります。VGWの「ルート伝搬」のようには自動で入りません。&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="3-検証-vgwとの挙動差medとecmp"&gt;3. 検証: VGWとの挙動差（MEDとECMP）
&lt;/h2&gt;&lt;p&gt;ここが第2回との一番面白い対比です。VPNテーブルを見ると、&lt;strong&gt;両トンネルともMEDが100&lt;/strong&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;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;*&amp;gt; 10.99.0.0/16 169.254.234.49 100 0 64512 i
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;* 169.254.61.113 100 0 64512 i
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;第2回のVGWは &lt;strong&gt;100 / 200&lt;/strong&gt; を付けてアクティブ/スタンバイに誘導してきました。&lt;strong&gt;TGWは 100 / 100&lt;/strong&gt; の等コスト。これがTGWのデフォルトが**ECMP（両系アクティブ）**である証拠です。終端を替えただけで、AWS側のBGP広告の性格が変わる、というのは押さえどころです。&lt;/p&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;&lt;/th&gt;
 &lt;th&gt;VGW（第2回）&lt;/th&gt;
 &lt;th&gt;TGW（今回）&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;AWSが付けるMED&lt;/td&gt;
 &lt;td&gt;100 / 200&lt;/td&gt;
 &lt;td&gt;100 / 100&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;デフォルト挙動&lt;/td&gt;
 &lt;td&gt;アクティブ/スタンバイ&lt;/td&gt;
 &lt;td&gt;&lt;strong&gt;ECMP（両系同時利用）&lt;/strong&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;h3 id="非対称ルーティングに注意"&gt;非対称ルーティングに注意
&lt;/h3&gt;&lt;p&gt;ECMPの実機検証で、実際にこういう現象が出ます。AWS側からpingを打つと、&lt;strong&gt;行きと戻りで別々のトンネルを通る&lt;/strong&gt;ことがあります。&lt;/p&gt;
&lt;p&gt;&lt;img alt="aws ping: asymmetric" class="gallery-image" data-flex-basis="565px" data-flex-grow="235" height="415" 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-vpn-ecmp/aws-ping.png" srcset="https://cloud-aws.net/post/aws-transit-gateway-vpn-ecmp/aws-ping_hu_3ba4fcbf340f93eb.png 800w, https://cloud-aws.net/post/aws-transit-gateway-vpn-ecmp/aws-ping.png 978w" width="978"&gt;&lt;/p&gt;
&lt;p&gt;VyOS側から打つと、両方向とも同じ経路（&lt;code&gt;.6&lt;/code&gt;系）に乗りました。&lt;/p&gt;
&lt;p&gt;&lt;img alt="vyos ping" class="gallery-image" data-flex-basis="576px" data-flex-grow="240" height="401" 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-vpn-ecmp/vyos-ping.png" srcset="https://cloud-aws.net/post/aws-transit-gateway-vpn-ecmp/vyos-ping_hu_227f1c7b312ba43d.png 800w, https://cloud-aws.net/post/aws-transit-gateway-vpn-ecmp/vyos-ping.png 964w" width="964"&gt;&lt;/p&gt;
&lt;p&gt;これがECMPの本質的な副作用、&lt;strong&gt;非対称ルーティング&lt;/strong&gt;です。経路が等コストで複数あると、ハッシュ次第で行きと戻りが別トンネルになる。&lt;/p&gt;
&lt;p&gt;ICMPなら問題なく返りますが、&lt;strong&gt;経路上にステートフルな機器（FW・NAT・IDS等）があると致命的&lt;/strong&gt;になり得ます。行きのパケットしか見ていない機器が戻りを不正と判断して落とすからです。実運用でECMPを使うなら、経路上のステートフル機器の有無を必ず確認してください。スループットを稼ぎたいだけなら第2回のアクティブ/スタンバイの方が安全、という判断もあります。&lt;/p&gt;
&lt;h2 id="4-完成形"&gt;4. 完成形
&lt;/h2&gt;&lt;p&gt;VPNの終端がVGWからTransit Gatewayに替わり、2本のトンネルがECMPで同時に使われる構成です。&lt;/p&gt;
&lt;p&gt;&lt;img alt="tgw ecmp final" class="gallery-image" data-flex-basis="803px" data-flex-grow="334" height="541" 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-vpn-ecmp/final.png" srcset="https://cloud-aws.net/post/aws-transit-gateway-vpn-ecmp/final_hu_c8193531c5e03957.png 800w, https://cloud-aws.net/post/aws-transit-gateway-vpn-ecmp/final_hu_2b33fc6dd5974ee6.png 1600w, https://cloud-aws.net/post/aws-transit-gateway-vpn-ecmp/final.png 1812w" width="1812"&gt;&lt;/p&gt;
&lt;h2 id="まとめ"&gt;まとめ
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;VGWは1VPC専用のVPN口、TGWはリージョンのハブルータ&lt;/strong&gt;。格が違う&lt;/li&gt;
&lt;li&gt;終端をTGWにすると、AWSのMEDが &lt;strong&gt;100/100の等コスト&lt;/strong&gt;になり、デフォルトで**ECMP（両系アクティブ）**になる（VGWは100/200のアクティブ/スタンバイ）&lt;/li&gt;
&lt;li&gt;ECMPには&lt;strong&gt;非対称ルーティング&lt;/strong&gt;の副作用がある。経路上にステートフル機器があると危険&lt;/li&gt;
&lt;li&gt;TGWアタッチは &lt;strong&gt;AZ一致・専用サブネット・ルートの明示登録&lt;/strong&gt; が踏みどころ&lt;/li&gt;
&lt;li&gt;TGWというハブを手に入れたことで、&lt;a class="link" href="https://cloud-aws.net/post/aws-transit-gateway-peering/" &gt;次回&lt;/a&gt;は&lt;strong&gt;別リージョンとの接続&lt;/strong&gt;に進めます。ここで「DX-GWではリージョン間がつながらない」という壁にぶつかり、TGWピアリングで超えます。&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>AWS Site-to-Site VPNの冗長化とBGP経路制御</title><link>https://cloud-aws.net/post/aws-vpn-bgp-traffic-engineering/</link><pubDate>Tue, 22 Nov 2022 00:00:00 +0000</pubDate><guid>https://cloud-aws.net/post/aws-vpn-bgp-traffic-engineering/</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;strong&gt;トンネル冗長化とBGP経路制御&lt;/strong&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;a class="link" href="https://cloud-aws.net/post/aws-transit-gateway-peering/" &gt;マルチリージョン接続 — DX-GWの限界とTGWピアリング&lt;/a&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/site-to-site-vpn-vyos/" &gt;第1回&lt;/a&gt;では、VyOSをカスタマーゲートウェイ（CGW）に見立てて、AWSとの間に &lt;strong&gt;1本&lt;/strong&gt;のSite-to-Site VPNトンネルを張りました。ただ実運用で1本だけ、というのはまずありません。AWSはVPN接続を作ると&lt;strong&gt;必ず2本&lt;/strong&gt;のトンネル（別々のAWS側エンドポイント・別々の内側 &lt;code&gt;/30&lt;/code&gt;）を払い出してきます。冗長化が前提の設計になっているからです。&lt;/p&gt;
&lt;p&gt;そこで2本目を足すと、今度は新しい問題が出てきます。&lt;strong&gt;「2本あるとき、トラフィックはどっちのトンネルを通るのか？ そしてそれを自分の意図どおりに制御できるのか？」&lt;/strong&gt; これがこの回の主題、&lt;strong&gt;BGPトラフィックエンジニアリング&lt;/strong&gt;です。&lt;/p&gt;
&lt;p&gt;結論を先に言うと、経路制御は &lt;strong&gt;「行き」と「戻り」で使う道具が違います&lt;/strong&gt;。ここを最初に掴んでおくと、後半が一気に楽になります。&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;VyOS → AWS（自分から出ていく経路の選択）&lt;/td&gt;
 &lt;td&gt;&lt;strong&gt;Weight&lt;/strong&gt;&lt;/td&gt;
 &lt;td&gt;自分のルータ内だけの判断。隣に伝わらない&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;AWS → VyOS（相手が自分宛に選ぶ経路への influence）&lt;/td&gt;
 &lt;td&gt;&lt;strong&gt;AS-Path Prepend&lt;/strong&gt;&lt;/td&gt;
 &lt;td&gt;広告に乗って相手に伝わる。相手の判断を動かす&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;ネットワーク屋の感覚で言えば、Weightは「自分のルーティングテーブルのローカルな優先度」、AS-Path Prependは「相手に渡すルート広告をわざと遠回りに見せる小細工」です。前者は自分の意思で決められること、後者は相手にお願いすること、という非対称があります。&lt;/p&gt;
&lt;h3 id="構成図"&gt;構成図
&lt;/h3&gt;&lt;p&gt;第1回の単一トンネルに、2本目（&lt;code&gt;vti1&lt;/code&gt;）を足した姿です。&lt;/p&gt;
&lt;p&gt;&lt;img alt="dual tunnel overview" class="gallery-image" data-flex-basis="716px" data-flex-grow="298" height="541" 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-vpn-bgp-traffic-engineering/overview.png" srcset="https://cloud-aws.net/post/aws-vpn-bgp-traffic-engineering/overview_hu_d6571ecdaed21d8.png 800w, https://cloud-aws.net/post/aws-vpn-bgp-traffic-engineering/overview_hu_d53d86c341b5a235.png 1600w, https://cloud-aws.net/post/aws-vpn-bgp-traffic-engineering/overview.png 1614w" width="1614"&gt;&lt;/p&gt;
&lt;h2 id="1-2本目のトンネルを追加する"&gt;1. 2本目のトンネルを追加する
&lt;/h2&gt;&lt;p&gt;設定の中身は第1回のトンネル1とほぼ同じです。AWSのVPN設定ファイルに記載された &lt;strong&gt;トンネル2側&lt;/strong&gt;のPSK・エンドポイントIP・内側 &lt;code&gt;/30&lt;/code&gt; を、&lt;code&gt;vti1&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;## IPSec（トンネル2）
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;set vpn ipsec site-to-site peer AWS_backup authentication mode &amp;#39;pre-shared-secret&amp;#39;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;set vpn ipsec site-to-site peer AWS_backup authentication pre-shared-secret &amp;#39;YOUR_PRE_SHARED_SECRET_2&amp;#39;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;set vpn ipsec site-to-site peer AWS_backup description &amp;#39;VPC tunnel 2&amp;#39;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;set vpn ipsec site-to-site peer AWS_backup ike-group &amp;#39;AWS&amp;#39;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;set vpn ipsec site-to-site peer AWS_backup local-address &amp;#39;10.0.2.15&amp;#39;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;set vpn ipsec site-to-site peer AWS_backup remote-address &amp;#39;xx.xx.xx.xx&amp;#39; # トンネル2のAWS側IP
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;set vpn ipsec site-to-site peer AWS_backup vti bind &amp;#39;vti1&amp;#39;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;set vpn ipsec site-to-site peer AWS_backup vti esp-group &amp;#39;AWS&amp;#39;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;### NAT-T対応（第1回と同じ理由）
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;set vpn ipsec site-to-site peer AWS_backup authentication local-id &amp;#39;yy.yy.yy.yy&amp;#39;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;set vpn ipsec site-to-site peer AWS_backup authentication remote-id &amp;#39;xx.xx.xx.xx&amp;#39;
&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;## VTI（トンネル2の仮想インターフェース）
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;set interfaces vti vti1 address &amp;#39;169.254.61.114/30&amp;#39;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;set interfaces vti vti1 description &amp;#39;VPC tunnel 2&amp;#39;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;set interfaces vti vti1 mtu &amp;#39;1436&amp;#39;
&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;## BGP（トンネル2のネイバー）
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;set protocols bgp neighbor 169.254.61.113 address-family ipv4-unicast soft-reconfiguration inbound
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;set protocols bgp neighbor 169.254.61.113 remote-as &amp;#39;64512&amp;#39;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;set protocols bgp neighbor 169.254.61.113 timers holdtime &amp;#39;30&amp;#39;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;set protocols bgp neighbor 169.254.61.113 timers keepalive &amp;#39;10&amp;#39;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;code&gt;esp-group&lt;/code&gt; / &lt;code&gt;ike-group&lt;/code&gt; は第1回で定義した &lt;code&gt;AWS&lt;/code&gt; を使い回します（暗号化条件は両トンネルで同じ）。これで物理的には2本のトンネルとBGPネイバーが立ち上がります。&lt;/p&gt;
&lt;h2 id="2-初期状態の経路を観察する"&gt;2. 初期状態の経路を観察する
&lt;/h2&gt;&lt;p&gt;何も制御を入れない状態でBGPテーブルを見ると、面白いことが起きています。&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 ipv4 unicast
&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;*&amp;gt; 10.99.0.0/16 169.254.61.113 100 0 64512 i
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;* 169.254.234.49 200 0 64512 i
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;VPC（&lt;code&gt;10.99.0.0/16&lt;/code&gt;）への経路が2本見えていて、&lt;code&gt;*&amp;gt;&lt;/code&gt;（ベストパス）が付いているのは &lt;strong&gt;&lt;code&gt;.113&lt;/code&gt;（トンネル2 = Backup側）&lt;/strong&gt; の方です。Metric（MED）を見ると、トンネル2が &lt;strong&gt;100&lt;/strong&gt;、トンネル1が &lt;strong&gt;200&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;ここがVGW（仮想プライベートゲートウェイ）の挙動の肝です。&lt;strong&gt;AWSはトンネル1に200、トンネル2に100というMEDを付けて広告してきます&lt;/strong&gt;。BGPはMEDが小さい方を優先するので、何もしなければ&lt;strong&gt;Backup側（トンネル2）が勝つ&lt;/strong&gt;。&lt;code&gt;shutdown&lt;/code&gt;→復旧させても、MEDの差でちゃんとBackup側にトラフィックが戻ってきます（&lt;a class="link" href="https://dev.classmethod.jp/articles/control-bgp-route-on-site-to-site-vpn/" target="_blank" rel="noopener"
 &gt;参考: Site-to-Site VPNのBGP経路制御&lt;/a&gt;）。&lt;/p&gt;
&lt;p&gt;つまりデフォルトのままだと、自分が「Main」と思っているトンネル1が使われない、という状況です。これを意図どおりに寄せにいきます。&lt;/p&gt;
&lt;h3 id="vgwの経路選択の優先順位"&gt;VGWの経路選択の優先順位
&lt;/h3&gt;&lt;p&gt;AWS（VGW）が複数経路から1つを選ぶときの順序を、先に整理しておきます。上から順に評価されます。&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;ロンゲストマッチ&lt;/strong&gt;（宛先がより詳細なルートが優先）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Direct Connect &amp;gt; Site-to-Site VPN&lt;/strong&gt;（DXがあればDX優先）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;静的ルート &amp;gt; BGPルート&lt;/strong&gt;（同じVPN内で）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;AS-PATHが最短&lt;/strong&gt;のBGPルート&lt;/li&gt;
&lt;li&gt;AS-PATHが同じなら &lt;strong&gt;MEDが最小&lt;/strong&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;今回いじれるのは下2つ、&lt;strong&gt;AS-PATH&lt;/strong&gt;と&lt;strong&gt;MED&lt;/strong&gt;です。&lt;/p&gt;
&lt;h2 id="3-te1-vyos--aws-の経路をmain系に寄せるweight"&gt;3. TE1: VyOS → AWS の経路をMain系に寄せる（Weight）
&lt;/h2&gt;&lt;p&gt;まず「自分から出ていく」方向。VyOSがVPC宛のパケットをどちらのトンネルに流すかは、&lt;strong&gt;VyOS自身のBGPテーブルのベストパス選択&lt;/strong&gt;で決まります。ここは相手は関係ない、自分のルータ内の話なので、&lt;strong&gt;Weight&lt;/strong&gt;を使います。&lt;/p&gt;

 &lt;blockquote&gt;
 &lt;p&gt;Weightは特定のパスを選ぶために使う、&lt;strong&gt;そのルータ内だけ&lt;/strong&gt;で有効な属性です。他のBGPルータには一切交換されません。同じプレフィックスなら、&lt;strong&gt;値が大きい方&lt;/strong&gt;のルートが優先されます。&lt;/p&gt;

 &lt;/blockquote&gt;
&lt;p&gt;トンネル1（&lt;code&gt;.49&lt;/code&gt;）のWeightを大きくして、こちらをベストパスに引き上げます。&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;set protocols bgp neighbor 169.254.234.49 address-family ipv4-unicast weight 300
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&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;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 64512 i
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;*&amp;gt; 169.254.234.49 200 300 64512 i ## weight 300
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;MEDは200のまま（不利）なのに、Weight 300が効いて &lt;strong&gt;&lt;code&gt;.49&lt;/code&gt;（Main側）がベストパス&lt;/strong&gt;に変わりました。Weightはローカルの最優先属性なので、MEDの不利を上書きできるわけです。&lt;/p&gt;
&lt;p&gt;&lt;img alt="TE1: weight" class="gallery-image" data-flex-basis="847px" data-flex-grow="353" height="200" 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-vpn-bgp-traffic-engineering/te1-weight.png" width="706"&gt;&lt;/p&gt;
&lt;p&gt;これでVyOSから出ていくトラフィックはMain系に乗りました。ただしこれは&lt;strong&gt;片方向だけ&lt;/strong&gt;の解決です。&lt;/p&gt;
&lt;h2 id="4-te2-aws--vyos-の経路をmain系に寄せるas-path-prepend"&gt;4. TE2: AWS → VyOS の経路をMain系に寄せる（AS-Path Prepend）
&lt;/h2&gt;&lt;p&gt;次に「相手から戻ってくる」方向。AWS側がVyOS（&lt;code&gt;10.0.2.0/24&lt;/code&gt;）宛にどちらのトンネルを選ぶかは、&lt;strong&gt;AWSのBGPテーブルの判断&lt;/strong&gt;です。こちらのWeightは相手に伝わらないので無力。代わりに、&lt;strong&gt;相手に渡すルート広告を細工して、相手の判断を動かします&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;使うのは &lt;strong&gt;AS-Path Prepend&lt;/strong&gt;。広告するルートに自分のAS番号を余分に付け足して、&lt;strong&gt;「この経路は遠回りですよ」と相手に見せかける&lt;/strong&gt;手法です。AWSの選択順位（前述）で4番目の「AS-PATH最短」が効くので、Backup側のAS-PATHを長くすれば、相手はMain側を短い＝近いと判断します。&lt;/p&gt;
&lt;p&gt;Backup側（&lt;code&gt;.113&lt;/code&gt;）に向けて広告するときだけ、AS-PATHを1つ伸ばします。&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-gdscript3" data-lang="gdscript3"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;set&lt;/span&gt; &lt;span class="n"&gt;policy&lt;/span&gt; &lt;span class="n"&gt;route&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;map&lt;/span&gt; &lt;span class="n"&gt;VPC&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;Tunnel&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;OUT&lt;/span&gt; &lt;span class="n"&gt;rule&lt;/span&gt; &lt;span class="mi"&gt;10&lt;/span&gt; &lt;span class="n"&gt;action&lt;/span&gt; &lt;span class="n"&gt;permit&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;set&lt;/span&gt; &lt;span class="n"&gt;policy&lt;/span&gt; &lt;span class="n"&gt;route&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;map&lt;/span&gt; &lt;span class="n"&gt;VPC&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;Tunnel&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;OUT&lt;/span&gt; &lt;span class="n"&gt;rule&lt;/span&gt; &lt;span class="mi"&gt;10&lt;/span&gt; &lt;span class="n"&gt;set&lt;/span&gt; &lt;span class="n"&gt;as&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;path&lt;/span&gt; &lt;span class="n"&gt;prepend&lt;/span&gt; &lt;span class="mi"&gt;65000&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;set&lt;/span&gt; &lt;span class="n"&gt;protocols&lt;/span&gt; &lt;span class="n"&gt;bgp&lt;/span&gt; &lt;span class="n"&gt;neighbor&lt;/span&gt; &lt;span class="mf"&gt;169.254&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="mf"&gt;61.113&lt;/span&gt; &lt;span class="n"&gt;address&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;family&lt;/span&gt; &lt;span class="n"&gt;ipv4&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;unicast&lt;/span&gt; &lt;span class="n"&gt;route&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;map&lt;/span&gt; &lt;span class="k"&gt;export&lt;/span&gt; &lt;span class="n"&gt;VPC&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;Tunnel&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;OUT&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Main側（&lt;code&gt;.49&lt;/code&gt;）へ広告した経路はAS-PATHが素のまま:&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 ipv4 unicast neighbors 169.254.234.49 advertised-routes
&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;*&amp;gt; 10.99.0.0/16 0.0.0.0 300 64512 i
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Backup側（&lt;code&gt;.113&lt;/code&gt;）へ広告した経路はAS-PATHに &lt;code&gt;65000&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;vyos@vyos:~$ show ip bgp ipv4 unicast neighbors 169.254.61.113 advertised-routes
&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 65000 i ## prependされている
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;*&amp;gt; 10.99.0.0/16 0.0.0.0 300 65000 64512 i
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;AWSから見ると、Backup経由のVyOS宛経路はAS-PATHが1ホップ長い＝遠回りに見えるので、&lt;strong&gt;Main側を選ぶ&lt;/strong&gt;ようになります。&lt;/p&gt;
&lt;p&gt;&lt;img alt="TE2: as-path prepend" class="gallery-image" data-flex-basis="1109px" data-flex-grow="462" height="199" 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-vpn-bgp-traffic-engineering/te2-aspath.png" srcset="https://cloud-aws.net/post/aws-vpn-bgp-traffic-engineering/te2-aspath_hu_a6e664630efd2dde.png 800w, https://cloud-aws.net/post/aws-vpn-bgp-traffic-engineering/te2-aspath.png 920w" width="920"&gt;&lt;/p&gt;
&lt;h2 id="5-完成形"&gt;5. 完成形
&lt;/h2&gt;&lt;p&gt;これで「行き（Weight）」も「戻り（AS-Path Prepend）」も、両方Main系（トンネル1）に寄りました。Mainが落ちればBGPが自動でBackupに切り替え、復旧すればMainに戻ってくる、アクティブ/スタンバイの冗長構成です。&lt;/p&gt;
&lt;p&gt;&lt;img alt="dual tunnel final" class="gallery-image" data-flex-basis="700px" data-flex-grow="291" height="553" 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-vpn-bgp-traffic-engineering/final.png" srcset="https://cloud-aws.net/post/aws-vpn-bgp-traffic-engineering/final_hu_690bfb034696e53e.png 800w, https://cloud-aws.net/post/aws-vpn-bgp-traffic-engineering/final_hu_1b71174ef37bb3d9.png 1600w, https://cloud-aws.net/post/aws-vpn-bgp-traffic-engineering/final.png 1614w" width="1614"&gt;&lt;/p&gt;
&lt;p&gt;ポイントを一枚にまとめると:&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;th&gt;なぜそれか&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;VyOS → AWS&lt;/td&gt;
 &lt;td&gt;&lt;strong&gt;VyOS自身&lt;/strong&gt;のベストパス選択&lt;/td&gt;
 &lt;td&gt;Weight&lt;/td&gt;
 &lt;td&gt;ローカルで完結。相手に伝える必要がない&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;AWS → VyOS&lt;/td&gt;
 &lt;td&gt;&lt;strong&gt;AWS&lt;/strong&gt;のベストパス選択&lt;/td&gt;
 &lt;td&gt;AS-Path Prepend&lt;/td&gt;
 &lt;td&gt;自分のWeightは伝わらない。広告を細工して相手を動かす&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;details&gt;
&lt;summary&gt;この回時点のVyOS設定（全体・秘匿値はプレースホルダ）&lt;/summary&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-gdscript3" data-lang="gdscript3"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;set&lt;/span&gt; &lt;span class="n"&gt;interfaces&lt;/span&gt; &lt;span class="n"&gt;ethernet&lt;/span&gt; &lt;span class="n"&gt;eth0&lt;/span&gt; &lt;span class="n"&gt;address&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;dhcp&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;set&lt;/span&gt; &lt;span class="n"&gt;interfaces&lt;/span&gt; &lt;span class="n"&gt;ethernet&lt;/span&gt; &lt;span class="n"&gt;eth2&lt;/span&gt; &lt;span class="n"&gt;address&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;169.254.153.1/16&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;set&lt;/span&gt; &lt;span class="n"&gt;interfaces&lt;/span&gt; &lt;span class="n"&gt;ethernet&lt;/span&gt; &lt;span class="n"&gt;eth2&lt;/span&gt; &lt;span class="n"&gt;description&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;Host-Only&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;set&lt;/span&gt; &lt;span class="n"&gt;interfaces&lt;/span&gt; &lt;span class="n"&gt;vti&lt;/span&gt; &lt;span class="n"&gt;vti0&lt;/span&gt; &lt;span class="n"&gt;address&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;169.254.234.50/30&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;set&lt;/span&gt; &lt;span class="n"&gt;interfaces&lt;/span&gt; &lt;span class="n"&gt;vti&lt;/span&gt; &lt;span class="n"&gt;vti0&lt;/span&gt; &lt;span class="n"&gt;description&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;VPC tunnel 1&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;set&lt;/span&gt; &lt;span class="n"&gt;interfaces&lt;/span&gt; &lt;span class="n"&gt;vti&lt;/span&gt; &lt;span class="n"&gt;vti0&lt;/span&gt; &lt;span class="n"&gt;mtu&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;1436&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;set&lt;/span&gt; &lt;span class="n"&gt;interfaces&lt;/span&gt; &lt;span class="n"&gt;vti&lt;/span&gt; &lt;span class="n"&gt;vti1&lt;/span&gt; &lt;span class="n"&gt;address&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;169.254.61.114/30&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;set&lt;/span&gt; &lt;span class="n"&gt;interfaces&lt;/span&gt; &lt;span class="n"&gt;vti&lt;/span&gt; &lt;span class="n"&gt;vti1&lt;/span&gt; &lt;span class="n"&gt;description&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;VPC tunnel 2&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;set&lt;/span&gt; &lt;span class="n"&gt;interfaces&lt;/span&gt; &lt;span class="n"&gt;vti&lt;/span&gt; &lt;span class="n"&gt;vti1&lt;/span&gt; &lt;span class="n"&gt;mtu&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;1436&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;set&lt;/span&gt; &lt;span class="n"&gt;policy&lt;/span&gt; &lt;span class="n"&gt;route&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;map&lt;/span&gt; &lt;span class="n"&gt;VPC&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;Tunnel&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;OUT&lt;/span&gt; &lt;span class="n"&gt;rule&lt;/span&gt; &lt;span class="mi"&gt;10&lt;/span&gt; &lt;span class="n"&gt;action&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;permit&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;set&lt;/span&gt; &lt;span class="n"&gt;policy&lt;/span&gt; &lt;span class="n"&gt;route&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;map&lt;/span&gt; &lt;span class="n"&gt;VPC&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;Tunnel&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;OUT&lt;/span&gt; &lt;span class="n"&gt;rule&lt;/span&gt; &lt;span class="mi"&gt;10&lt;/span&gt; &lt;span class="n"&gt;set&lt;/span&gt; &lt;span class="n"&gt;as&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;path&lt;/span&gt; &lt;span class="n"&gt;prepend&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;65000&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;set&lt;/span&gt; &lt;span class="n"&gt;protocols&lt;/span&gt; &lt;span class="n"&gt;bgp&lt;/span&gt; &lt;span class="n"&gt;address&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;family&lt;/span&gt; &lt;span class="n"&gt;ipv4&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;unicast&lt;/span&gt; &lt;span class="n"&gt;network&lt;/span&gt; &lt;span class="mf"&gt;10.0&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="mf"&gt;2.0&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="mi"&gt;24&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;set&lt;/span&gt; &lt;span class="n"&gt;protocols&lt;/span&gt; &lt;span class="n"&gt;bgp&lt;/span&gt; &lt;span class="n"&gt;neighbor&lt;/span&gt; &lt;span class="mf"&gt;169.254&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="mf"&gt;61.113&lt;/span&gt; &lt;span class="n"&gt;address&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;family&lt;/span&gt; &lt;span class="n"&gt;ipv4&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;unicast&lt;/span&gt; &lt;span class="n"&gt;route&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;map&lt;/span&gt; &lt;span class="k"&gt;export&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;VPC-Tunnel-2-OUT&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;set&lt;/span&gt; &lt;span class="n"&gt;protocols&lt;/span&gt; &lt;span class="n"&gt;bgp&lt;/span&gt; &lt;span class="n"&gt;neighbor&lt;/span&gt; &lt;span class="mf"&gt;169.254&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="mf"&gt;61.113&lt;/span&gt; &lt;span class="n"&gt;address&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;family&lt;/span&gt; &lt;span class="n"&gt;ipv4&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;unicast&lt;/span&gt; &lt;span class="n"&gt;soft&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;reconfiguration&lt;/span&gt; &lt;span class="n"&gt;inbound&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;set&lt;/span&gt; &lt;span class="n"&gt;protocols&lt;/span&gt; &lt;span class="n"&gt;bgp&lt;/span&gt; &lt;span class="n"&gt;neighbor&lt;/span&gt; &lt;span class="mf"&gt;169.254&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="mf"&gt;61.113&lt;/span&gt; &lt;span class="n"&gt;remote&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;as&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;64512&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;set&lt;/span&gt; &lt;span class="n"&gt;protocols&lt;/span&gt; &lt;span class="n"&gt;bgp&lt;/span&gt; &lt;span class="n"&gt;neighbor&lt;/span&gt; &lt;span class="mf"&gt;169.254&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="mf"&gt;61.113&lt;/span&gt; &lt;span class="n"&gt;timers&lt;/span&gt; &lt;span class="n"&gt;holdtime&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;30&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;set&lt;/span&gt; &lt;span class="n"&gt;protocols&lt;/span&gt; &lt;span class="n"&gt;bgp&lt;/span&gt; &lt;span class="n"&gt;neighbor&lt;/span&gt; &lt;span class="mf"&gt;169.254&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="mf"&gt;61.113&lt;/span&gt; &lt;span class="n"&gt;timers&lt;/span&gt; &lt;span class="n"&gt;keepalive&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;10&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;set&lt;/span&gt; &lt;span class="n"&gt;protocols&lt;/span&gt; &lt;span class="n"&gt;bgp&lt;/span&gt; &lt;span class="n"&gt;neighbor&lt;/span&gt; &lt;span class="mf"&gt;169.254&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="mf"&gt;234.49&lt;/span&gt; &lt;span class="n"&gt;address&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;family&lt;/span&gt; &lt;span class="n"&gt;ipv4&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;unicast&lt;/span&gt; &lt;span class="n"&gt;soft&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;reconfiguration&lt;/span&gt; &lt;span class="n"&gt;inbound&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;set&lt;/span&gt; &lt;span class="n"&gt;protocols&lt;/span&gt; &lt;span class="n"&gt;bgp&lt;/span&gt; &lt;span class="n"&gt;neighbor&lt;/span&gt; &lt;span class="mf"&gt;169.254&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="mf"&gt;234.49&lt;/span&gt; &lt;span class="n"&gt;address&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;family&lt;/span&gt; &lt;span class="n"&gt;ipv4&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;unicast&lt;/span&gt; &lt;span class="n"&gt;weight&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;300&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;set&lt;/span&gt; &lt;span class="n"&gt;protocols&lt;/span&gt; &lt;span class="n"&gt;bgp&lt;/span&gt; &lt;span class="n"&gt;neighbor&lt;/span&gt; &lt;span class="mf"&gt;169.254&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="mf"&gt;234.49&lt;/span&gt; &lt;span class="n"&gt;remote&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;as&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;64512&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;set&lt;/span&gt; &lt;span class="n"&gt;protocols&lt;/span&gt; &lt;span class="n"&gt;bgp&lt;/span&gt; &lt;span class="n"&gt;neighbor&lt;/span&gt; &lt;span class="mf"&gt;169.254&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="mf"&gt;234.49&lt;/span&gt; &lt;span class="n"&gt;timers&lt;/span&gt; &lt;span class="n"&gt;holdtime&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;30&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;set&lt;/span&gt; &lt;span class="n"&gt;protocols&lt;/span&gt; &lt;span class="n"&gt;bgp&lt;/span&gt; &lt;span class="n"&gt;neighbor&lt;/span&gt; &lt;span class="mf"&gt;169.254&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="mf"&gt;234.49&lt;/span&gt; &lt;span class="n"&gt;timers&lt;/span&gt; &lt;span class="n"&gt;keepalive&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;10&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;set&lt;/span&gt; &lt;span class="n"&gt;protocols&lt;/span&gt; &lt;span class="n"&gt;bgp&lt;/span&gt; &lt;span class="n"&gt;system&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;as&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;65000&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;set&lt;/span&gt; &lt;span class="n"&gt;vpn&lt;/span&gt; &lt;span class="n"&gt;ipsec&lt;/span&gt; &lt;span class="n"&gt;esp&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;group&lt;/span&gt; &lt;span class="n"&gt;AWS&lt;/span&gt; &lt;span class="n"&gt;lifetime&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;3600&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;set&lt;/span&gt; &lt;span class="n"&gt;vpn&lt;/span&gt; &lt;span class="n"&gt;ipsec&lt;/span&gt; &lt;span class="n"&gt;esp&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;group&lt;/span&gt; &lt;span class="n"&gt;AWS&lt;/span&gt; &lt;span class="n"&gt;mode&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;tunnel&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;set&lt;/span&gt; &lt;span class="n"&gt;vpn&lt;/span&gt; &lt;span class="n"&gt;ipsec&lt;/span&gt; &lt;span class="n"&gt;esp&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;group&lt;/span&gt; &lt;span class="n"&gt;AWS&lt;/span&gt; &lt;span class="n"&gt;pfs&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;enable&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;set&lt;/span&gt; &lt;span class="n"&gt;vpn&lt;/span&gt; &lt;span class="n"&gt;ipsec&lt;/span&gt; &lt;span class="n"&gt;esp&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;group&lt;/span&gt; &lt;span class="n"&gt;AWS&lt;/span&gt; &lt;span class="n"&gt;proposal&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt; &lt;span class="n"&gt;encryption&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;aes128&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;set&lt;/span&gt; &lt;span class="n"&gt;vpn&lt;/span&gt; &lt;span class="n"&gt;ipsec&lt;/span&gt; &lt;span class="n"&gt;esp&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;group&lt;/span&gt; &lt;span class="n"&gt;AWS&lt;/span&gt; &lt;span class="n"&gt;proposal&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt; &lt;span class="nb"&gt;hash&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;sha1&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;set&lt;/span&gt; &lt;span class="n"&gt;vpn&lt;/span&gt; &lt;span class="n"&gt;ipsec&lt;/span&gt; &lt;span class="n"&gt;ike&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;group&lt;/span&gt; &lt;span class="n"&gt;AWS&lt;/span&gt; &lt;span class="n"&gt;dead&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;peer&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;detection&lt;/span&gt; &lt;span class="n"&gt;action&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;restart&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;set&lt;/span&gt; &lt;span class="n"&gt;vpn&lt;/span&gt; &lt;span class="n"&gt;ipsec&lt;/span&gt; &lt;span class="n"&gt;ike&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;group&lt;/span&gt; &lt;span class="n"&gt;AWS&lt;/span&gt; &lt;span class="n"&gt;dead&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;peer&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;detection&lt;/span&gt; &lt;span class="n"&gt;interval&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;15&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;set&lt;/span&gt; &lt;span class="n"&gt;vpn&lt;/span&gt; &lt;span class="n"&gt;ipsec&lt;/span&gt; &lt;span class="n"&gt;ike&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;group&lt;/span&gt; &lt;span class="n"&gt;AWS&lt;/span&gt; &lt;span class="n"&gt;dead&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;peer&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;detection&lt;/span&gt; &lt;span class="n"&gt;timeout&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;30&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;set&lt;/span&gt; &lt;span class="n"&gt;vpn&lt;/span&gt; &lt;span class="n"&gt;ipsec&lt;/span&gt; &lt;span class="n"&gt;ike&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;group&lt;/span&gt; &lt;span class="n"&gt;AWS&lt;/span&gt; &lt;span class="n"&gt;lifetime&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;28800&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;set&lt;/span&gt; &lt;span class="n"&gt;vpn&lt;/span&gt; &lt;span class="n"&gt;ipsec&lt;/span&gt; &lt;span class="n"&gt;ike&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;group&lt;/span&gt; &lt;span class="n"&gt;AWS&lt;/span&gt; &lt;span class="n"&gt;proposal&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt; &lt;span class="n"&gt;dh&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;group&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;2&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;set&lt;/span&gt; &lt;span class="n"&gt;vpn&lt;/span&gt; &lt;span class="n"&gt;ipsec&lt;/span&gt; &lt;span class="n"&gt;ike&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;group&lt;/span&gt; &lt;span class="n"&gt;AWS&lt;/span&gt; &lt;span class="n"&gt;proposal&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt; &lt;span class="n"&gt;encryption&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;aes128&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;set&lt;/span&gt; &lt;span class="n"&gt;vpn&lt;/span&gt; &lt;span class="n"&gt;ipsec&lt;/span&gt; &lt;span class="n"&gt;ike&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;group&lt;/span&gt; &lt;span class="n"&gt;AWS&lt;/span&gt; &lt;span class="n"&gt;proposal&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt; &lt;span class="nb"&gt;hash&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;sha1&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;set&lt;/span&gt; &lt;span class="n"&gt;vpn&lt;/span&gt; &lt;span class="n"&gt;ipsec&lt;/span&gt; &lt;span class="n"&gt;site&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;to&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;site&lt;/span&gt; &lt;span class="n"&gt;peer&lt;/span&gt; &lt;span class="n"&gt;AWS&lt;/span&gt; &lt;span class="n"&gt;authentication&lt;/span&gt; &lt;span class="n"&gt;mode&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;pre-shared-secret&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;set&lt;/span&gt; &lt;span class="n"&gt;vpn&lt;/span&gt; &lt;span class="n"&gt;ipsec&lt;/span&gt; &lt;span class="n"&gt;site&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;to&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;site&lt;/span&gt; &lt;span class="n"&gt;peer&lt;/span&gt; &lt;span class="n"&gt;AWS&lt;/span&gt; &lt;span class="n"&gt;authentication&lt;/span&gt; &lt;span class="n"&gt;pre&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;shared&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;secret&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;YOUR_PRE_SHARED_SECRET_1&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;set&lt;/span&gt; &lt;span class="n"&gt;vpn&lt;/span&gt; &lt;span class="n"&gt;ipsec&lt;/span&gt; &lt;span class="n"&gt;site&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;to&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;site&lt;/span&gt; &lt;span class="n"&gt;peer&lt;/span&gt; &lt;span class="n"&gt;AWS&lt;/span&gt; &lt;span class="n"&gt;authentication&lt;/span&gt; &lt;span class="n"&gt;local&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;id&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;yy.yy.yy.yy&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;set&lt;/span&gt; &lt;span class="n"&gt;vpn&lt;/span&gt; &lt;span class="n"&gt;ipsec&lt;/span&gt; &lt;span class="n"&gt;site&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;to&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;site&lt;/span&gt; &lt;span class="n"&gt;peer&lt;/span&gt; &lt;span class="n"&gt;AWS&lt;/span&gt; &lt;span class="n"&gt;authentication&lt;/span&gt; &lt;span class="n"&gt;remote&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;id&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;xx.xx.xx.xx&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;set&lt;/span&gt; &lt;span class="n"&gt;vpn&lt;/span&gt; &lt;span class="n"&gt;ipsec&lt;/span&gt; &lt;span class="n"&gt;site&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;to&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;site&lt;/span&gt; &lt;span class="n"&gt;peer&lt;/span&gt; &lt;span class="n"&gt;AWS&lt;/span&gt; &lt;span class="n"&gt;ike&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;group&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;AWS&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;set&lt;/span&gt; &lt;span class="n"&gt;vpn&lt;/span&gt; &lt;span class="n"&gt;ipsec&lt;/span&gt; &lt;span class="n"&gt;site&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;to&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;site&lt;/span&gt; &lt;span class="n"&gt;peer&lt;/span&gt; &lt;span class="n"&gt;AWS&lt;/span&gt; &lt;span class="n"&gt;local&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;address&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;10.0.2.15&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;set&lt;/span&gt; &lt;span class="n"&gt;vpn&lt;/span&gt; &lt;span class="n"&gt;ipsec&lt;/span&gt; &lt;span class="n"&gt;site&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;to&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;site&lt;/span&gt; &lt;span class="n"&gt;peer&lt;/span&gt; &lt;span class="n"&gt;AWS&lt;/span&gt; &lt;span class="n"&gt;remote&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;address&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;xx.xx.xx.xx&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;set&lt;/span&gt; &lt;span class="n"&gt;vpn&lt;/span&gt; &lt;span class="n"&gt;ipsec&lt;/span&gt; &lt;span class="n"&gt;site&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;to&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;site&lt;/span&gt; &lt;span class="n"&gt;peer&lt;/span&gt; &lt;span class="n"&gt;AWS&lt;/span&gt; &lt;span class="n"&gt;vti&lt;/span&gt; &lt;span class="n"&gt;bind&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;vti0&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;set&lt;/span&gt; &lt;span class="n"&gt;vpn&lt;/span&gt; &lt;span class="n"&gt;ipsec&lt;/span&gt; &lt;span class="n"&gt;site&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;to&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;site&lt;/span&gt; &lt;span class="n"&gt;peer&lt;/span&gt; &lt;span class="n"&gt;AWS&lt;/span&gt; &lt;span class="n"&gt;vti&lt;/span&gt; &lt;span class="n"&gt;esp&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;group&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;AWS&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;set&lt;/span&gt; &lt;span class="n"&gt;vpn&lt;/span&gt; &lt;span class="n"&gt;ipsec&lt;/span&gt; &lt;span class="n"&gt;site&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;to&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;site&lt;/span&gt; &lt;span class="n"&gt;peer&lt;/span&gt; &lt;span class="n"&gt;AWS_backup&lt;/span&gt; &lt;span class="n"&gt;authentication&lt;/span&gt; &lt;span class="n"&gt;mode&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;pre-shared-secret&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;set&lt;/span&gt; &lt;span class="n"&gt;vpn&lt;/span&gt; &lt;span class="n"&gt;ipsec&lt;/span&gt; &lt;span class="n"&gt;site&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;to&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;site&lt;/span&gt; &lt;span class="n"&gt;peer&lt;/span&gt; &lt;span class="n"&gt;AWS_backup&lt;/span&gt; &lt;span class="n"&gt;authentication&lt;/span&gt; &lt;span class="n"&gt;pre&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;shared&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;secret&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;YOUR_PRE_SHARED_SECRET_2&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;set&lt;/span&gt; &lt;span class="n"&gt;vpn&lt;/span&gt; &lt;span class="n"&gt;ipsec&lt;/span&gt; &lt;span class="n"&gt;site&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;to&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;site&lt;/span&gt; &lt;span class="n"&gt;peer&lt;/span&gt; &lt;span class="n"&gt;AWS_backup&lt;/span&gt; &lt;span class="n"&gt;authentication&lt;/span&gt; &lt;span class="n"&gt;local&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;id&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;yy.yy.yy.yy&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;set&lt;/span&gt; &lt;span class="n"&gt;vpn&lt;/span&gt; &lt;span class="n"&gt;ipsec&lt;/span&gt; &lt;span class="n"&gt;site&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;to&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;site&lt;/span&gt; &lt;span class="n"&gt;peer&lt;/span&gt; &lt;span class="n"&gt;AWS_backup&lt;/span&gt; &lt;span class="n"&gt;authentication&lt;/span&gt; &lt;span class="n"&gt;remote&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;id&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;xx.xx.xx.xx&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;set&lt;/span&gt; &lt;span class="n"&gt;vpn&lt;/span&gt; &lt;span class="n"&gt;ipsec&lt;/span&gt; &lt;span class="n"&gt;site&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;to&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;site&lt;/span&gt; &lt;span class="n"&gt;peer&lt;/span&gt; &lt;span class="n"&gt;AWS_backup&lt;/span&gt; &lt;span class="n"&gt;ike&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;group&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;AWS&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;set&lt;/span&gt; &lt;span class="n"&gt;vpn&lt;/span&gt; &lt;span class="n"&gt;ipsec&lt;/span&gt; &lt;span class="n"&gt;site&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;to&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;site&lt;/span&gt; &lt;span class="n"&gt;peer&lt;/span&gt; &lt;span class="n"&gt;AWS_backup&lt;/span&gt; &lt;span class="n"&gt;local&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;address&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;10.0.2.15&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;set&lt;/span&gt; &lt;span class="n"&gt;vpn&lt;/span&gt; &lt;span class="n"&gt;ipsec&lt;/span&gt; &lt;span class="n"&gt;site&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;to&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;site&lt;/span&gt; &lt;span class="n"&gt;peer&lt;/span&gt; &lt;span class="n"&gt;AWS_backup&lt;/span&gt; &lt;span class="n"&gt;remote&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;address&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;xx.xx.xx.xx&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;set&lt;/span&gt; &lt;span class="n"&gt;vpn&lt;/span&gt; &lt;span class="n"&gt;ipsec&lt;/span&gt; &lt;span class="n"&gt;site&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;to&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;site&lt;/span&gt; &lt;span class="n"&gt;peer&lt;/span&gt; &lt;span class="n"&gt;AWS_backup&lt;/span&gt; &lt;span class="n"&gt;vti&lt;/span&gt; &lt;span class="n"&gt;bind&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;vti1&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;set&lt;/span&gt; &lt;span class="n"&gt;vpn&lt;/span&gt; &lt;span class="n"&gt;ipsec&lt;/span&gt; &lt;span class="n"&gt;site&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;to&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;site&lt;/span&gt; &lt;span class="n"&gt;peer&lt;/span&gt; &lt;span class="n"&gt;AWS_backup&lt;/span&gt; &lt;span class="n"&gt;vti&lt;/span&gt; &lt;span class="n"&gt;esp&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;group&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;AWS&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/details&gt;
&lt;h2 id="まとめ"&gt;まとめ
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;AWSは冗長化前提でVPNトンネルを&lt;strong&gt;2本&lt;/strong&gt;払い出す。両方使うなら経路制御が必要になる&lt;/li&gt;
&lt;li&gt;VGWはデフォルトで&lt;strong&gt;トンネル1にMED 200、トンネル2にMED 100&lt;/strong&gt;を付ける（放置するとBackup側が優先される）&lt;/li&gt;
&lt;li&gt;経路制御は&lt;strong&gt;方向で道具が変わる&lt;/strong&gt;。出ていく方向は&lt;strong&gt;Weight&lt;/strong&gt;（ローカル完結）、戻る方向は&lt;strong&gt;AS-Path Prepend&lt;/strong&gt;（広告を細工して相手を動かす）&lt;/li&gt;
&lt;li&gt;このアクティブ/スタンバイ構成に対し、&lt;a class="link" href="https://cloud-aws.net/post/aws-transit-gateway-vpn-ecmp/" &gt;次回&lt;/a&gt;はVGWを&lt;strong&gt;Transit Gateway&lt;/strong&gt;に置き換え、2本を**同時に使う（ECMP）**構成へ進みます。MEDの挙動もVGWとは変わります。&lt;/li&gt;
&lt;/ul&gt;</description></item></channel></rss>