別リージョン間VPCのVPN接続設定

By | 2016年5月30日

朝晩はだいぶ過ごしやすくまだ快適ですが、昼間は暑く少々つらいなと感じているhatです。
今回は別リージョンのVPC間のVPN接続設定について書きたいと思います。

はじめに

同じリージョン内のVPCであればVPC PeeringにてVPN接続が可能となりますが、別リージョン間では利用することができません。今回の環境利用する手法としては、AWS VPCの機能にあるVPN接続を利用します。またVPN接続用のソフトウェアルータとしてはVyattaがありますが、今回はWindowsServer2008 R2を準備し設定を進めていきます。環境構成については次の項目で記載します。

環境構成

[東京リージョン]

  • デフォルトのVPC(172.31.0.0/16)とサブネット(172.31.0.0/20)を利用
  • カスタマーゲートウェイには、WindowsServer2008 R2のEC2インスタンスを作成
  • 接続確認用インスタンスに、WindowsのEC2インスタンスを作成

[シドニーリージョン]

  • VPC(10.0.0.0/16)を作成し、プライベートサブネット(10.0.150.0/24)を作成
  • VPCにはInternetGatewayは作成しない。
  • 接続確認用インスタンスに、WindowsのEC2インスタンスを作成
      [概要構成図]

VPN接続検証環境構成図_改

①カスタマーゲートウェイ(cgw)
VPN接続ルーターとして利用。シドニーリージョンの仮想プライベートゲートウェイからの接続先となります。
②仮想プライベートゲートウェイ(vgw)
AWS VPCの機能として存在しており、シドニーリージョン側にて設定します。

作業概要

東京リージョンとシドニーリージョンを交互に作業していく形となります。
以降に詳細手順を記載していきますが、作業リージョンにはご注意ください。
また詳細手順のキャプチャ画面ですが英語版インスタンスを利用しているため、キャプチャは英語表示となっています。

1. カスタマーゲートウェイとなるWindowsサーバ設定(東京リージョン)
1-1.EC2インスタンスのインターフェース設定
1-2.Windowsアダプタの設定の更新
1-3.Windows Server にルーティングとリモートアクセスサービスのインストール
1-4.ルーティングおよびリモートアクセスサービスの設定と有効化

2. VPN接続設定(シドニーリージョン)
2-1.カスタマーゲートウェイの作成
2-2.仮想プライベートゲートウェイの作成
2-3.VPN接続ルーティング設定
2-4.VPN接続の作成
2-5.VPN接続設定ファイルのダウンロード

3. VPN接続設定(東京リージョン)
3-1.カスタマーゲートウェイにて接続設定の反映
3-2.Windowsファイアウォールの設定
3-3.停止しているゲートウェイの検出のため設定

4.接続確認用のWindowsのEC2インスタンスの作成
作成するタイミングは最後としていますが、最初に作成しても問題ありません。
このインスタンスの作成の手順については割愛いたします。

それでは、実際に作業内容を順に記載していきます。

1.カスタマーゲートウェイとなるWindowsサーバ設定(作業リージョン:東京)

1-1.EC2インスタンスのインターフェース設定

・WindowsServer2008 R2インスタンスを作成し起動します。
・起動したらインスタンスにEIPを割り当てます。
・インスタンスを立ち上げたら、インスタンスを右クリックし、「ネットワーキング」→「送信元 / 送信先の変更チェック」を選択
・無効化するをクリックします。
挿絵001_改

1-2.Windowsアダプタの設定の更新

・リモートデスクトップにてインスタンスに接続
・[コントロールパネル] を開き、[デバイスマネージャー] を起動
・[ネットワークアダプター] ノードを展開
・[Citrix network adapter] を右クリックし、[Properties] をクリック
挿絵002_改

・[Advanced] タブで、[IPv4 Checksum Offload]、[TCP Checksum Offload (IPv4)]、および [UDP Checksum Offload (IPv4)] プロパティを無効にし、[OK] をクリック
挿絵003

1-3.Windows Server にルーティングとリモートアクセスサービスのインストール

・[Server Manager] を開き、[役割] を選択して、[役割の追加] をクリック
挿絵004_改

・[サーバーの役割の選択] ページで、[ネットワークポリシーとアクセスサービス] をチェックして、[次へ] をクリック
挿絵005_改

・[役割サービスの選択] ページで [ルーティングとリモート アクセス サービス] をチェック
挿絵006_改

・[インストールオプションの確認] ページで、[インストール] をクリック

1-4.ルーティングおよびリモートアクセスサービスの設定と有効化

・サーバーマネージャーで [役割] を展開して、次に[ネットワーク ポリシーとアクセス サービス]を展開
・[ルーティングとリモート アクセス サーバー]を右クリックして、[ルーティングとリモート アクセスの構成と有効化] を選択
挿絵007

・[ルーティングとリモート アクセス サーバーのセットアップウィザード] の [ルーティングとリモート アクセス サーバーのセットアップ ウィザードの開始] ページで、[次へ] をクリック
・[構成] ページで、[カスタム構成] をチェックし、[次へ] をクリック
挿絵008_改

