- Как настроить IPSec в Windows
- Что такое IPSEC?
- Внедрение IPSEC
- Настройка VPN-сервера
- Настройка машины с Windows 10
- Исправляем проблему подключения к L2TP/IPSec VPN серверу за NAT
- VPN ошибка 809 для L2TP/IPSec в Windows за NAT
- L2TP VPN не работает на некоторых Windows компьютерах в локальной сети
- Настройка сервера L2TP/IPsec за устройством NAT-T
- Аннотация
- Установите ключ реестра AssumeUDPEncapsulationContextOnSendRule
Как настроить IPSec в Windows
Существует множество приложений, которые будут реализовывать аутентификацию и шифрование сетевого трафика через отдельную стороннюю программу.
Тем не менее, операционная система Microsoft может также реализовать это через конфигурацию IPSEC. В этой статье мы рассмотрим, что такое IPSEC, и простой пример реализации.
Что такое IPSEC?
Internet Protocol Security или IPSEC — это протокол, используемый для аутентификации и шифрования IP-коммуникаций. Это достигается путем взаимной аутентификации между агентами, а также обмена криптографическими ключами в начале сеанса.
IPSEC также позволит добавлять ограничения IP и шифрование на уровне TCP / UDP к приложениям, которые иначе не могут его поддерживать. IPSEC использует IP-протокол 50 (ESP), IP-протокол 51 (AH) и UDP-порт 500.
Внедрение IPSEC
В этом примере мы настроим IPSEC для шифрования связи между двумя компьютерами Windows. Первый компьютер, сервер Windows 2012 будет выступать в качестве сервера VPN.
Второй компьютер, клиент Windows 10, будет действовать как клиент VPN. LT2P IPSEC VPN может обмениваться либо предварительным общим ключом, либо сертификатом. В этом примере мы будем обмениваться предварительным общим ключом.
Настройка VPN-сервера
На компьютере с Windows 2012 нам потребуется установить функции маршрутизации и удаленного доступа. Для этого перейдите в диспетчер серверов и добавьте роли и компоненты . Выберите установку на основе ролей или функций . Выберите локальный сервер. Выберите для установки следующие роли сервера.
Сетевая политика и службы доступа
Сервер сетевой политики
Удаленный доступ
Прямой доступ и VPN (RAS)
После установки этих новых функций вам потребуется оснастка для управления ими. Откройте mmc.exe с правами администратора. Перейти к файлу | Добавить / удалить оснастку. Добавьте оснастку маршрутизации и удаленного доступа .
Эта оснастка позволяет настраивать многопротокольные службы маршрутизации LAN-to-LAN, LAN-to-WAN, виртуальная частная сеть (VPN) и трансляция сетевых адресов (NAT).
В консоли MMC щелкните правой кнопкой мыши на маршрутизации и удаленного доступа и выберите, чтобы добавить сервер. Выберите локальную машину. Затем щелкните правой кнопкой мыши на только что созданном компьютере и выберите «Настроить и включить маршрутизацию и удаленный доступ» . Выберите Удаленный доступ (Dial Up или VPN).
Затем проверьте параметр VPN . У вас должно быть как минимум две сетевые карты, чтобы это работало. Одним из них может быть петля. Укажите диапазон адресов, которые будут предоставлены для входящего соединения. Убедитесь, что они не конфликтуют с другими адресами, выделенными в вашей существующей сети. В этом примере мы не будем использовать радиус-сервер.
Далее попытайтесь запустить службу маршрутизации и удаленного доступа. Следующий ключ реестра может потребоваться удалить, чтобы запустить службу.
В консоли mmc.exe щелкните правой кнопкой мыши на имени компьютера и перейдите в Свойства. Измените эти свойства на вкладке безопасности.
Выберите методы аутентификации, как показано ниже.
Установите флажок, чтобы разрешить настраиваемую политику IPSEC для соединения L2TP / IKEv2. Добавьте предварительный общий ключ.
Наконец, вам нужно будет изменить пользователя, чтобы получить доступ к VPN. Откройте compmgmt.msc, перейдите в раздел «Локальные пользователи и группы» и выберите свойства пользователя, которого вы хотите использовать для VPN.
Перейдите на вкладку Dial Up. Выберите Разрешить доступ и нажмите Применить . На вашем компьютере потребуется перезагрузка. После перезагрузки вы будете готовы протестировать свой первый клиент.
Настройка машины с Windows 10
На компьютере с Windows 10 откройте «Настройки сети и Интернета». Выберите VPN на левой панели и добавьте VPN-соединение. Отредактируйте дополнительные параметры.
Разместите IP-адрес вашего VPN-сервера под именем или адресом сервера. Выберите L2TP/IPSEC с параметром предварительного общего ключа в разделе Тип VPN. Добавьте предварительно общий ключ и имя пользователя и пароль.
Свойства безопасности для VPN должны быть изменены под сетевым адаптером. На адаптере VPN выберите «Свойства» и перейдите на вкладку «Безопасность». Установите переключатель EAP и выберите Microsoft: защищенный пароль (EAP-MSCHAPv2) (шифрование включено).
Наконец, снова щелкните правой кнопкой на адаптере для подключения. Поздравляем! Вы создали VPN-туннель IPSEC.
Исправляем проблему подключения к 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 о наличии аналогичной проблемы могут свидетельствовать ошибки 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).
L2TP VPN не работает на некоторых Windows компьютерах в локальной сети
Есть еще один интересный баг. Если в вашей локальной сети несколько Windows компьютеров, вы не сможете установить более одного одновременного подключения к внешнему L2TP/IPSec VPN серверу. Если при наличии активного VPN туннеля с одного клиента, вы попытаетесь подключиться к тому же самому VPN серверу с другого компьютера, появится ошибка с кодом 809 или 789:
По информации на 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).
Настройка сервера L2TP/IPsec за устройством NAT-T
В этой статье описывается настройка сервера L2TP/IPsec за устройством NAT-T.
Оригинальная версия продукта: Windows 10 — все выпуски, Windows Server 2012 R2
Исходный номер КБ: 926179
Аннотация
В этот раздел, описание метода или задачи включены действия, содержащие указания по изменению параметров реестра. Однако неправильное изменение параметров реестра может привести к возникновению серьезных проблем. Поэтому следует в точности выполнять приведенные инструкции. Для дополнительной защиты создайте резервную копию реестра, прежде чем редактировать его. Так вы сможете восстановить реестр, если возникнет проблема. Дополнительные сведения о том, как создать и восстановить реестр, см. в этой информации, как создать и восстановить реестр в Windows.
По умолчанию Ассоциации безопасности Windows Vista и Windows Server 2008 не поддерживают сетевые связи безопасности протокола Интернета (IPsec) на серверы, расположенные за устройством NAT. Если виртуальный частный сервер сети (VPN) находится за устройством NAT, клиентский компьютер Windows Vista или Windows Server 2008 не может сделать протокол туннелинга уровня 2 (L2TP)/IPsec подключением к VPN-серверу. Этот сценарий включает VPN-серверы с Windows Server 2008 и Windows Server 2003.
Из-за того, как устройства NAT переводят сетевой трафик, в следующем сценарии могут возникнуть неожиданные результаты:
- Вы ставите сервер за устройство NAT.
- Используется среда IPsec NAT-T.
Если для связи необходимо использовать IPsec, используйте общедоступные IP-адреса для всех серверов, к которые можно подключиться из Интернета. Если необходимо поставить сервер за устройство NAT, а затем использовать среду IPsec NAT-T, вы можете включить связь, изменив значение реестра на клиентский компьютер VPN и VPN-сервер.
Установите ключ реестра AssumeUDPEncapsulationContextOnSendRule
Чтобы создать и настроить значение реестра AssumeUDPEncapsulationContextOnSendRule, выполните следующие действия:
Войдите на клиентский компьютер Windows Vista в качестве пользователя, который является членом группы администраторов.
Выберите запуск всех > программ, запуск > аксессуаров, тип > regedit, а затем выберите ОК. Если диалоговое окно Управления учетной записью пользователя отображается на экране и подсказок для повышения маркера администратора, выберите Продолжить.
Найдите и выделите следующий подраздел реестра:
Вы также можете применить значение Допустимый код DWORDContextOnSendRule для vpn-клиента Microsoft Windows XP Пакет обновления 2 (SP2). Для этого найдите и выберите подкайку HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\IPSec реестра.
В меню Редактирование указать значение New, а затем выберите значение DWORD (32-bit).
Введите AssumeUDPEncapsulationContextOnSendRule и нажмите кнопку ENTER.
Правой кнопкой мыши предположитьUDPEncapsulationContextOnSendRule, а затем выберите Изменить.
В поле «Данные о значении» введите одно из следующих значений:
Это значение по умолчанию. Если установлено 0, Windows не может установить связи безопасности с серверами, расположенными за устройствами NAT.
Если установлено 1, Windows может устанавливать связи безопасности с серверами, расположенными за устройствами NAT.
Если установлено 2, Windows может создавать ассоциации безопасности, когда сервер и клиентский компьютер VPN (Windows Vista или Windows Server 2008) находятся за устройствами NAT.
Выберите ОК, а затем выйти из редактора реестра.