Windows Server 2012でVPNサーバを立てる on AWS

AWS運用自動化サービス「Cloud Automator」
この記事は1年以上前に書かれたものです。
内容が古い可能性がありますのでご注意ください。

こんにちは

4月に新卒で入社した高橋です。はやいものでもう10月ですね。秋といえばスポーツでしょうか。

さて今回はAWS上にWindows Server 2012でVPNサーバを立ててみようと思います。

構成図は下の通りです。

vpncloud

VPC内のPublicサブネットにあるVPN Serverを経由し、Privateサブネット内のTargetインスタンスと通信してみたいと思います。通信はL2TP/IPsecを採用します。

セキュリティグループ

Targetインスタンスのセキュリティグループは、VPN ServerのセキュリティグループからのInboundアクセスのみに絞ることが可能です。

 VPNサーバの設定

  1. VPN Serverの設定を行います。
    設定の方法は下記のリンクを参考に致しました
    WindowsServer2012でVPNサーバーを立ててみる – まぽろぐ

    2chがPPTPポート(1723番)を開けていると弾きやがるのでL2TPに移行してみた – まぽろぐ

    ここで一つ注意が、「役割と機能追加のウィザード」で、リモートアクセスの「DirectAccessおよびVPN」だけでなく「ルーティング」もインストールしてください。
    wizard

  2. 次に「ルーティングとリモートアクセス」の画面に戻り、IPv4の全般を右クリックし、新しい「ルーティングプロトコル」から「NAT」を選択します。

    t2

    ここで「追加のプロトコルは存在しません」等のエラーメッセージが出た場合は、IPv4を右クリックし、「最新の情報に更新」をクリックしてください。

    次にインタフェースはイーサネットを選択し、「インターネットに接続されるパブリックインターフェイス」を選択しOKを押します。

    t4

  3. 次に接続に設定したユーザグループ内のユーザの設定を行います。

    「管理ツール」>「コンピュータと管理」>「ローカルユーザとグループ」
    から先ほど設定した「接続するユーザーグループ」に含まれており、かつ接続に利用するユーザを右クリックし、プロパティを選択し、「ダイヤルイン」タブの「リモートアクセスを許可」にチェックを入れ、OKボタンを押します。

    t5

  4. 次にWindowsファイアウォールを全て無効化してください。
  5. これで終わり、、、ではありません。あともう少しです。頑張りましょう。

    次に、L2TPプロトコルでVPN接続する際の事前共有キーの設定をしましょう。

    サービス画面を右クリックし、プロパティを選びます。

    t7
    セキュリティタブを選択し、「カスタムIPsecポリシーをL2TP/IKEv2接続で許可する」にチェックし、事前共有キーを設定します。(図では”poteto”)

    t8

  6. 「ルーティングとリモートアクセス」の画面のローカルサーバを右クリックし「プロパティ」を選択します。「IPv4」タブの「IPv4 アドレスの割り当て」から「静的アドレスプールを使う」を選択します。
    sukusyo
    「追加」をクリックし、クライアント側に付与するIPアドレスのレンジを指定します。
    hani
  7. さあ最後に「ルーティングとリモートアクセス」の画面でサービスを再起動すれば、VPNサーバ側の設定は終わりです。
    t7

つまづきポイント

これでVPNサーバの設定が完了しました。しかし最後に一つだけAWS側で設定しなくてはいけないものがあります。それは「送信元/送信先チェックを無効にする」です。

(送信元/送信先チェック)機能はデフォルトでは有効になっています。この機能が有効になっているインスタンスでは、トラフィックの宛先が自分自身以外の場合、AWS側でそのトラフィックを弾いてしまいます。VPNサーバではTargetインスタンス向けのパケットを受け取る必要があるため、この機能を無効化 しておかないとルーティングができなくなります。(参考:送信元/送信先チェックを無効にする

設定の仕方は簡単です。マネジメントコンソールでVPNサーバを選択したらActionsから「Change Source/Dest Check」を選び、

t9a
[Yes,Disable]をクリックします。これで設定は完了です。
 

t10
AWS側での設定変更に少し時間がかかる場合があります。コーヒーでも飲んで設定変更が完了するまで待ちましょう。

確認

最後に接続確認をしてみましょう。Macでは、VPN接続設定の「詳細」内の「すべてのトラフィックをVPN接続経由で送信」のチェックを外すことで、インターネットとの通信はVPNを経由しないで行うことができます。

試しにTargetインスタンスと通信できるか確認してみます。
 

おお、ちゃんとできていますね。 次はターゲットのインスタンスにログインし、tcpdumpを利用してどこから通信を受けているか確認します。

少し分かりにくいですが、VPNサーバ(10.0.0.240)から通信を受けていることが確認できました。

設定をしていく上で「送信元/送信先チェックを無効にする」に気づかず、時間をかなり消費してしまいました。本記事はこれで終わりです。AWSを便利に使いこなし、楽しい人生を謳歌しましょう。

【追記】「IPv4 アドレスの割り当て」を追記しました。2015年2月3日

AWS運用自動化サービス「Cloud Automator」