- Исправляем проблему подключения к L2TP/IPSec VPN серверу за NAT
- VPN ошибка 809 для L2TP/IPSec в Windows за NAT
- L2TP VPN не работает на некоторых Windows компьютерах в локальной сети
- Как настроить VPN-соединение PPTP / L2TP на вашем роутере (новый интерфейс)?
- Похожие статьи
- Прямые руки → Настраиваем VPN сервер L2TP и IPsec на Mikrotik RouterOS
- Настраиваем соединение с vpn сервером
- Дополнение
Исправляем проблему подключения к L2TP/IPSec VPN серверу за NAT
26.10.2020
itpro
Windows 10, Windows Server 2016
комментариев 29
Столкнулись с интересной проблемой у одного из заказчиков после перенастройки 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 о наличии аналогичной проблемы могут свидетельствовать ошибки VPN подключения 800, 794 или 809.
Стоит отметить, что данный VPN сервер находится за NAT, а на маршрутизаторе настроен проброс портов, необходимых для работы L2TP:
- UDP 1701 — Layer 2 Forwarding Protocol (L2F) & Layer 2 Tunneling Protocol(L2TP)
- UDP 500
- UDP 4500 NAT-T – IPSec Network Address Translator Traversal
- Protocol 50 ESP
В правилах Windows Firewall VPN сервера эти порты также открыты. Т.е. используется классическая конфигурация. Для подключения используется встроенный VPN клиент Windows.
VPN ошибка 809 для L2TP/IPSec в Windows за NAT
Как оказалось, проблема эта уже известна и описана в статье https://support.microsoft.com/en-us/kb/926179. По умолчанию встроенный VPN клиент Windows не поддерживает подключение к L2TP/IPsec через NAT. Дело в том, что IPsec использует протокол ESP (Encapsulating Security Payload) для шифрования пакетов, а протокол ESP не поддерживает PAT (Port Address Translation). Если вы хотите использовать IPSec для коммуникации, Microsoft рекомендует использовать белые IP адреса на VPN сервере.
Но есть и обходное решение. Можно исправить этот недостаток, включив поддержку протокола NAT—T, который позволяет инкапсулировать пакеты протокола ESP 50 в UDP пакеты по порту 4500. NAT-T включен по-умолчанию почти во всех операционных системах (iOS, Android, Linux), кроме Windows.
Если VPN сервер L2TP/IPsec находится за NAT, то для корректного подключения внешних клиентов через NAT необходимо на стороне Windows сервера и клиента внести изменение в реестр, разрешающее UDP инкапсуляцию пакетов для L2TP и поддержку (NAT-T) для IPsec.
- Откройте редактор реестра 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
- Создайте DWORD параметр с именем AssumeUDPEncapsulationContextOnSendRule и значением 2;
- 0 – (значение по-умолчанию), предполагается, что VPN сервер подключен к интернету без NAT;
- 1 – VPN сервер находится за NAT;
- 2 — и VPN сервер и клиент находятся за NAT.
Set-ItemProperty -Path «HKLM:SYSTEM\CurrentControlSet\Services\PolicyAgent» -Name «AssumeUDPEncapsulationContextOnSendRule» -Type DWORD -Value 2 –Force;
После включения поддержки NAT-T, вы сможете успешно подключаться к VPN серверу с клиента через NAT (в том числе двойной NAT).
В некоторых случаях для корректной работы VPN необходимо открыть дополнительное правило в межсетевом экране для порта TCP 1701 (в некоторых реализациях L2TP этот порт используется совмести с UDP 1701).
NAT-T не корректно работал в ранних редакциях Windows 10, например, 10240, 1511, 1607. Если у вас старая версия, рекомендуем обновить билд Windows 10.
L2TP VPN не работает на некоторых Windows компьютерах в локальной сети
Есть еще один интересный баг. Если в вашей локальной сети несколько Windows компьютеров, вы не сможете установить более одного одновременного подключения к внешнему L2TP/IPSec VPN серверу. Если при наличии активного VPN туннеля с одного клиента, вы попытаетесь подключиться к тому же самому VPN серверу с другого компьютера, появится ошибка с кодом 809 или 789:
Error 789: The L2TP connection attempt failed because the security layer encountered a processing error during initial negotiations with the remove computer.
Что интересно, эта проблема наблюдется только с 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 клиентами или утилитами)
Для изменения этих параметров реестра достаточно выполнить команды:
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).
Предыдущая статья Следующая статья
Как настроить VPN-соединение PPTP / L2TP на вашем роутере (новый интерфейс)?
Дата последнего обновления: 06-04-2018 15:45:23 PM 69541
1. Наши маршрутизаторы поддерживают клиент PPTP / L2TP, но могут подключаться только к тем VPN-серверам, чьи данные не зашифрованы.
2. Некоторые интернет-провайдеры обеспечивают соединение PPTP / L2TP. Таким образом, вы можете подключиться к интернету через клиент PPTP / L2TP.
Возьмем Archer C9_V5 в качестве примера:
1. Зайдите в настройки маршрутизатора и перейдите в раздел Дополнительные настройки -> Сеть -> Интернет.
2. Выберите PPTP в качестве типа подключения к Интернету.
3. Введите правильное имя пользователя и пароль.
4. Введите правильный IP-адрес/доменное имя VPN-сервера. (Например: 219.76.10.41, или если ваш VPN-сервер является доменным именем, вы можете ввести имя домена.)
5. Нажмите Сохранить, а затем Подключить.
Похожие статьи
Был ли этот FAQ полезен?
Ваш отзыв поможет нам улучшить работу сайта.
Что вам не понравилось в этой статье?
- Недоволен продуктом
- Слишком сложно
- Неверный заголовок
- Не относится к моей проблеме
- Слишком туманное объяснение
- Другое
Как мы можем это улучшить?
Спасибо за обращение
Нажмите здесь, чтобы связаться с технической поддержкой TP-Link.
Подписаться на рассылку Мы с ответственностью относимся к вашим персональным данным. Полный текст положения об обработке персональных данных доступен здесь. С нашими условиями использования и программой улучшения пользовательского опыта можно ознакомиться здесь.
Прямые руки → Настраиваем VPN сервер L2TP и IPsec на Mikrotik RouterOS
В этот раз я расскажу как настроить VPN L2TP сервер, т.к. он обеспечивает более высокий уровень безопасности но и более требователен к ресурсам системы, а также поддерживается не всем оборудованием, например, только самыми последними версиями Andriod на 100%, по крайней мере, мне не попадались современные телефоны которые его не поддерживают. Основной плюс данной стемы это:
а) Использование тоннеля передачи данных (тунелирование).
б) Защита передаваемых данных с помощью IPsec.
Чтобы было понятнее, мы создадим отдельную подсеть для клиентов подключающихся через L2TP, а оттуда уже настроим маршрутизацию туда куда нам нужно.
Для начала создадим диапазон IP адресов для подключающихся клиентов, мы не будем выдавать каждому пользователю персональный IP адрес, а автоматизируем этот процесс и будем выдавать из пула свободных адресов.
Переходим в IP -> Pool мы создадим пул на 20 IP адресов. Назовем его l2tp_pool чтобы было понятно за что он отвечает.
В результате у нас есть 2 пула адресов, первый используется, у меня, для локальной сети, а второй для L2TP клиентов.
Создаем профиль нашего L2TP сервера
переходим в PPP -> Profiles
В настройках профиля указываем:
Имя профиля: L2TP-server ( чтобы было понятно за что он отвечает)
Local adrdress: 192.168.10.1 начало диапазона IP адресов
Remote Address: l2tp_pool указываем название пула адресов который мы создали ранее
Change TCP MSS: yes
(Все что менялось выделено синим!)
Переходим в вкладку Protocols
Use MPLS: yes
Use Compressiaon: no
Use VJ Compressiaon: no
Use Encription: yes
(Все что менялось выделено синим!)
Переходим во вкладку Limits
Там все оставляем по умолчанию и в строке Only one оставляем default
Создаем пользователя, переходим в PPP -> Secrets
Где указываем имя пользователя, пароль, указываем сервис к которому этот пользователь будет применен L2TP, а также профиль с которым будет работать наш L2TP сервер, мы его создали ранее (L2TP-server)
нам остается включить L2TP сервер, переходим в PPP -> Interface нажимаем кнопку L2TP server
Все сто менялось выделено красным!
Где:
Включаем сам сервер L2TP (ставим галку)
Включаем профиль, который мы создали ранее L2TP-server
Убираем все протоколы, оставляем mschap2 (остальные протоколы уже давно и успешно взломаны!)
Ставим галку Use IPsec
Придумываем IPsec Secret: по сути это парольная фраза, которая едина для всех.
Нам с остается создать правила для фаерволла, чтобы мы могли достучаться до нашего L2TP сервера.
Переходим в IP -> Firewall -> Filter Rules
необходимо создать разрешающее правило для следующих портов и протоколов:
Протокол: UDP
Разрешаем порты: 1701,500,4500
В качестве In.Interface указываем тот что подключен к интернет
Также добавляем правило разрешающее ipcec
протокол: ipsec-esp
В качестве In.Interface указываем тот что подключен к интернет
Почти все готово, но если мы подключимся к нашему L2TP серверу, то не сможем выйти в интернет т.к. не создано разрешающее правило, переходим во вкладку NAT
Создаем новое правило
Chain: snat (т.к. NAT это у нас источник пакетов)
Src. Address: 192.168.10.0/24 (указываем подсеть которая у нас используется для выдачи IP адресов клиентам L2TP сервера)
Out.Inerface указываем интерфейс который у нас подключен к интернет.
переходим во вкладку Action и в строке Action указываем маскарадинг
Вот теперь все готово, нам осталось настроить VPN подключение, в Windows оно делается штатными средствами,
но есть нюанс.
Настраиваем соединение с vpn сервером
Создаем стандартное VPN подключение, в нем указываем протокол L2TP/IPsec, чтобы система не переберала все доступные протоколы, а подключалась сразу по нужному.
Указываем, разрешить следующие протоколы, ставим галку MS-CHAP v2
Нам необходимо нажать кнопку: Дополнительные параметры и там указываем парольную фразу, которую мы придумали при создании в строке IPsec Secret
Вот теперь точно все, подключаемся и пользуемся.
Дополнение
Если есть необходимость изменить настройки шифрования, то нам необходимо перейти в IP -> IPsec во вкладку Proposals и там выставить необходимые виды шифрования
Также в этом разделе можно добавлять свои ключи или сгенерировать, хотя я не готов гарантировать что роутер сможет обеспечить высокий уровень энтропии при генерации ключей, так что генерировать лучше на чем-то другом, а сюда их уже импортировать
В общем данный роутер, позволяет настроить систему довольно гибко исходя из ваших задач.
В процессе использования также выплыл один баг. Если вы подключены по L2TP то при попытке подключиться к маршрутизатору через Winbox система пишет что не правильный логин/пароль, а вот при подключении через PPTP такой проблемы не наблюдается. Как эту тему побороть, я пока не выяснил, если разберусь обязательно отпишусь.
О том что еще можно настроить на MikroTik