VPN L2TP & IKEv2 

Настройка для Windows Server 2008, 2012 и 2016 одинакова, по этому я не стал выделять версию OS. Но сразу скажу, что в 2012 R2 и 2016 TP5 не работает VPN IKEv2. После успешной настройки клиент сможет подключится к серверу, но после перезагрузки сервер, которой я проверяю автоматичкий запуск всех необходимых служб, клиент не сможет подключится к серверу VPN. По этому настраивайте IKEv2 на 2008 R2.
 Зачем нужен 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