WindowsからヤマハのルータにVPN接続する必要があり、色々設定していたのですがかなりハマったのでそのメモです。
似たような記事はネットに大量にありますが、どれもちょっとずつ参考になったり自分のケースとは違ったりで、みなそれぞれに苦戦しているようです。
ですので、私の場合はこれで動いたよという例として。
環境
ルータ
機種: RTX810
ファーム: Rev.11.01.33
クライアント
Windows10 Pro
やったこと
ルータ側設定
pp設定
### PP anonymous ###
pp select anonymous
pp name ${l2tp-name}
pp bind tunnel3
pp auth request mschap-v2
pp auth username ${vpn-user} ${pass}
ppp ipcp ipaddress on
ppp ipcp msext on
ip pp remote address pool dhcp
ip pp mtu 1258
pp enable anonymous
- bindがtunnel3となっているのは他にIPsec設定が2ついるため
- auth request は mschap-v2にしました
tunnel設定
### TUNNEL 3 ###
tunnel select 3
tunnel encapsulation l2tp
ipsec tunnel 3
ipsec sa policy 3 3 esp aes-cbc sha-hmac
ipsec ike keepalive log 3 off
ipsec ike keepalive use 3 off
ipsec ike local address 3 192.168.0.1
ipsec ike nat-traversal 3 on
ipsec ike pre-shared-key 3 text ${shared-key}
ipsec ike remote address 3 any
l2tp tunnel auth off
l2tp keepalive use on
l2tp syslog on
ip tunnel tcp mss limit auto
tunnel enable 3
- 認証アルゴリズムは sha-hmac、暗号アルゴリズムはaes-cbcをそれぞれ選択
- ipsec ike local addressにルータの内側アドレスを記載する設定を追加
NATディスクリプタ
nat descriptor masquerade static 1000 1 192.168.0.1 udp 500
nat descriptor masquerade static 1000 2 192.168.0.1 esp
nat descriptor masquerade static 1000 3 192.168.0.1 udp 1701
nat descriptor masquerade static 1000 4 192.168.0.1 udp 4500
フィルタ
ip filter 200080 pass * 192.168.0.1 udp * 500
ip filter 200081 pass * 192.168.0.1 esp * *
ip filter 200082 pass * 192.168.0.1 udp * 1701
ip filter 200083 pass * 192.168.0.1 udp * 4500
pp select 1
ip pp secure filter in ${既存のフィルタ} 200080 200081 200082 200083
- PP1にudpの指定ポートのパケットを通過するように設定
その他の設定
ipsec auto refresh on
ipsec transport 3 3 udp 1701
l2tp service on
ネットボランチDNSの登録
予めやっておきました。
{host名}.xxx.netvolante.jp
でルータへの経路が確保できるのはありがたいですね。
ファームウェアの更新
ファームウェアが古いとL2TP周りの不具合がある場合もあるとのことで最新化しました。
比較としてiPhoneからのL2TP接続も試したりしてたのですが、ファームの更新前だと接続エラーになっていたものがファームの更新で接続できるようになったので、まずは最新化するのがよさそうです。
Windows側設定
基本のVPN接続を作成
[設定]→[ネットワークとインターネット]→[VPN] から、[VPN接続を追加する]を選んで追加します。
- サーバ名: ネットボランチDNSに登録したアドレス
- VPNの種類: [事前共有キーを使った L2TP/IPsec]
- 事前共有キー、ユーザ名、パスワードはそれぞれルータ側に設定したもの
くらいでしょうか。
アダプターの設定
- 設定メニュー右の関連設定にある「アダプターのオプションを変更する」を開く
- VPNを右クリックしてプロパティを開く
- プロパティのセキュリティタブを開く
- データの暗号化を「暗号化が必要」を選択する
- 「次のプロトコルを許可する」を選び、MS-CHAP v2にチェックを入れる
- 今回はルータ側がmschap-v2にしてるのでこちらだけでも恐らくよいはず
- 色々試していたのでCHAPも選択してある
- となりの「ネットワーク」タブを開き、IPv6のチェックを外す
- 外さなくてもいけたかもしれない
- 「ハマりポイント」としてる記事がいくつかあったので念の為外した(今回必要なかったので)
レジストリの設定
- レジストリエディタを開く
- "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\PolicyAgent"を開く
- [編集]→[新規]→[DWARD(32ビット値)]を選択し、レジストリ項目を作成する
- 値の名前: AssumeUDPEncapsulationContextOnSendRule
- 値のデータ: 2
ファイアウォール
- Windows Defender ファイアウォールを開く
- [Windows Defender ファイアウォールを介したアプリまたは機能を許可」を開く
- [ルーティングとリモートアクセス]に許可を追加する
NATトラバーサルが有効になるように設定
- コマンドプロンプトを管理者権限で起動
- 以下のコマンドを実行
C:\>netsh advfirewall set global ipsec ipsecthroughnat serverandclientbehindnat
ファイアウォール設定やレジストリ修正を反映するようにWindowsを再起動
これで接続できるようになりました。