VPN L2TP & IKEv2
Настройка для Windows Server 2008, 2012 и 2016 одинакова, по этому я не стал выделять версию OS. Но сразу скажу, что в 2012 R2 и 2016 TP5 не работает VPN IKEv2. После успешной настройки клиент сможет подключится к серверу, но после перезагрузки сервер, которой я проверяю автоматичкий запуск всех необходимых служб, клиент не сможет подключится к серверу VPN. По этому настраивайте IKEv2 на 2008 R2.
Внимание!!! IKEv2 заработал на Server 2016. Настраивал как всегда, с той лишь разницей, что CN для сертификата написан ЗАГЛАВНЫМИ БУКВАМИ !!! Спасибо, MS 🤦♂️ !!!
Зачем нужен IKEv2. Ещё не скоро компании откажутся от NAT. Если вообще откажутся. Так вот NAT или, что мне ближе, сама Windows является проблемой при подключении по L2TP. И если эта проблема для настрольных OS решается правкой реестра, то для мобильных OS такая возможность отсутсутсвует (я не нашёл, как править реестр в Windows Phone):
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\PolicyAgent]
"AssumeUDPEncapsulationContextOnSendRule"=dword:00000002
У IKEv2 такой проблемы нет, поэтому это единственный вариант подключить Windows Phone к корпоративной сети.
В данной статье я буду рассматривать не самую сложную сетевую инфраструктуру. Все роли можно объеденить на одном сервере, но я отделю роль NPS, для демонстрации настройки RADIUS клиентов. Тестовый стенд:
DC1 - 2016 TP5, контроллер домена, AD CS для сертификатов, RAS для VPN, DHCP
NPS1 - 2016 TP5, сервер сетевой политик для RADIUS сервера
NAT - 2012 R2, для эмуляции роутера
Windows 10 как клиент VPN
Для чего нужен RADIUS сервер. Без него мы можем лишь разрешать или запрещать VPN подключение. С ним мы можем указывать каким группам пользователей можно подключаться, к каким ресурсам в сети они имеют доступ.
Роль AD CS нужна для выдачи сертификата серверу VPN, который будет использоваться для IKEv2. L2TP будет работать по упрощённой схеме с общим секретным ключом. С сертификата и начнём.
Для начала необходимо создать новый шаблон на основании шаблона "Компьютер". Делается это в оснастке Certification Authority:
В который мы вносим два обязательных изменения: Subject Name и IP security IKE intermediate.
Необязательное изменение, необходимое только если VPN сервер установлен на контроллере домена: Право на выдачу сертификата для контроллеров домена.
Выпускаем новый шаблон:
Открываем оснастку Certificates и запрашиваем персональный сертификат для сервера.
В сертификате указываем имя, по которому будет подключаться клиент. Будет проще, если FQDN сервер будет совпадать с общедоступным именем VPN сервера.
В итоге должно выглядеть так:
В свойствах VPN сервера выбираем этот сертификат:
На изображении выше видно, что нельзя выбрать провайдеров аутентификации. Это будет только в том случае, когда NPS роль установлена на тот же сервер, где установлена роль RAS. Теперь перейдём к настройке RADIUS сервера. Для начала надо определить клиентов RADIUS (когда NPS установлен на отдельном сервере):
И указать VPN серверу в оснастке RRAS, что аутентификация будет проходить через RADIUS сервер (когда NPS установлен на отдельном сервере):
Возвращаемся в оснастку NPS и создаём сетевую политику доступа:
Определям на какую группу будет распространятся политика:
Разрешаем подключение:
Определяем методы Аутентификации, в том числе и порядок:
Задаём уровень шифрования. Я выбираю максимальный:
Всё. Политика настроена, теперь лишь нужно в ней включить игнорирование настроек пользовательской учётной записи.
Закончим настройку VPN сервера, разрешив использование сертификата для IKEv2, а так же задав общий секретный ключ для L2TP:
По умолчанию Клиент VPN получит IP адрес от доменного DHCP сервера.
Если задать выдачу VPN адресов не из DHCP, то тогда на каждом клиенте необходимо будет добавить статические маршруты в другие сети, которые используются в доменной сети. С DHCP это гораздо проще. Нужно лишь заполнить опцию 121 (которая, к сожалению, криво работает c Debian 8):
Теперь настроим NAT на проброс портов для L2TP и IKEv2. На Windows Server это делается так:
Далее необходимо создать VPN подключение на клиенте. Для этого я буду использовать PowerShell:
Add-VpnConnection -Name "L2TP VPN" -ServerAddress "XXX.XXX.XXX.XXX" -TunnelType L2tp -EncryptionLevel Maximum -AuthenticationMethod Eap -SplitTunneling -RememberCredential -AllUserConnection
Add-VpnConnection -Name "IKEv2 VPN" -ServerAddress "dc1.corp.domain.com" -TunnelType IKEv2 -EncryptionLevel Maximum -AuthenticationMethod Eap -SplitTunneling -RememberCredential -AllUserConnection
Каждое подключение создаётся для всех пользователей компьютера. Нужно это для одновременного входа в систему и подключения VPN. Если этого не надо, то удалите ключ -AllUserConnection.
Если нужно, чтобы весь трафик, включая интернет, шёл через VPN сервер, то удалите ключ -SplitTunneling. Для IKEv2 необходимо использование только имени сервера, с IP адресом работать не будет (хотя можно попытаться засунуть IP адрес в CN сертификата). На клиенте задаём вручную общий секретный ключ и перезагружаем клиент, если была произведена правка реестра:
Для работы IKEv2 необходимо импортировать корневой сертификат PKI. Делается это по внутреннему адресу сервера сертификатов http:\\dc1\certsrv :
Для мобильных клиентов корневой сертификат можно отправить по почте. Всё. Можно подключаться:
А вот так выглядят подключения в оснастке RRAS:
Клиент "а" подключился дважды, по этому для подключения по IKEv2 отбражается его IP адрес, полученный с подключением по L2TP.
Тип аунтентификации EAP - это Windows клиенты. MS CHAP V2 - Apple OS X.
Хотите знать кто, когда и откуда подключался к VPN сервера? Тогда вам в эту тему.
Хотите кластер из VPN? Тогда вам в эту тему. С её помощью я настраивал свой первый VPN, а потом всё резюмировал в свой статье.
07.07.2016