AWS環境内のみでVPN接続を試してみる

Ecdcff61 2577 4c96 8534 63d7bec44855
Ecdcff61 2577 4c96 8534 63d7bec44855

こんにちは、渡邉です。
9月に入り19時前に暗くなってくるようになると、夏も終わりが近いと感じますね。


それでは、今回は以前までの連載シリーズは一旦お休みして、以下のテーマで書いていきたいと思います。


【AWS環境内のみでVPN接続を試してみる】

今回はAWS環境へVPN接続する方法を試してみたい、という観点で書いていきたいと思います。

VPN接続を実際に行うには固定IPが払い出されているインターネット回線と、VPN接続に対応しているルータが必要となり、物理的な準備が必要となるのでなかなか試すことができない、と思われがちですが、全てをAWS上に構築し、VPN接続環境を利用することが可能です。

また、この方法はリージョン間をVPN接続したいという場合にも有効に使うことができる方法となりますので、参考にして頂ければと思います。
ちなみに、同一リージョン間のVPC間接続はVPC Peeringをお使いいただく方が簡単です。

では、まず初めに今回実際に作成する環境をご紹介したいと思います。

利用するリージョンは「東京」と「シンガポール」の2カ所となり、この間をVPNで接続する構成とします。
各リージョンにEC2インスタンスを用意し、EC2インスタンス間でVPNを経由した通信が可能となるまでを実施していきたいと思います。

AWSのVPN機能を利用して接続を行いますので、シンガポールリージョン側にVPN Gatewayを設置し、東京リージョン側にCustomer GatewayとしてEC2(Windows 2008R2)を設置し、この間をVPN接続します。

それでは、早速設定を進めて行きたいと思いますが、やる事が沢山ありますので、まずは作業項目を洗い出してみたいと思います。


作業自体は東京リージョンとシンガポールリージョンで交互に実施していくイメージとなります。

1.カスタマーゲートウェイ(Custoner Gateway)の作成(東京リージョンでの作業)
 1.1 VPCの作成
 1.2 サブネットの作成
 1.3 インターネットGWの作成、アタッチ
 1.4 EC2インスタンスの作成
 1.5 ネットワークアダプターの設定変更(Windows上の設定)
 1.6 「ルーティングとリモートアクセスサービス」の追加と設定(Windows上の設定)
 1.7 EC2インスタンスの「ソース/宛先チェック」の無効化
 1.8 ルートテーブルへのルート追加

2.VPNゲートウェイ(VPN Gateway)の作成(シンガポールリージョンでの作業)
 2.1 VPCの作成
 2.2 サブネットの作成
 2.3 カスタマーゲートウェイの作成
 2.4 仮想プライベートゲートウェイの作成とVPCへのアタッチ
 2.5 ルートテーブルへのルート追加
 2.6 ルート伝搬の有効化
 2.7 VPN接続の作成
 2.8 設定ファイルのダウンロード

3.VPN接続設定(東京リージョン対象)
 3.1 ダウンロードした設定ファイルの内容をカスタマーゲートウェイ用EC2へ反映(Windows上)
 3.2 IPsec設定の変更(Windows上)
 3.3 停止しているゲートウェイの検出設定(Windows上)
 3.4 EC2の再起動

4.疎通用EC2インスタンスの作成(東京リージョン、シンガポールリージョン対象)
 4.1 EC2インスタンスの作成(東京リージョン)
 4.2 EC2インスタンスの作成(シンガポールリージョン)

5.疎通確認
 5.1 東京リージョンのEC2からシンガポールリージョンのEC2へPing接続確認
 5.2 シンガポールリージョンのEC2から東京リージョンのEC2へPing接続確認

以上の流れで作業を進めて行く事になります。
それでは、早速作業詳細を記載していきます。


