L2TP-VPN に Windows 7 で接続する

CLIENT


Windows 7 から L2TP-VPN に接続する

CentOS 6.0 で L2TP-VPN サーバを構築する で用意した L2TP-VPN サーバーに Windows 7 (x64) から接続する方法です。

Windows 7 から接続する場合には、【コントロールパネル】の【ネットワークとインターネット】にある【ネットワークと共有センター】を開き、"新しい接続またはネットワークのセットアップ" を行います。

接続オプションで "職場に接続します - 職場へのダイヤルアップまたは VPN 接続をセットアップします。" を選択して次へ進んだら、新しい接続を作成して、"インターネット接続 (VPN)" を設定します。

 

そして "インターネットアドレス" に L2TP-VPN を構築したサーバーのドメイン名または IP アドレスを設定します。"接続先の名前" には何か判りやすい名前を付けておくことができます。

また、L2TP の詳細設定を行うために、"今は接続しない。自分が後で接続できるようにセットアップのみを行う" にチェックを入れておきます。

次へ進むと、ユーザー名とパスワードの入力画面が表示されます。

ユーザー名とパスワードのところには "/etc/ppp/chap-secrets" で登録したものを指定します。ドメインのところは空欄のままで大丈夫です。

【作成】ボタンをクリックすると、接続が作成されました。

そうしたらいったん【閉じる】を押します。

 

このようにすると、"ネットワークとインターネット" の一覧に、今作成したネットワークが表示されています。

今回の L2TP での接続には、もう少し設定を調整する必要があるため、ひき続き "ネットワークと共有センター" の "アダプターの設定の変更" を開きます。

登録されているネットワークアダプターの一覧が表示されたら、その中から、先ほど登録した VPN 接続をダブルクリックして開きます。

接続の設定画面が表示されたら、そこの【プロパティ】ボタンをクリックします。

プロパティを開いたら【セキュリティ】タブを開いて、"VPN の種類" で "IPsec を利用したレイヤー 2 トンネリングプロトコル (L2TP/IPSec)" を選択します。

そしてそのすぐ下にある【詳細設定】ボタンをクリックします。

詳細プロパティが表示されたら、"認証に事前共有キーを使う" にチェックを入れて、キーのところには "/etc/ipsec.d/default.secrets" ファイルに記載したパスワードを指定します。

これで、設定はひとまず完了です。

ローカルネットワーク内の L2TP-VPN サーバーや、クライアントとサーバーの両方にグローバル IP が割り当てられている環境であれば、これで接続することができるようになったと思います。

 

L2TP-VPN サーバーやクライアントが NAT で保護されている場合

ただ、L2TP-VPN サーバーかクライアントのどちらか、または両方が、ファイアーウォールに保護されるなどで、アクセスに NAT(アドレス変換)が必要な場合には、Windows ではレジストリの変更が必要になるようです。

 

レジストリキーの場所は、Windows XP では "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\IPSec" になりますが、Windows Vista や 7 の場合には "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\PolicyAgent" になります。

ここに "AssumeUDPEncapsulationContextOnSendRule" という名前の "REG_DWORD" 値を作成して、次のように、値を設定します。

  • 0    NAT トラバーサルを無効にします。何も指定しなかった場合はこれが選択されているものとします。
  • 1    NAT トラバーサルを有効にします。片一方が NAT の背後の場合に設定するそうです。
  • 2    NAT トラバーサルを有効にします。サーバとクライアントの両方が NAT の背後にある場合に使用するそうです。

これらから、適切な値を設定して Windows を再起動すれば、設定した動作モードが有効になります。

 

なお、今回の自分の環境では、L2TP-VPN サーバーがファイアーウォールで守られていて、インターネット側からは静的 NAT で接続できるようになっていました。また、クライアント環境では、NAPT (IP Masquerade) によるアドレス変換が行われていました。

この環境下で、"AssumeUDPEncapsulationContextOnSendRule" の値を "2" に設定して Windows を再起動したところ、無事 L2TP 接続ができるようになりました。