Проблема при работе с 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.
К сожалению, добавление в реестр параметра UDPEncapsulationContextOnSendRule 2 , о котором также написано в статье, проблемы не решает. В сети можно найти упоминание пары дополнительных ключей реестра и отключении одной службы, связанной с играми, но вся эта неведомая магия не работает. Как только появляется другой клиент под виндой, твоё соединение отваливается.
Чтобы получить хоть какую-то пользу (кроме моего негативного опыта) от моего поста, собрал несколько ссылок по теме 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
Подписывайтесь на канал и узнавайте первыми о новых материалах, опубликованных на сайте.
ЕСЛИ СЧИТАЕТЕ СТАТЬЮ ПОЛЕЗНОЙ,
НЕ ЛЕНИТЕСЬ СТАВИТЬ ЛАЙКИ И ДЕЛИТЬСЯ С ДРУЗЬЯМИ.
Гайд: Свой собственный L2TP VPN
Покопавшись по просторам интернета в поисках софта для построения своего собственного VPN, постоянно натываешься на кучу гайдов связанных с неудобным в настройке и использовании OpenVPN, требующим проприетарного клиента Wireguard, только один SoftEther из всего этого цирка отличается адекватной реализацией. Но мы расскажем, так сказать, о нативной для Windows реализации VPN – Routing And Remote Access (RRAS).
По странной причине, никто ни в одном гайде не написал про то, как это все развернуть и как включить на нем NAT, поэтому мы сейчас все исправим и расскажем, как сделать свой собственный VPN на Windows Server.
Ну а уже готовый и преднастроенный VPN можно заказать из нашего маркетплейса, он кстати работает из коробки.
1. Устанавливаем службы
Сначала, нам понадобится Windows Server Desktop Experience. Установка Core нам не подойдет, ибо отсутствует компонент NPA. Если компьютер будет членом домена, можно остановиться и на Server Core, в таком случае все это дело можно уложить в гигабайт ОЗУ.
Нам нужно установить RRAS и NPA (Network Policy Server). Первый нам понадобится для создания туннеля, а второй нужен в случае если сервер не является членом домена.
В выборе компонентов RRAS выбираем Direct access and VPN и Routing.
2. Настраиваем RRAS
После того, как мы установили все компоненты и перезагрузили машину, нужно приступить к настройке. Как на картинке, в пуске, находим диспетчер RRAS.
Через эту оснастку мы можем управлять серверами с установленным RRAS. Жмем правой кнопкой мыши, выбираем настройку и переходим.
Пропустив первую страницу переходим к выбору конфигурации, выбираем свою.
На следующей странице нам предлагается выбрать компоненты, выбираем VPN и NAT.
Далее, далее. Готово.
Теперь нужно включить ipsec и назначить пул адресов, который будет использовать наш NAT. Жмем правой кнопкой мыши по серверу и переходим в свойства.
Первым делом вводим свой пароль для l2TP ipsec.
На вкладке IPv4 обязательно нужно установить выдаваемый клиентам диапазон ip адресов. Без этого NAT не заработает.
Теперь осталось добавить интерфейс за NAT. Переходим в подпункт IPv4, жмем правой кнопкой мыши по пустому месту и добавляем новый интерфейс.
На интерфейсе (тот который не Internal) включаем NAT.
3. Разрешаем правила в брандмауэре
Тут все просто. Нужно найти группу правил Routing and Remote Access и включить их всех.
4. Настраиваем NPS
Ищем в пуске Network Policy Server.
В закладках, где перечислены все политики, нужно включить обе стандартные. Это разрешит всем локальным пользователям подключение к VPN.
5. Подключаемся по VPN
Для демонстрационных целей выберем Windows 10. В меню пуск ищем VPN.
Жмем на кнопку добавления подключения и переходим в настройки.
Имя подключения задавайте какое вам хочется.
IP адрес – это адрес вашего VPN сервера.
Тип VPN – l2TP с предварительным ключом.
Общий ключ – vpn (для нашего образа в маркетплейсе.)
А логин и пароль — это логин и пароль от локального пользователя, то есть от администратора.
Жмем на подключение и готово. Вот и ваш собственный VPN готов.
Надеемся, наш гайд даст еще одну опцию тем, кто хочет сделать свой собственный VPN не связываясь с Linux или просто хочет добавить шлюз в свою AD.
Настройка L2TP / IPSec VPN в Windows 10 – Инструкция
Настройка VPN в Windows 10.
Шаг 1.
Нажмите кнопку “Пуск” в панели задач Windows (1) и выберите “Параметры” (2).
Настройка VPN в Windows 10.
Шаг 2.
В открытом окне “Параметров” Windows кликните подраздел “Сеть и Интернет”.
Настройка VPN в Windows 10.
Шаг 3.
В меню “VPN” (1) перейдите к пункту “Добавление VPN-подключения” (2).
Настройка VPN в Windows 10.
Шаг 4.
- (1) “Поставщик услуг VPN” – Windows;
- (2) “Имя подключения” – любое удобное вам имя VPN-подключения;
- (3) “Имя или адрес сервера” – IP-адрес вашего VPNext-сервера из письма;
- (4) “Тип VPN” – L2TP/IPsec с предварительным ключом;
- (5) “Общий ключ” – vpnext;
- (6) “Тип данных для входа” – Имя пользователя и пароль;
- (7) “Имя пользователя” – заданное вами при настройке сервера;
- (8) “Пароль” – заданный вами при настройке сервера.
(Не путать с логином/паролем от Личного Кабинета).
Настройка VPN в Windows 10.
Шаг 5.
VPN-профиль успешно создан (1) в Windows. Перейдите к разделу “Сопутствующие параметры” и выберите “Центр управления сетями и общим доступом” (2).
Настройка VPN в Windows 10.
Шаг 6.
В новом окне сведений о сети выберите “Изменение параметров адаптера”.
Настройка VPN в Windows 10.
Шаг 7.
Кликните правой кнопкой мыши на сетевом подключении с выбранным вами именем профиля (1) и в функциональном меню выберите “Свойства” (2).
Настройка VPN в Windows 10.
Шаг 8.
На вкладке “Безопасность” (1) установите:
- (2) “Тип VPN” – протокол L2TP с IPSec;
- (3) “Шифрование данных” – самое стойкое;
- (4) “Разрешить следующие протоколы” – оба пункта “Протокол проверки CHAP…”.