1.カスタマーゲートウェイ(Custoner Gateway)の作成(東京リージョンでの作業)

 1.1 VPCの作成
  まず今回テスト環境用にVPCを新たに作成します。
  マネジメントコンソールから「VPCダッシュボード」→「VPC」→「VPNの作成」を選択します。
  今回の入力値は以下とします。
   ネームタグ:VPN_Test ※自由に記載頂いて大丈夫です。
   CIDRブロック:192.168.1.0/24
   テナンシー:デフォルト
  

 1.2 サブネットの作成
  次に作成したVPN内にサブネットを作成します。
  「VPCダッシュボード」→「サブネット」→「サブネットの作成」を選択します。
  今回の入力値は以下とします。
   ネームタグ:VPN_Test ※自由に記載頂いて大丈夫です。
   VPC:先ほど作成したVPNを選択します
   アベイラビリティゾーン:ap-northeast-1a
   CIDRブロック:192.168.1.0/24
  
  
 1.3 インターネットGWの作成、アタッチ
  新規に作成したVPNにはインターネットGWがありませんので、作成しアタッチします。
  「VPCダッシュボード」→「インターネットゲートウェイ」→「インターネットゲートウェイの作成」を
  選択します。
  入力はネームタグだけですので、好きな名前を入力し作成します。
  

  作成したインターネットゲートウェイをVPCにアタッチします。
  同じ画面上で「VPNにアタッチ」を選択し、先ほど作成したVPCを選択しアタッチします。
  

 1.4 EC2インスタンスの作成
  続いてカスタマーゲートウェイとなるWindowsサーバ用のEC2インスタンスを作成します。
  EC2の作成方法は割愛させて頂きますが、実際に作成したインスタンスの情報は以下となります。

  AMI ID:Windows_Server-2008-R2_SP1-Japanese-64Bit-Base-2016.08.25 (ami-f706c896)
  インスタンスタイプ:t2.micro
  VPC:先ほど作成したVPCを選択
  また、EIPの割り当ても忘れずに行ってください。
  #EIPは無くても一時的な検証のみであれば問題なく実施可能です。
   EC2を停止するとIPが変わりますので、VPN接続設定をやり直す必要があります。

 1.5 ネットワークアダプターの設定変更(Windows上の設定)
  インスタンスが起動しましたらログインし、ネットワークアダプターの設定を変更します。
  まず、以下の手順でネットワークアダプターのプロパティ画面を開きます。
  「コントロールパネル」→「ネットワークとインターネット」→「ネットワークと共有センター」→
  「アダプターの設定の変更」
  「ローカルエリア接続」のアイコンが表示されますので、右クリックし「プロパティ」を選択します。
  「ローカルエリア接続のプロパティ」が表示されますので「構成」を選択します。
  「詳細設定」タブを選択し以下の画面の3項目を「disable」に変更します。
   IPv4 Checksum Offload
   TCP Checksum Offload (IPv4)
   UDP Checksum Offload (IPv4)
  

 1.6 「ルーティングとリモートアクセスサービス」の追加と設定(Windows上の設定)
  続いてWindowsサーバでルータ機能を有効とするためにルーティングサービスの追加を行います。
  「サーバーマネージャー」を開き「役割の追加」を選択します。
  

  役割の追加ウィザードが開始されますので「サーバーの役割の選択」に進み「ネットワークポリシーと
  アクセスサービス」にチェックを入れて、次へ進みます。
  

  「役割サービスの選択」まで進み「ルーティングとリモートアクセスサービス」全てにチェックを入れ、
  次へ進み、インストールを行いウィザードを完了します。
  

  「サーバーマネージャー」に戻りますので「役割」→「ネットワークポリシーとアクセスサービス」→
  「ルーティングとリモートアクセス」を選択し、右クリックし「ルーティングとリモートアクセスの構成と
  有効化」を選択します。
  

  「ルーティングとリモートアクセスサーバーのセットアップウィザード」が開始されますので「構成」まで
  進み「カスタム構成」を選択し、次へ進みます。
  

  「カスタム構成」で「LANルーティング」にチェックを入れ、次へ進み完了させます。
  

  「サービスの開始」確認が表示されますので「サービスの開始」を選択しサービスを開始させます。
  

 1.7 EC2インスタンスの「ソース/宛先チェック」の無効化
  次にマネジメントコンソール上でEC2インスタンスの「ソース/宛先チェック」を無効化します。
  マネジメントコンソールの「EC2ダッシュボード」からインスタンスを選択し「アクション」→「ネット
  ワーキング」→「送信元/送信先の変更チェック」を選択します。
  
  
  確認画面が表示されますので「はい、無効化する」を選択します。
  
  
 1.8 ルートテーブルへのルート追加
  次にマネジメントコンソール上でルートテーブルへルートの追加を行っておきます。
  以下の設定でルートを追加します。
   送信先:192.168.2.0/24
   ターゲット:カスタマーゲートウェイ用のEC2インスタンスを選択
   
  
 


