Windows10からIX2215へのL2TP/IPsec VPN接続に失敗するときにやったこと
はじめに
NECのVPNルータであるUNIVERGE IXシリーズにL2TP/IPsec機能を設定した際、MacやiPhoneからは接続できるのにWindows10からは接続できなかった(「セキュリティ層でリモートコンピュータと互換性のあるパラメーターをネゴシエートできなかったため、L2TP接続に失敗しました」というエラー)。IX2215だけではなくIX2105とかでも同じだと思う。
適当に調べるとレジストリを変更してNAT越えに対応する記事が非常に多かったが、それでは解決しなかった。
そこでWindows10上でパケットキャプチャを行いVPN接続ができない原因を調査した。
結論
IXのリファレンス通りにやるとIPsecの鍵交換時に必要なプロポーザルが足りないようだった。 AES 256bit, SHA-1 2048bit(DH group 14)をIX側で使用するように設定すると通った。 config的には
Router(config)# ike proposal ike4 encryption aes-256 hash sha group 2048-bit
を打ち込めば接続できた。
環境
- IX2215:
IX Series IX2215 (magellan-sec) Software, Version 9.4.17
- Windows10 Pro 1803(ビルド 17134.345)
原因の調査
Wiresharkのフィルタに udp.port == 4500 or udp.port == 500
を入れるといい感じに鍵交換のパケットだけが見られる。
まず最初のパケット(クライアント→VPNサーバ)を見てみる。 その中でも1枚めの画像の赤線の部分の中にプロポーザルが格納されている。 Security Associationの中身。
Proposal transforms
にはプロポーザルの数が格納されており、その後に具体的な内容が格納されている(Payload: Transform (3) #1, #2, #3...
)。
私の環境では以下のプロポーザルが格納されていた。
- AES-CBC 256-bit, SHA ECP 384-bit
- AES-CBC 128-bit, SHA ECP 256-bit
- AES-CBC 256-bit, SHA DH Group 14(2048-bit)
- 3DES-CBC, SHA DH Group 14(2048-bit)
- 3DES-CBC, SHA DH Group 2(1024-bit)
IXのリファレンスでは以下のようになっていた。
- AES-CBC 256-bit, SHA DH Group 2(1024-bit)
- AES-CBC 128-bit, SHA DH Group 2(1024-bit)
- 3DES-CBC, SHA DH Group 2(1024-bit)
今回の環境下でのIXではハッシュアルゴリズムとしてSHAのECPが設定できないようなので、IX側にAES-CBC 256-bit, SHA DH Group 14(2048-bit)
が使えるように設定をすればいいようだった。
また、Windows10側でのVPN接続は以下のように設定した。
「データの暗号化」の部分で 暗号化が必要(サーバが拒否する場合は切断します)
にしたところ、「ローカル コンピュータでは、要求されたデータの暗号化の種類はサポートされません。」というエラーが発生した。
余談
意外なところにIPsecの細かなパラメータ設定するところがあったのが発見でした。
ファイアウォールの設定からIPSecの鍵交換プロトコルの設定見れたんだ - Windows10のIPsecの設定 | ThreeLeaf : https://t.co/xd94t2Ph7c #miteru
— すていばず (@staybuzz) 2018年11月10日