公開サーバ用に久しぶりにRTX810 という YAMAHA のルータを買いました。
今回のRTX810 導入の目的は F/W 代わりにして、外部から必要としないサービスについてはL2TP/IPSec で VPN を張って安全に接続するという方法が取りたかったため。ヤマハのウェブには「Microsoft社製Windows OSのL2TP/IPsec接続はサポートしません」*1とハッキリ書かれているので、額面通りに解釈すれば Windows からの接続はできないことになりますが、レジストリをいじって Windows 側も L2TP/IPsec の NAT トラバーサルを有効にしてやればサポート対象外ではあるものの接続できるという情報を前もってみつけていたので、今回はこれを利用させてもらいます。
以下、設定メモ。
† RTX810 の設定
今回使った設定は下記のような感じです。
ほぼ参考にしたサイトそのまま使わせてもらいました。
# WANip route default gateway 10.8.95.1 #Need to be updatedip lan2 address 10.8.95.230/24 #Need to be updated (サーバのグローバルアドレス★1)# LANip lan1 address 192.168.100.254/24ip lan1 proxyarp on# DHCPdhcp service serverdhcp server rfc2131 compliant except remain-silentdhcp scope 1 192.168.100.1-192.168.100.99/24# L2TP/IPSECpp select anonymous pp bind tunnel1 pp auth request mschap-v2 pp auth username hoge fugafugafuga #Need to be updated(ユーザー名/パスワード★2) ppp ipcp ipaddress on ppp ipcp msext on ip pp remote address pool dhcp ip pp mtu 1258 pp enable anonymous tunnel select 1 tunnel encapsulation l2tp ipsec tunnel 101 ipsec sa policy 101 1 esp aes-cbc sha-hmac ipsec ike keepalive use 1 off ipsec ike local address 1 192.168.100.254 ipsec ike nat-traversal 1 on ipsec ike pre-shared-key 1 text hogehogehogehoge #Need to be updated (事前共有キー★3) ipsec ike remote address 1 any l2tp tunnel disconnect time off l2tp keepalive use on 10 3 l2tp keepalive log on l2tp syslog on ip tunnel tcp mss limit auto tunnel enable 1 ipsec transport 1 101 udp 1701 ipsec auto refresh on l2tp service on# NATip lan2 nat descriptor 1nat descriptor type 1 nat-masqueradenat descriptor address outer 1 primarynat descriptor address inner 1 autonat descriptor masquerade rlogin 1 onnat descriptor masquerade static 1 1 192.168.100.254 udp 1701nat descriptor masquerade static 1 2 192.168.100.254 udp 500nat descriptor masquerade static 1 3 192.168.100.254 espnat descriptor masquerade static 1 4 192.168.100.254 udp 4500
† レジストリを書き換えて L2TP/IPsec の NAT トラバーサルを有効に
前述の MS のナレッジベースにの資料を参考にレジストリエディタで下記のキーを開きます。
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\PolicyAgent
DWORD(32bit) をAssumeUDPEncapsulationContextOnSendRule という名前で作成して、値を2 に設定します。

もしくは管理者権限のコマンドプロンプトから以下を実行でもできます。
reg add HKLM\SYSTEM\CurrentControlSet\Services\PolicyAgent /v AssumeUDPEncapsulationContextOnSendRule /t REG_DWORD /d 2
† Windows 上で VPN のセットアップを行う
ここからは普通の VPN の設定と変わりません。
「ネットワークと共有センター」を開き、「新しい接続またはネットワークのセットアップ」を選択します。

「職場に接続します」を選択します。

「インターネット接続(VPN)を使用します」を選択します。

接続先サーバの情報を入力します。
- インターネット アドレス: ルーターのグローバルアドレス★1
- 接続先の名前: 好きな名前を入力
最後に最下段の「今は接続しない」にチェックをつけておきます。

接続の認証情報を入力します。
- ユーザー名: ルータで設定したユーザー名★2
- パスワード: ルータで設定したパスワード★2

これで接続設定ができました。

「ネットワークと共有センター」に戻り、左側にある「アダプター設定の変更」を開きます。

先ほど設定した名前の項目のプロパティを開きます。

「セキュリティ」タブを開き、「VPNの種類」を「IPsec を利用したレイヤー 2 トンネリング プロトコル (L2TP/IPSec)」に変更します。

さらに、「詳細設定」ボタンを押して、「認証に事前共有キーを使う」を選択し、事前共有キー★3を入力します。

最後にプロパティを閉じて、VPN 接続を行ってみて問題がないことを確認すれば OK です。
† WindowsXP からの接続
Windows XP は AES に対応していないので、上記の設定では接続できません。
3DES に設定すれば大丈夫かもしれませんが、もうすぐサポートが切れることを考えると AES で接続できるマシンでだけ運用するのが賢明そうです。