Windows Server 2008 R2 による VPN 接続

記事タイトルとURLをコピーする

こんにちは。技術1課でのOJT中の、新人の下山です。

今回は、Windows Server 2008 R2 をカスタマーゲートウェイとして設定して、VPN 接続を行います。

VPC を新しく作成して 手元のネットワークに存在する Windows Server から繋ぎます。手元のネットワークとして、今回は別の VPC を用います。VPC Peering を使うわけではありません。
vpn29

手元のネットワークの CIDR を 172.31.0.0/16、VPN 接続をしたい VPC の CIDR を 10.0.0.0/16 とします。

ブログの流れは以下の通りです。

  1. カスタマーゲートウェイとしての Windows Server 2008 R2 (以下、Windows Server) の起動
  2. Windows Server の設定
  3. VPC 、CGW、VGW の作成
  4. VPN 接続の作成
  5. netsh スクリプトを実行して VPN トンネルを設定する
  6. Windos ファイアウォールの設定
  7. 停止しているゲートウェイの検出
  8. VPN 接続のテスト

1. カスタマーゲートウェイとしての Windows Server の起動

EC2コンソールを開きます。

 インスタンスを以下の通りに作成します。

  • AMI の ID は [ami-58309b58] を選択します。
  • 自動割り当てパブリック IP は [無効化] にします。
  • Elastic IP アドレスを紐づけます。

2. Windows Server の設定

  1. Windows Server の [送信元/送信元チェック] の無効化 EC2 コンソールを開きます。 ナビゲーションペインで、[ネットワークインターフェイス] を選択します。 ネットワークインターフェイスを選択し、右クリックから[送信元 / 送信先の変更チェック] を選択します。vpn1 ダイアログボックスで [無効] を選択して、[保存] をクリックします。
    vpn2
  2. Windows アダプタ設定の更新 アダプタ設定を更新しないと、他のインスタンスからのトラフィックをルーティングできなくなることがあるとのことです。
    Windows Server に接続します。接続方法はこちら。 [コントロールパネル] から[デバイスマネージャー]を開き、[ネットワークアダプター]、[Citrix PV Ethernet Adapter #0] と選択していきます。 Citrix PV Ethernet Adapter #0 プロパティの [詳細設定] タブで、[IPv4 Checksum Offload]、[TCP Checksum Offload (IPv4)]、[UDP Checksum Offload (IPv4)] プロパティの値を [Disabled] にし、[OK] をクリックします。vpn30
  3. Windows Server にルーティングとリモートアクセスサービスのインストール ルーティングとリモートアクセスサービスをインストールして設定することで、リモートユーザーがネットワーク上のリソースにアクセスできるようにします。 Windows Server にログインして、 [Server Manager] を開きます。 [役割] を選択して、[役割の追加] をクリックします。
    vpn31 [開始する前に] ページで、要件を確認して [次へ] をクリックします。 [サーバーの役割の選択] ページで、[ネットワークポリシーとアクセスサービス] をチェックして、[次へ] をクリックします。
    vpn32 [ネットワーク ポリシーとアクセス サービス] ページで [次へ] をクリックします。 [役割サービスの選択] ページで [ルーティングとリモート アクセス サービス] をチェックします。[ルーティング] と [リモート アクセス] をチェックしたまま [次へ] をクリックします。
    vpn32 [インストールオプションの確認] ページで、[インストール] をクリックします。
     
  4. ルーティングおよびリモートアクセスサーバーの設定と有効化 サーバーマネージャーで [役割] を展開して、次に[ネットワーク ポリシーとアクセス サービス]を展開します。 [ルーティングとリモート アクセス サーバー ]を右クリックして、[ルーティングとリモート アクセスの構成と有効化] を選択します。 [ルーティングとリモート アクセス サーバーのセットアップウィザード] の [ルーティングとリモート アクセス サーバーのセットアップ ウィザードの開始] ページで、[次へ] をクリックします。 [構成] ページで、[カスタム構成] をチェックし、[次へ] をクリックします。
    vpn13
    [LAN ルーティング] をチェックし、[次へ] をクリックします。
    vpn14
    [ルーティングとリモート アクセス サーバーのセットアップ ウィザードの完了] ページで、[完了] をクリックします。 [ルーティングとリモート アクセス] のダイアログボックスが表示されるので、[サービスの開始] をクリックします。

3. VPC の VPN のためのコンポーネントの作成・設定

  1. VPC の作成 今回は、ネットワークの CIDR を10.0.0.0/16 とします。
  2. プライベートサブネットの作成 作成した VPC に、インターネットゲートウェイへのルートがないプライベートサブネットを作成します。
  3. カスタマーゲートウェイの作成 作成するというよりは、VPC 側でカスタマゲートウェイを指定するというイメージです。 まずVPC コンソールを開きます。 ナビゲーションペインで [カスタマーゲートウェイ] を選択して、[カスタマーゲートウェイの作成] をクリックします。vpn4 ルーティングは [静的] を選択します。IP アドレスには Windows Server の [Elasitc IP アドレス]を入力します。そして、[作成] をクリックします。
     
  4. VGW の作成、VPC へのアタッチ VPC コンソールのナビゲーションペインで [仮想プライベートゲートウェイ] を選択して、[仮想プライベートゲートウェイの作成] をクリックします。
    vpn5 ダイアログボックスが表示されるので、[作成] をクリックします。 作成した仮想プライベートゲートウェイを選択して、[VPCにアタッチ] をクリックします。
    vpn6 アタッチする VPC を選択して、[作成] をクリックします。
    vpn7
     
  5. VPN 接続のルーティング プライベートサブネットのルートテーブルにルートを追加します。
    送信先は、ネットワークの CIDR (172.31.0.0/16)、ターゲットには先ほど作成した仮想プライベートゲートウェイを入力します。 仮想プライベートゲートウェイへのルート伝達を有効にします。
    ルートテーブルの [ルート伝達] タブを開き、[編集] をクリックします。
    vpn8 [伝達] をチェックして、保存します。
    vpn9

4. VPN 接続の作成

  1. VPN の作成 まずVPCコンソールを開きます。 ナビゲーションペインの [VPN 接続] をクリックし、[VPN 接続の作成] をクリックします。
    vpn15 [VPN 接続] のダイアログボックスで、カスタマーゲートウェイと仮想プライベートゲートウェイを選択し、ルーティングオプションの [静的] をチェックします。静的 IP プレフィクスには、ネットワークの CIDR を入力します。入力後に [作成] をクリックします。
    vpn34
     
  2. VPN 接続の設定ファイルのダウンロード VPC コンソールで、作成した VPN を選択して、[設定のダウンロード] をクリックします。
    vpn17 ベンダーは [Microsoft]、プラットフォームは [Windows Server]、ソフトウェアは [2008 R2] を選択して、[ダウンロード] をクリックします。
    vpn35
    これで設定ファイルがダウンロードできました。
     

5. netsh スクリプトを実行して、VPN トンネルを設定する

AWSでVPNを張る場合は冗長化構成がデフォルトです。よって、トンネルを2本設定します。
設定ファイルには次のような netsh スクリプトのセクションが2つ含まれています。トンネルごとに1つずつです。

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

[]で囲まれている部分のパラメータを置き換えます。
[Windows_Server_Private_IP_address] はネットワークの Windows Server のプライベート IP アドレスで置き換えます。
[Your_Static_Route_IP_Prefix] は Windows Server が存在するネットワークの CIDR で置き換えます。
[Your_VPC_CIDR_Block] は VPC の CIDR で置き換えます。

Windows Server のコマンドプロンプトで、パラメータを置き換えたスクリプトを実行します。

6.Windows ファイアウォールの設定

[サーバーマネージャー] を開き、[構成]、[セキュリティが強化された Windows ファイアウォール]、[プロパティ] と進めていきます。
vpn19

[IP sec の設定] タブで [IP sec 既定] の項目の [カスタマイズ] をクリックします。
vpn21

[キー交換 (メイン モード)] の項目の [詳細設定] にチェックを入れて [カスタマイズ] をクリックします。
vpn22

[キー交換オプション] の [Diffie-Hellman を使用してセキュリティを強化する] をチェックして、[OK] をクリックします。
vpn23

[データ保護 クイックモード)] の項目の [詳細設定] にチェックを入れて、[カスタマイズ] をクリックします。
vpn24

