#2950: Попытка L2TP-подключения не удалась из-за ошибки, произошедшей на уровне безопасности

Отредактирована: 139 дней назад

Симптомы

Ошибка "Попытка L2TP-подключения не удалась из-за ошибки, произошедшей на уровне безопасности во время согласований с удаленным компьютером" при подключении к L2TP/IpSec VPN.

Решение 1

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

Если целевой L2TP VPN сервер находится за NAT, то с настройками по умолчанию вы не сможете установить подключение к нему с компьютера Windows. Дело в том, что протокол IPsec не поддерживает NAT. Для обхода этого ограничения используется протокол NAT-T, который инкапсулирует пакеты IPsec в UDP/4500.

IPSec использует протокол ESP (Encapsulating Security Payload) для шифрования пакетов, а протокол ESP не поддерживает PAT/ Port Address Translation.

NAT-T включен по умолчанию почти во всех операционных системах (iOS, Android, Linux), кроме Windows.

Если VPN сервер L2TP/IPsec находится за NAT, то для корректного подключения внешних клиентов через NAT необходимо как на сервере, так и на клиентеWindows внести изменение в реестр, разрешающее UDP инкапсуляцию пакетов для L2TP и поддержку (NAT-T) для IPsec.

  1. Откройте редактор реестраregedit.exeи перейдите в ветку:
    • Для Windows 10,8.1,7 и Windows Server 2016,2012R2,2008R2 - HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\PolicyAgent
    • Для Windows XP/Windows Server 2003 - HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\IPSec
  2. Создайте DWORD параметр с именем AssumeUDPEncapsulationContextOnSendRule и значением 2AssumeUDPEncapsulationContextOnSendRule
    Примечание. Возможные значения параметра AssumeUDPEncapsulationContextOnSendRule:
    • 0– (значение по умолчанию), предполагается, что VPN сервер подключен к интернету без NAT;
    • 1 – VPN сервер находится за NAT;
    • 2 - и VPN сервер и клиент находятся за NAT.
  3. Осталось перезагрузить компьютер и убедиться, что VPN туннель успешно создается.

Если и Windows VPN сервер и клиент находятся за NAT, нужно изменить это параметре на обоих системах.

Можно использовать командлет PowerShell для внесения изменений в реестр:

Set-ItemProperty -Path "HKLM:SYSTEM\CurrentControlSet\Services\PolicyAgent" -Name "AssumeUDPEncapsulationContextOnSendRule" -Type DWORD -Value 2 –Force

После включения поддержки NAT-T, вы сможете успешно подключаться к VPN серверу с клиента через NAT (в том числе двойной NAT). В этом случае при установлении L2TP/IPsec подключения сначала создается зашифрованный IPsec-канал (используется протокол IKE: UDP/500 и NAT-T: UDP/4500). После этого уже внутри IPsec поднимается туннель L2TP на порт 1701 UDP. Это означает, что, если VPN сервер находится за NAT, вам не нужно пробрасывать на него порт1701 UDP с внешнего роутера/маршрутизатора.

Решение 2

Попытка L2TP-подключения не удалась из-за ошибки, произошедшей на уровне безопасности во время согласований с удаленным компьютером. (Ошибка 789)
Error 789: The L2TP connection attempt failed because the security layer encountered a processing error during initial negotiations with the remove computer. 
l2tp ошибка 789 подключение не удалась из за несогласования безопасности

Это баг. Если в вашей локальной сети несколько Windows компьютеров, вы не сможете установить более одного одновременного подключения к внешнему L2TP/IPSec VPN серверу. Если при наличии активного VPN туннеля с одного клиента, вы попытаетесь подключиться к тому же самому VPN серверу с другого компьютера, появится ошибка с кодом 809 или 789:

Что интересно, эта проблема наблюдется только с Windows-устройствами. На устройствах с Linux/MacOS/Android в этой же локальной сети таких проблем нет. Можно без проблем одновременно подключиться к VPN L2TP серверу с нескольких устройств.

По информации на TechNet проблема связана с некорректной реализацией клиента L2TP/IPSec клиента в Windows (не исправляется уже много лет).

Для исправления этого бага нужно изменить два параметра реестра в ветке HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\RasMan\Parameters и перезагрузите компьютер:

  • AllowL2TPWeakCrypto– изменить на 00000001(ослабляет уровень шифрования, для L2TP/IPSec используются алгоритмы MD5 и DES)
  • ProhibitIPSec– изменить на 00000000 (включает шифрование IPsec, которое часто отключается некоторыми VPN клиентами или утилитами)
Параметры реестра ProhibitIPSec AllowL2TPWeakCrypto для корректной работы VPN за NAT

Для изменения этих параметров реестра достаточно выполнить команды:

reg add "HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\Rasman\Parameters" /v AllowL2TPWeakCrypto /t REG_DWORD /d 1 /f

reg add "HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\Rasman\Parameters" /v ProhibitIpSec /t REG_DWORD /d 0 /f

Это включает поддержку нескольких одновременных L2TP/IPSec-подключений в Windows через общий внешний IP адрес (работает на всех версиях, начиная с Windows XP и заканчивая Windows 10/11).

Еще несколько советов, которые помогут вам исправить проблему с L2TP VPN подключением в Windows

  • Проверьте, что в настройках L2TP VPN подключения включен протокол аутентификации, которые поддерживается VPN сервером. Откройте ncpa.cpl -> свойства VPN подключения -> вкладка Security. В списке протоколов отметьте разрешенные только PAP.
  • Проверьте, что в Windows запущены службы IKE and AuthIP IPsec Keying Modulesи IPsec Policy Agent:
  • get-service IKEEXT,PolicyAgent
  • Проверить службы IKE и IPsec Policy Agent
  • Откройте диспетчер устройств и удалите виртуальные адаптеры WAN Miniport (L2TP)и WAN Miniport (IKEv2). Перезагрузите компьютер. После перезагрузки Windows восстановит эти адаптеры с настройками по умолчанию;
  • переустановить виртуальный адаптер wan miniport l2tp
  • В некоторых случаях помогает отключение IPSec и использование только L2TP. Для этого нужно изменить значение параметр ProhibitIpSecна 1в ветке HKLM\SYSTEM\CurrentControlSet\Services\RasMan\Parameters.

Решение 3

Попробуйте обновить или переустановить драйвер сетевой карты последней версии