1. HOME
  2. ブログ
  3. Client VPN
  4. AWSでSite-to-Site VPN

BLOG

ブログ

Client VPN

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アドレスです。

リモートからオンプレミス側やインターネットへの通信が問題なく行えることを確認できました。
今回はこれで終わりです。お疲れ様でした!

関連記事