・[LAN ルーティング] をチェックし、[次へ] をクリック
挿絵009

・[ルーティングとリモート アクセス サーバーのセットアップ ウィザードの完了] ページで、[完了] をクリック

・[ルーティングとリモート アクセス] のダイアログボックスが表示されるので、[サービスの開始] をクリック
挿絵010

2.VPN接続設定 (作業リージョン:シドニー)

2-1.カスタマーゲートウェイの作成

・AWSコンソールよりVPCを開き、左側ペインのカスタマーゲートウェイを選択
挿絵011_改

・カスタマーゲートウェイをの作成をクリック
ネームタグ:任意
ルーティング:動的
IPアドレス:東京リージョンのWindowsServerのEIP
挿絵012_改

2-2.仮想プライベートゲートウェイの作成

・AWSコンソールのVPCを開き、左側ペインの仮想プライベートゲートウェイを選択し、仮想プライベートゲートウェイの作成をクリック
挿絵013_改

・VPCにアタッチをクリック
接続したいVPCをアタッチ
挿絵014_改

2-3.VPN接続ルーティング設定

・ルートテーブルにルートを追加する。
送信先:172.31.0.0/16
ターゲット:作成した仮想プライベートゲートウェイ
挿絵015_改

・完了後、ルート伝達のタブをクリックし、編集をクリックし伝達にチェックをつけ保存。
挿絵016_改

2-4.VPN接続の作成

・AWSコンソールのVPCを開き、左側ペインのVPN接続をクリックし、VPN接続の作成をクリック
仮想プライベートゲートウェイ:作成したvgw
カスタマーゲートウェイ:作成したcgw
ルーティングオプション:静的
IPプレフィックス:172.31.0.0/16
挿絵017_改

2-5.VPN接続設定ファイルのダウンロード

・Microsoft Windows2008 R2を選択しダウンロード
挿絵018_改

・ダウンロードしたファイルの中身を修正します。
修正箇所はダウンロードしたファイルの下のほうにあります。
以下部分のパラメータを置き換えて利用します。

[Windows_Server_Private_IP_address]
└Windows Server のプライベート IP アドレスで置き換え

[Your_Static_Route_IP_Prefix]
└Windows Server が存在するネットワークの CIDR で置き換え

[Your_VPC_CIDR_Block]
└ シドニーリージョンのVPC の CIDR で置き換え

~中略~
! Script for Tunnel 1:
netsh advfirewall consec add rule Name="vgw-050****** Tunnel 1" ^
Enable=Yes Profile=any Type=Static Mode=Tunnel ^
LocalTunnelEndpoint=[Windows_Server_Private_IP_address] ^
RemoteTunnelEndpoint=52.63.230.211 Endpoint1=[Your_Static_Route_IP_Prefix] ^
Endpoint2=[Your_VPC_CIDR_Block] Protocol=Any Action=RequireInClearOut ^
Auth1=ComputerPSK Auth1PSK=************************************ ^
QMSecMethods=ESP:SHA1-AES128+60min+100000kb ^
ExemptIPsecProtectedConnections=No ApplyAuthz=No QMPFS=dhgroup2

! Script for Tunnel 2:
netsh advfirewall consec add rule Name="vgw-050****** Tunnel 2" ^
Enable=Yes Profile=any Type=Static Mode=Tunnel ^
LocalTunnelEndpoint=[Windows_Server_Private_IP_address] ^
RemoteTunnelEndpoint=54.66.221.68 Endpoint1=[Your_Static_Route_IP_Prefix] ^
Endpoint2=[Your_VPC_CIDR_Block] Protocol=Any Action=RequireInClearOut ^
Auth1=ComputerPSK Auth1PSK=************************************ ^
QMSecMethods=ESP:SHA1-AES128+60min+100000kb ^
ExemptIPsecProtectedConnections=No ApplyAuthz=No QMPFS=dhgroup2
~以下省略~

3.VPN接続設定 (作業リージョン:東京)

3-1.カスタマーゲートウェイにて接続設定の反映

・シドニーリージョンでダウンロード取得し書き換えた内容を、リモートデスクトップにて接続しWindowsサーバのコマンドプロンプトにて実行する。
挿絵020_改

・ダウンロードファイルを利用して接続設定を実施しましたが、手動にて設定していくことも可能です。手動設定については割愛させていただきます。

3-2.Windowsファイアウォールの設定

・[サーバーマネージャー] を開き、[構成]、[セキュリティが強化された Windows ファイアウォール]、[プロパティ] を選択
挿絵021_改

・[IP sec の設定] タブで [IP sec 既定] の項目の [カスタマイズ] をクリック
挿絵022

・[キー交換 (メイン モード)] の項目の [詳細設定] にチェックを入れて [カスタマイズ] をクリック
挿絵023_改

・[キー交換オプション] の [Diffie-Hellman を使用してセキュリティを強化する] をチェックして、[OK] をクリック
挿絵024_改

