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

У одного із замовників зіткнулися з проблемою при перенастроюванні 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.

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

Варто зазначити, що даний VPN сервер знаходиться за NAT, а на маршрутизаторі налаштований кидок портів, необхідних для роботи L2TP (UDP 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.

  1. Відкрийте редактор реєстру exe і перейдіть в гілку:
    • Для Windows XP - HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Services \ IPSec
    • Для Windows 10,8,7, Vista - HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Services \ PolicyAgent
  2. створіть DWORD параметр з ім'ям AssumeUDPEncapsulationContextOnSendRuleі значенням 2

    Примітка. Можливі значення параметра AssumeUDPEncapsulationContextOnSendRule

    • 0 - (Значення за замовчуванням), передбачається, що сервер підключений до інтернету без NAT
    • 1 - сервер знаходиться за NAT
    • 2 - і сервер і клієнт перебувають за NAT
  3. Залишилося перезавантажити комп'ютер і переконатися, що VPN тунель успішно створюється.