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 клиентов. Тестовый стенд:

vpn_net1.png 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:

vpn10.png

vpn11.png

 В который мы вносим два обязательных изменения: Subject Name и IP security IKE intermediate.

vpn12.png

 Необязательное изменение, необходимое только если VPN сервер установлен на контроллере домена: Право на выдачу сертификата для контроллеров домена.

vpn14.png

 Выпускаем новый шаблон:

vpn13.png

 Открываем оснастку Certificates и запрашиваем персональный сертификат для сервера.

vpn15.png

 В сертификате указываем имя, по которому будет подключаться клиент. Будет проще, если FQDN сервер будет совпадать с общедоступным именем VPN сервера.

vpn16.png В итоге должно выглядеть так:

vpn17.png

 В свойствах VPN сервера выбираем этот сертификат:

vpn18.png На изображении выше видно, что нельзя выбрать провайдеров аутентификации. Это будет только в том случае, когда NPS роль установлена на тот же сервер, где установлена роль RAS. Теперь перейдём к настройке RADIUS сервера. Для начала надо определить клиентов RADIUS (когда NPS установлен на отдельном сервере):

vpn1.png

 И указать VPN серверу в оснастке RRAS, что аутентификация будет проходить через RADIUS сервер (когда NPS установлен на отдельном сервере):

vpn9.png

 Возвращаемся в оснастку NPS и создаём сетевую политику доступа: vpn2.png

 Определям на какую группу будет распространятся политика:

vpn3.png Разрешаем подключение:

vpn4.png

Определяем методы Аутентификации, в том числе и порядок:

vpn5.png Задаём уровень шифрования. Я выбираю максимальный:

vpn6.png Всё. Политика настроена, теперь лишь нужно в ней включить игнорирование настроек пользовательской учётной записи.

vpn7.png

 Закончим настройку VPN сервера, разрешив использование сертификата для IKEv2, а так же задав общий секретный ключ для L2TP:

vpn8.png

 По умолчанию Клиент VPN получит IP адрес от доменного DHCP сервера.

vpn21.png

 Если задать выдачу VPN адресов не из DHCP, то тогда на каждом клиенте необходимо будет добавить статические маршруты в другие сети, которые используются в доменной сети. С DHCP это гораздо проще. Нужно лишь заполнить опцию 121 (которая, к сожалению, криво работает c Debian 8):

vpn28.png

 Теперь настроим NAT на проброс портов для L2TP и IKEv2. На Windows Server это делается так:

vpn19.png Далее необходимо создать 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 сертификата). На клиенте задаём вручную общий секретный ключ и перезагружаем клиент, если была произведена правка реестра:

vpn20.png Для работы IKEv2 необходимо импортировать корневой сертификат PKI. Делается это по внутреннему адресу сервера сертификатов http:\\dc1\certsrv :

vpn22.png

vpn23.png vpn24.png

vpn25.png

vpn26.png Для мобильных клиентов корневой сертификат можно отправить по почте. Всё. Можно подключаться:

vpn27.png

 А вот так выглядят подключения в оснастке RRAS:

vpn29.png Клиент "а" подключился дважды, по этому для подключения по IKEv2 отбражается его IP адрес, полученный с подключением по L2TP.
 Тип аунтентификации EAP - это Windows клиенты. MS CHAP V2 - Apple OS X.

 Хотите знать кто, когда и откуда подключался к VPN сервера? Тогда вам в эту тему.
 Хотите кластер из VPN? Тогда вам в эту тему. С её помощью я настраивал свой первый VPN, а потом всё резюмировал в свой статье.

 

07.07.2016