Решаем проблему подключения к L2TP/ IPSec VPN серверу за NAT

Материал из Home wiki
Перейти к навигации Перейти к поиску

У одного из заказчиков столкнулись с проблемой при перенастройке VPN сервера Windows Server 2012 с PPTP на L2TP/ IPSec, вызванной отключением поддержки PPTP VPN в iOS. Изнутри сети VPN клиенты без каких-либо проблем подключаются к VPN серверу, а вот внешние Windows клиенты при попытке установить соединение с L2TP VPN сервером, получают такую ошибку:


The network connection between your computer and the VPN server could not be established because the remote server is not responding. This could be because one of the network devices (e.g. firewalls, NAT, routers, etc) between your computer and the remote server is not configured to allow VPN connections. Please contact your Administrator or your service provider to determine which device may be causing the problem.

Vpn-connection-error.jpg

В других версиях Windows о наличии аналогичной проблемы могут свидетельствовать ошибки подключения 800, 794 или 809.

Стоит отметить, что данный VPN сервер находится за NAT, а на маршрутизаторе настроен проброс портов, необходимых для работы L2TP (TCP 1701, UDP 500, UDP 4500 и Protocol 50 ESP). Т.е. используется классическая конфигурация.

Как оказалось, проблема эта уже известна и описана в статье https://support.microsoft.com/en-us/kb/926179. В том случае, если VPN сервер L2TP/IPsec находится за NAT, для корректного подключения внешних клиентов через NAT необходимо на стороне сервера и клиента внести изменение в реестр, разрешавшее UDP инкапсуляцию пакетов для L2TP и поддержку (NAT-T) для IPsec.

  • Откройте редактор реестра exe(regedit.exe- как вариант запустить через командную строку или поиск файлов) и перейдите в ветку:
    • Для Windows XP — HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\IPSec
    • Для Windows 10,8,7, Vista — HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\PolicyAgent
  • Создайте DWORD параметр с именем AssumeUDPEncapsulationContextOnSendRule и значением 2

AssumeUDPEncapsulationContextOnSendRule.jpg

  • Примечание. Возможные значение параметра AssumeUDPEncapsulationContextOnSendRule
    • 0 – (значение по-умолчанию), предполагается, что сервер подключен к интернету без NAT
    • 1 – сервер находится за NAT
    • 2 — и сервер и клиент находятся за NAT
Осталось перезагрузить компьютер и убедиться, что VPN туннель успешно создается.