2.VPNゲートウェイ(VPN Gateway)の作成(シンガポールリージョンでの作業)

 2.1 VPCの作成
  シンガポールリージョン側の環境準備となります。
  東京リージョンと同様に今回のテスト環境用にVPC作成から始めていきます。
  マネジメントコンソールから「VPCダッシュボード」→「VPC」→「VPNの作成」を選択します。
  今回の入力値は以下とします。
   ネームタグ:VPN_Test ※自由に記載頂いて大丈夫です。
   CIDRブロック:192.168.2.0/24
   テナンシー:デフォルト
  

 2.2 サブネットの作成
  次に作成したVPN内にサブネットを作成します。
  「VPCダッシュボード」→「サブネット」→「サブネットの作成」を選択します。
  今回の入力値は以下とします。
   ネームタグ:VPN_Test ※自由に記載頂いて大丈夫です。
   VPC:先ほど作成したVPNを選択します
   アベイラビリティゾーン:ap-southeast-1a
   CIDRブロック:192.168.2.0/24
  

 2.3 カスタマーゲートウェイの作成
  次にVPN用のカスタマーゲートウェイを作成します。
  「VPCダッシュボード」→「カスタマーゲートウェイ」→「カスタマーゲートウェイの作成」を
  選択します。
  今回の入力値は以下とします。
   ネームタグ:VPN_Test ※自由に記載頂いて大丈夫です。
   ルーティング:静的
   IPアドレス: 1.4で作成したEC2のEIPアドレスを入力
  

 2.4 仮想プライベートゲートウェイの作成とVPCへのアタッチ
  続いて仮想プライベートゲートウェイを作成しVPCへアタッチします。
  「VPCダッシュボード」→「仮想プライベートゲートウェイ」→「仮想プライベートゲートウェイの作成」
  を選択します。
  今回の入力値は以下とします。
   ネームタグ:VPN_Test ※自由に記載頂いて大丈夫です。
  

  続いて作成した仮想プライベートゲートウェイをVPCにアタッチします。
  「VPCにアタッチ」を選択します。
  今回の入力値は以下とします。
   VPC:2.1で作成したVPCを選択します
  
  
 2.5 ルートテーブルへのルート追加
  次にマネジメントコンソール上でルートテーブルへルートの追加を行います。
  「ルートテーブル」を選択し以下の設定でルートを追加します。
   送信先:192.168.1.0/24
   ターゲット:2.4で作成した仮想プライベートゲートウェイを選択
  

 2.6 ルート伝搬の有効化
  次にルートテーブルに追加したルートの伝搬を許可する様に設定の追加を行います。
  「ルートテーブル」画面で作成したルートテーブルを選択し下ウィンドウに表示されている「ルート伝搬」
  を開きます。
  「編集」を選択し「伝搬」のところにチェックを入れ、保存を選択します。
  

 2.7 VPN接続の作成
  VPN接続作成の準備が整いましたので、VPN接続の作成を実施します。
   「VPCダッシュボード」→「VPN接続」→「VPN接続の作成」を選択します。
  今回の入力値は以下とします。
   ネームタグ:VPN_Test ※自由に記載頂いて大丈夫です。
   仮想プライベートゲートウェイ:2.4で作成した仮想プライベートゲートウェイを選択します
   カスタマーゲートウェイ:「既存」を選択し、2.3で作成したカスタマーゲートウェイを選択します
   ルーティングオプション:静的 ※Windowsサーバの場合には動的は使えません
   静的IPプレフィックス:192.168.1.0/24
  

 2.8 設定ファイルのダウンロード
  VPN接続の作成が完了すると、設定ファイルのダウンロードが可能となります。
  作成したVPN接続を選択し「設定のダウンロード」を選択します。
  今回の入力値は以下とします。
   ベンダー:Microsoft
   プラットフォーム:Windows Server
   ソフトウェア:2008 R2
  
  上記でダウンロードしたファイルはカスタマーゲートウェイ用EC2サーバで利用しますので、保存して
  おいてください。
 


