Проблема при работе с L2TP/IPSec под Windows которая не решается годами
Изначально, не планировал выделять для данного материала отдельный пост, но так как проблема не решается годами, решил рассказать о ней чуть подробнее. Проблема заключается в том, что из локальной сети, имеющей единственный выход в Интернет, невозможно установить одновременно более одного соединения к внешнему L2TP/IPSec VPN серверу с компов под управлением Windows.
Допустим, у вас заведено несколько пользователей на внешнем VPN L2TP сервере. По отдельности, каждый из них спокойно устанавливает соединение с сервером и работает стабильно, без сбоев. Любые попытки одновременной работы с VPN сервером других пользователей сети, использующих один внешний IP, прерывают работу друг друга, возвращая в журнал Windows код ошибки 809.
Наблюдается такой эффект исключительно на компьютерах под управлением ОС Windows, начиная с XP и заканчивая «десяткой». Причём на Linux и MacOS всё прекрасно работает вне зависимости от того, сколько одновременно клиентов подключается к удалённому L2TP/IPSec серверу. Так что это проблема не в настройках VPN сервера или роутера, как пишут на многих форумах (да и сами мелкомягкие), а именно в некорректной работе встроенного L2TP/IPSec клиента на Windows.
Честно говоря, ранее эта проблема обходила меня стороной. Всегда использовал OpenVPN и столкнулся с ней впервые только сейчас, после поднятия L2TP VPN-сервера на роутере Keenetic. После чего и было принято решение объединять сети офисов между собой, а не давать доступ отдельным клиентам, но об этом расскажу в следующей статье.
Есть ли решение проблемы при работе с L2TP/IPSec в Windows?
Но неужели Microsoft не знает о проблеме? Знает. Как оказалось, проблема давно известна и описана в статье https://support.microsoft.com/en-us/kb/926179. Но вот с решением беда...
Если совсем кратко, то там говорится что в случае, когда VPN сервер L2TP/IPsec находится за NAT, для корректного подключения внешних клиентов через NAT необходимо на стороне сервера и клиента внести изменение в реестр, разрешавшее UDP инкапсуляцию пакетов для L2TP и поддержку (NAT-T) для IPsec.
К сожалению, добавление в реестр параметра DWORD с именем UDPEncapsulationContextOnSendRule и значением (2), о котором также написано в статье, проблемы не решает.
Параметр UDPEncapsulationContextOnSendRule добавляется в ветку реестра:
- для Windows XP — HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\IPSec
- для Windows Vista/7/8/10 — HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\PolicyAgent
В сети можно найти упоминание ещё пары дополнительных ключей реестра и отключении одной службы, связанной с играми, но вся эта неведомая магия не работает. Как только появляется другой клиент под виндой, твоё соединение отваливается.
Чтобы получить хоть какую-то пользу (кроме моего негативного опыта) от моего поста, собрал несколько ссылок по теме L2TP/IPsec и NAT-T в Windows:
- Настройка сервера L2TP/IPsec за устройством NAT-T в Windows: https://support.microsoft.com/ru-ru/help/926179/how-to-configure-an-l2tp-ipsec-server-behind-a-nat-t-device-in-windows
- Реализация L2TP/IPsec VPN сервера стандартными средствами Windows 7/8 для подключения Windows/iOS/Android систем к внутренней сети: https://habr.com/ru/post/210410/
- IPSec — протокол защиты сетевого трафика на IP-уровне: https://www.ixbt.com/comm/ipsecure.shtml
Комментариев: 8
Месяц я мучился с WINDOWS 10 Pro !!!!!!
[HKEY_LOCAL_MACHINESystemCurrentControlSetServicesRasmanParameters]
"ProhibitIpSec"=dword:00000000 !!!!!!
"AllowL2TPWeakCrypto"=dword:00000001
Мелкософтцы запарили своими багами
Спасибо дружище!
Смог наконец то избавиться от ошибки 809.
VPN на Server 2008 R2, клиент Windows 10
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\RasMan\Parameters]
«AllowL2TPWeakCrypto»=dword:00000001
«ProhibitIPSec»=dword:00000000
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\IPSec
«AssumeUDPEncapsulationContextOnSendRule»=dword:00000002
2 недели мучился, на Windows 7, Windows 10
[HKEY_LOCAL_MACHINESystemCurrentControlSetServicesRasmanParameters]
"ProhibitIpSec"=dword:00000000 !!!!!!
"AllowL2TPWeakCrypto"=dword:00000001
СПАСИБО параметры народ)
У меня получилось так. VPN на Server 2008 r2, клиенты на Win 7 и 10. Все за NATом.
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\PolisyAgent
«AssumeUDPEncapsulationContextOnSendRule»=dword:00000002
Однако клиенты на мобильном интернете не могут подключиться по L2TP, а на Мегафоне и по PPTP.
Где меняете на сервере или в клиентких пк? Меняю на сервере со смарта перестает подключается. Меняю на клиентских пк - все равно не подрубается
не понял вопрос, у вас совсем не подключается или только когда одновременно несколько клиентов подключается соединение отваливается?
Проделал все эти манипуляции на двух компьютерах. Все равно подключиться может только один. На обоих Win10, выходят в Интернет через один роутер.