[この設定を使用するすべての接続セキュリティ規則に暗号化を要求する] にチェックを入れて、[OK] をクリックします。
vpn25

7. 停止しているゲートウェイの検出

Windows Server でレジストリ エディタを起動します。

[HKEY_LOCAL_MACHINE]、[SYSTEM]、[CurrentControlSet]、[Service]、[Tcpip]、[Paremeters] と展開します。

右側のペインで右クリックし、[新規]、[DWORD (32-bit) Value] と進めます。

名前は [EnableDeadWDetect] を入力します。

[EnableDeadWDetect] を右クリックし、[修正] を開きます。

[値のデータ] に [1] を入力し、[OK] をクリックします。
vpn26

レジストリエディタを終了し、Windows Server を再起動します。
 

8. VPN の接続テスト

  1. ネットワークと VPC の間の通信の許可、セキュリティグループの作成
    ネットワークからのトラフィックを許可するルールを作成します。
  2. VPC のプライベートサブネットにインスタンスを起動する
  3. ping の送信
    Windows Server から、先程作成したインスタンスのプライベート IP アドレスを対象にして、ping を実行します。
    vpn27
    接続できました。 VPC コンソールからも、トンネルのステータスが [Up] になっていることが確認できます。
    vpn28

ちなみに、Windows Server の Windows ファイアウォールを無効にしたところ、IPsec のトラフィックが流れなくなりました。
AWS サポートに問い合わせてみたところ、

Windowsの機能の一部である「Windows Firewall with Advanced Security」によってVPNトンネルを利用しています。 VPNもIPSecを用いたセキュリティ機能の一つであり、同じくセキュリティ確保のためのファイアウォールの一部の機能となっています。 よってWindowsのファイアウォールを無効化した場合には本機能が利用できなくなっていた可能性がございます。

ということらしいです。

まとめ

今回は Windows Server 2008 R2 をカスタマーゲートウェイとして設定して、VPN 接続を行う方法をご紹介しました。
私自身 VPN に触れるのは初めてでしたが、AWS のドキュメントが分かりやすかったので無事に接続させることができました。参考ページはこちら
細かい設定が幾つもあってややこしいですが、メインのトンネルの設定は、マネジメントコンソールからダウンロードした設定ファイルに記載されているスクリプトで済んでしまいました。
Windows server 以外にもVPC でカスタマーゲートウェイとして機能するデバイスは多くあるので、色々と試してみたいです。

 

以上です。最後まで読んでくださってありがとうございました。