3.VPN接続設定(東京リージョン対象)

 3.1 ダウンロードした設定ファイルの内容をカスタマーゲートウェイ用EC2へ反映(Windows上)
  続いて、1項で作成したカスタマーゲートウェイ用のEC2サーバに戻り残りのVPN接続設定を実施します。
  まずは、2.8でダウンロードしたファイルから必要な箇所を抜き出し、一部の項目を修正します。
  抜き出す箇所は、ファイルの後半部分となり以下の
  「! Script for Tunnel 1:」、「! Script for Tunnel 2:」から始まるブロックとなります。
  ※一部の値は修正してあります。

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

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


  上記の中から以下の箇所を今回の環境に合わせて修正します。
   [Windows_Server_Private_IP_address]
   →カスタマーゲートウェイとして作成したEC2インスタンスのプライベートIPアドレス
    192.168.1.65
   [Your_Static_Route_IP_Prefix]
   →カスタマーゲートウェイとして作成したEC2インスタンスの所属するNWのCIDR値
    192.168.1.0/24
   [Your_VPC_CIDR_Block]
   →シンガポールリージョン側で作成したVPNのCIDR値
    192.168.2.0/24
 

! Script for Tunnel 1:
netsh advfirewall consec add rule Name="vgw-XXXXXXXX Tunnel 1" ^
Enable=Yes Profile=any Type=Static Mode=Tunnel ^
LocalTunnelEndpoint=192.168.1.65 ^
RemoteTunnelEndpoint=52.220.27.214 Endpoint1=192.168.1.0/24 ^
Endpoint2=192.168.2.0/24 Protocol=Any Action=RequireInClearOut ^
Auth1=ComputerPSK Auth1PSK=7hYRX.LRSSSPXXXXXXXXXXXXXXXXXXXX ^
QMSecMethods=ESP:SHA1-AES128+60min+100000kb ^
ExemptIPsecProtectedConnections=No ApplyAuthz=No QMPFS=dhgroup2

