AWSでSite-to-Site VPN
こんにちは!Client VPNとSite-to-Site VPNを組み合わせ、どこからでも「AWS環境」や
「オンプレミス環境」へアクセスできることを確認しました。
Site to Site VPNについては、以下の公式HPに概要説明が記載されております。
■AWS Site-to-Site VPN の仕組み
https://docs.aws.amazon.com/ja_jp/vpn/latest/s2svpn/how_it_works.html
構成
試した構成のイメージです。今回は、Site to Site VPNの説明を行います。
カスタマーゲートウェイの作成
「カスタマーゲートウェイの作成」をクリックします。
カスタマーゲートウェイとはオンプレミス側のデバイス情報になります。
名前:任意の名前
ルーティング:動的(BGP)/静的(Static)
BGP ASN:オンプレ側で使用するBGP AS番号
IPアドレス:オンプレ側機器で使用するIPアドレス
今回は、折角なのでBGPを使用することにしました。証明書は無しにしました。
「カスタマーゲートウェイの作成」をクリックします。
カスタマーゲートウェイが作成されました。
仮想プライベートゲートウェイの作成
次は「仮想プライベートゲートウェイの作成」を行います。仮想プライベートゲートウェイとは、
AWS側のゲートウェイ情報になります。
名前タグ:任意の名前
ASN:今回はAmazon デフォルトASNを選択
「仮想プライベートゲートウェイの作成」をクリックします。
仮想プライベートゲートウェイが作成できました。
作成された仮想プライベートゲートウェイのBGP ASNが「64512」であることを確認できます。
サイト間のVPN間接続
「サイト間のVPN接続」→「VPN接続の作成」をクリックします。
名前タグ:任意の名前
ターゲットゲートウェイタイプ:仮想プライベートゲートウェイ
仮想プライベートゲートウェイ:先程作成した仮想プライベートゲートウェイを選択
カスタマーゲートウェイ:既存
カスタマーゲートウェイID:先程作成したカスタマーゲートウェイを選択
ルーティングオプション:動的
トンネル内部IPバージョン:IPv4
ローカルIPv4ネットワークCidr:VPN通信を許可するカスタマーゲートウェイ側(オンプレミス側)のIPv4CIDR範囲。デフォルト0.0.0.0/0
リモートIPv4ネットワークCidr:VPN通信を許可するAWS側のIPv4CIDR範囲。デフォルト0.0.0.0/0
トンネルオプションについては、デフォルト生成で進めます。
なお、TunnelのIPv4アドレスは「169.254.0.0/16」範囲からサイズ /30 の CIDR ブロックを
指定できます。
その他詳細はこちらの公式で確認できます。
https://docs.aws.amazon.com/ja_jp/vpn/latest/s2svpn/VPNTunnels.html
設定に問題が無ければ「VPN接続の作成」をクリックします。
上記の通り、VPNが完成しました。これでAWS側の設定は完了です。
「設定のダウンロード」をクリックします。
カスタマーゲートウェイデバイス機器に流し込むサンプルConfigをダウンロードします。
今回はCisco機器を使用しておりますので、Ciscoを選択して「ダウンロード」をクリックします。
ダウンロードしたサンプルConfigを用いてCisco機器へ設定を流し込みます。
経路広報の設定
router bgp 65000 bgp log-neighbor-changes neighbor x.x.x.x remote-as 64512 neighbor x.x.x.x timers 10 30 30 neighbor xx.xx.xx.xx remote-as 64512 neighbor xx.xx.xx.xx timers 10 30 30 ! address-family ipv4 network 111.111.111.0 mask 255.255.255.0
オンプレ側機器のBGP設定です。「111.111.111.0/24」をBGPで経路広報してます。
AWS側のルートテーブルには、111.111.111.0/24の経路がエントリされておりません。
エントリさせるにはルート伝播設定を行う必要があります。
オンプレ側で広報されたBGP経路をルートテーブルに乗せる設定を行います。
「ルートテーブル」より、先ほど作成したVPNに紐づいたルートテーブルを選択します。
「ルート伝播」タグ→「ルート伝播の編集」をクリックします。
適用した仮想プライベートゲートウェイの「伝播」のチェックボックスにチェックを付けて、
「保存」をクリックします。
伝播が「はい」に変更されたことを確認できます。
AWS側のルートテーブルに「111.111.111.0/24」がエントリされたことを確認できます。
オンプレ側の状態確認
C841M-HUB#sh ip route
(snip)
10.0.0.0/16 is subnetted, 1 subnets
B 10.50.0.0 [20/100] via x.x.x.x, 00:05:17
C841M-HUB#
C841M-HUB#show ip bgp
(snip)
*> 10.50.0.0/16 x.x.x.x 100 0 64512 i
x.x.x.x 200 0 64512 i
C841M-HUB#
C841M-HUB#show ip bgp neighbors x.x.x.x received-routes
(snip)
Network Next Hop Metric LocPrf Weight Path
*> 10.50.0.0/16 169.254.77.85 100 0 64512 i
C841M-HUB#
オンプレ側機器のBGP tableやRouting table(x.x.x.xはAWS側TunnelIPアドレス)の状態ですが、
BGPでAWS側Local routeを学習できていることを確認できます。
動作確認
それでは、動作確認を行います。
動作確認構成
クライアント端末から「111.111.111.1」宛へのping疎通を確認していきます。
クライアントVPN接続時、PC端末には「10.123.0.0/20」が割り当てられます。
クライアントVPN接続時に使用されるENIが二つ作成されていました。今回は下段のアドレスが使われていました。パブリックIPアドレス:x.x.x.92 プライベートIPアドレス:10.50.1.213
端末にてVPN接続を行います。
クライアント端末にはIPアドレス「10.123.0.162」が割り当てられていました。
クライアント端末から「111.111.111.1」宛(オンプレミス側プライベートIPアドレス)への
ping疎通を確認できました。
#オンプレミス側サーバーlog
Feb 11 15:27:59.235 JST: ICMP: echo reply sent, src 111.111.111.1, dst 10.50.1.213, topology BASE, dscp 0 topoid 0
ping受信機器のdebugを確認しましたところ「10.50.1.213」へICMP echo replyを
送信していることが確認できます。10.50.1.213はENIに割り振られたプライベートIPアドレスです。
今回、インターネットゲートウェイを経由してインターネットへ抜ける構成となっておりますが、
その際に使用されるGlobal IPアドレスはx.x.x.92を使用することがわかります。
#自宅WANルータlog
Feb 11 15:53:46.961 JST: ICMP: echo reply sent, src x.x.x.x, dst x.x.x.92, topology BASE, dscp 0 topoid 0
クライアント端末から、自宅WANルータのWAN I/Fへ(グローバルIPアドレス)pingを
打ったところ、ICMP echo replyをx.x.x.92宛へ送信していることがわかります。
x.x.x.92はENIに割り振られたパブリックIPアドレスです。
リモートからオンプレミス側やインターネットへの通信が問題なく行えることを確認できました。
今回はこれで終わりです。お疲れ様でした!