・[データ保護 クイックモード)] の項目の [詳細設定] にチェックを入れて、[カスタマイズ] をクリック
挿絵025_改

・[この設定を使用するすべての接続セキュリティ規則に暗号化を要求する] にチェックを入れて、[OK] をクリック
挿絵026_改

3-3.停止しているゲートウェイの検出のため設定

・サーバーで、[スタート] をクリックし、regedit と入力して [レジストリエディタ] を起動
・[HKEY_LOCAL_MACHINE]、[SYSTEM]、[CurrentControlSet]、[Service]、[Tcpip]、[Paremeters] と展開
・右側のペインで右クリックし、[新規]、[DWORD (32-bit) Value]
・名前は [EnableDeadWDetect]と入力
挿絵027_改

・[値のデータ] に [1] を入力し、[OK] をクリック
挿絵028

・完了後エディタを終了し、WindowsServerを再起動する。

設定作業はここまでとなります。

VPN接続確認テスト

ここからは設定後の確認となります。
お互いのVPC上のホストからPingが通るかどうかにより確認していきます。

・確認その1: シドニーリージョンVPC から 東京リージョンVPC
・シドニーのwindowsホスト(10.0.150.165)から東京のWindowsホスト(172.31.13.2)へpingにて疎通確認

C:\Users\Administrator>ipconfig

Windows IP Configuration

Ethernet adapter Ethernet:

   Connection-specific DNS Suffix  . : ap-southeast-2.compute.internal
   Link-local IPv6 Address . . . . . : fe80::c1db:3156:****:*****
   IPv4 Address. . . . . . . . . . . : 10.0.150.165
   Subnet Mask . . . . . . . . . . . : 255.255.255.0
   Default Gateway . . . . . . . . . : 10.0.150.1

Tunnel adapter isatap.ap-southeast-2.compute.internal:

   Media State . . . . . . . . . . . : Media disconnected
   Connection-specific DNS Suffix  . : ap-southeast-2.compute.internal

Tunnel adapter Local Area Connection* 11:

   Media State . . . . . . . . . . . : Media disconnected
   Connection-specific DNS Suffix  . :

C:\Users\Administrator>ping 172.31.13.2

Pinging 172.31.13.2 with 32 bytes of data:
Reply from 172.31.13.2: bytes=32 time=106ms TTL=127
Reply from 172.31.13.2: bytes=32 time=106ms TTL=127
Reply from 172.31.13.2: bytes=32 time=106ms TTL=127
Reply from 172.31.13.2: bytes=32 time=106ms TTL=127

Ping statistics for 172.31.13.2:
    Packets: Sent = 4, Received = 4, Lost = 0 (0% loss),
Approximate round trip times in milli-seconds:
    Minimum = 106ms, Maximum = 106ms, Average = 106ms

・確認その2: 東京リージョンVPC から シドニーリージョンVPC
・東京のwindowsホスト(172.31.13.2)からシドニーのWindowsホスト(10.0.150.165)へpingにて疎通確認

C:\Users\Administrator>ipconfig

Windows IP Configuration

Ethernet adapter Local Area Connection:

   Connection-specific DNS Suffix  . : ap-northeast-1.compute.internal
   IPv4 Address. . . . . . . . . . . : 172.31.13.2
   Subnet Mask . . . . . . . . . . . : 255.255.240.0
   Default Gateway . . . . . . . . . : 172.31.0.1

Tunnel adapter isatap.ap-northeast-1.compute.internal:

   Media State . . . . . . . . . . . : Media disconnected
   Connection-specific DNS Suffix  . : ap-northeast-1.compute.internal

Tunnel adapter Local Area Connection* 11:

   Media State . . . . . . . . . . . : Media disconnected
   Connection-specific DNS Suffix  . :

C:\Users\Administrator>ping 10.0.150.165

Pinging 10.0.150.165 with 32 bytes of data:
Reply from 10.0.150.165: bytes=32 time=106ms TTL=127
Reply from 10.0.150.165: bytes=32 time=106ms TTL=127
Reply from 10.0.150.165: bytes=32 time=106ms TTL=127
Reply from 10.0.150.165: bytes=32 time=106ms TTL=127

Ping statistics for 10.0.150.165:
    Packets: Sent = 4, Received = 4, Lost = 0 (0% loss),
Approximate round trip times in milli-seconds:
    Minimum = 106ms, Maximum = 106ms, Average = 106ms

さいごに

AWSのサービスのみを組み合わせるだけで、別リージョンVPC間の接続を実現することができました。AWS VPCはVPN接続を作成した時点から課金(1時間あたり0.05 USD)が発生しますのでご注意ください。インターネット経由では接続できず別リージョン間VPCにてアクセスを実現したいことは意外とあると思いますので、参考になれば幸いです。

参考サイト:http://docs.aws.amazon.com/ja_jp/AmazonVPC/latest/NetworkAdminGuide/CustomerGateway-Windows.html#CreateVPNConnection