! Script for Tunnel 2:
netsh advfirewall consec add rule Name="vgw-XXXXXXXX Tunnel 2" ^
Enable=Yes Profile=any Type=Static Mode=Tunnel ^
LocalTunnelEndpoint=192.168.1.65 ^
RemoteTunnelEndpoint=52.220.63.109 Endpoint1=192.168.1.0/24 ^
Endpoint2=192.168.2.0/24 Protocol=Any Action=RequireInClearOut ^
Auth1=ComputerPSK Auth1PSK=ggzZ_rdXvMZaXXXXXXXXXXXXXXXXXXXX ^
QMSecMethods=ESP:SHA1-AES128+60min+100000kb ^
ExemptIPsecProtectedConnections=No ApplyAuthz=No QMPFS=dhgroup2


  修正したものが上記となります。
  これを、カスタマーゲートウェイ用のEC2にログインし設定を行います。
  ログイン後「コマンドプロンプト」を開き、上記のコマンドをそのまま実行します。
  以下が実行例となります。
  


 3.2 IPsec設定の変更(Windows上)
  次にWindowsのIPsec設定のプロパティを修正します。
  「サーバーマネージャー」→「構成」→「セキュリティが強化されたWindowsファイアウォール」を開き、右ウィンドウの「プロパティ」を選択します。
  

  「プロパティ」画面が開きますので「IPsecの設定」を開きIPsec設定の「カスタマイズ」を選択します。
  

  「IPsecの設定のカスタマイズ」で「キー交換(メインモード)」の「詳細設定」を選択し
  「カスタマイズ」を選択します。
  

  「キー交換の詳細設定のカスタマイズ」が開きますので「キー交換オプション」の
  「Diffe-Hellmanを使用してセキュリティを強化する」にチェックを入れて「OK」を選択します。
  

  「IPsecの設定のカスタマイズ」に戻りますので「データ保護(クイックモード)」の「詳細設定」を
  選択し「カスタマイズ」を選択します。
  
  
  「データ保護設定のカスタマイズ」が開きますので「この設定を使用するすべての接続セキュリティ規則に
  暗号化を要求する」にチェックを入れて「OK」を選択します。
  

  以上でIPsec設定は完了ですので「OK」を選択しウィンドウを閉じてください。

 3.3 停止しているゲートウェイの検出設定(Windows上)
  次にレジストリエディタを起動し、レジストリ値を追加します。
  「スタート」メニューから「プログラムとファイル検索」ウィンドウに「regedit」と入力しレジストリ
  エディタを起動します。
  [HKEY_LOCAL_MACHINE]-[SYSTEM]-[CurrentControlSet]-[Service]-[Tcpip]-[Paremeters] と
  展開します。
  右側のウィンドウで右クリックし「新規」→「DWORD(32ビット)値」を選択します。
  

  以下を入力し設定します。
   名前:EnableDeadWDetect
   値:1
  

 3.4 EC2の再起動
  設定が完了したらサーバを再起動します。
  スタートメニューから通常通り「再起動」を選択し再起動を行います。
 


4.疎通用EC2インスタンスの作成(東京リージョン、シンガポールリージョン対象)

 4.1 EC2インスタンスの作成(東京リージョン)
  疎通確認用にEC2インスタンスを作成します。
  詳細手順は割愛させて頂きますが、以下の設定を間違わなければ問題ありません。
  WindowsでもLinuxでもどちらでも構いません。
   VPC:前の手順で作成したVPC内に起動
   セキュリティグループ:192.168.2.0/24から全て許可(対向となるセグメントをフルオープンします。)

 4.2 EC2インスタンスの作成(シンガポールリージョン)
  疎通確認用にEC2インスタンスを作成します。
  4.1の東京リージョンと異なるのは以下の部分となります。
   セキュリティグループ:192.168.1.0/24から全て許可(対向となるセグメントをフルオープンします。)
 


5.疎通確認

 5.1 東京リージョンのEC2からシンガポールリージョンのEC2へPing接続確認
  いよいよ準備は全て終わりましたので、疎通確認を実施してみます。
  まずは、東京リージョン側からシンガポールリージョンへ疎通確認を行います。

  なお、今回は疎通確認用のEC2インスタンスにはグローバルIPを割り当てていませんので、疎通確認用EC2へはカスタマーゲートウェイ用EC2からRDPで接続して試験を行っています。

  以下がPingの実行結果となり、問題なくシンガポールリージョンにあるEC2と疎通が出来ています。
  

 5.2 シンガポールリージョンのEC2から東京リージョンのEC2へPing接続確認
  東京リージョンのEC2からと同様に逆方向からもPing疎通を確認してみます。
  早速ですが以下が結果となります。
  こちらも問題なく疎通できていることがお判りになるかと思います。
  
 



以上で今回の評価は完了です。

AWSのVPNゲートウェイ同士が繋がってくれるとこんな面倒なことをする必要はありませんが、VPN接続方法の確認や試験環境としてルーターや回線を用意すること無く、VPN接続を使えるので、色々と役に立つのではないかと思います。

それでは、また。