Подготовка
Сертификаты
Для того, чтобы ikev2 без головной боли работал на клиентах, серверу всегда нужен валидный сертификат от реального центра сертификации. Использовать самоподписанные и импортировать CA на всех клиентах то ещё развлечение, по этому
- Добавьте запись в DNS, со ссылкой на внешний айпшиник pfsense. Типа vpn.example.com или ещё как-то
- Установите в pfSense расширение acme, которое автоматизирует получение бесплатных сертификатов от Let’sEncrypt. Там всё достаточно просто и очевидно.
- Получите бесплатный сертификат. Я делал это с проверкой через DNS, что требует добавления текстовой записи вида _acme-challenge.vpn.exmaple.com в DNS
- Запомните на будущее, что клиент должен обращаться к серверу только по созданному и указанному в сертификате доменному имени (то самое vpn.example.com)
Авторизация
Для авторизации логично использовать стандартный доменный пароль пользователей, это облегчает жизнь администратору :), но EAP-MSCHAPv2 авторизация не поддерживает прямое обращение к LDAP, т.к. шифрует логин и пароль. Зато шифрованные пароли хорошо поддерживает RADIUS, а Windows умеет в RADIUS, по этому:
- Создайте в AD группу, в которую будут входить пользователи VPN. В отличие от LDAP, в pfsense, RADIUS-метод управляет на основе групп, а не на основе контейнеров
- Настройте Microsoft NPS по инструкции от NetGate Не забудьте сохранить в блокнот «общий секрет» из мастера — он понадобится при настройке pfSense
- Дополните настройку NPS по вот этой инструкции от NetGate
- Настройте связь pfSense с RADIUS. Я опять же пользовался инструкцией от NetGate Протокол авторизации — MS-CHAPv2
ikev2
Просто настройте ikev2 по инструкции от NetGate, внеся изменения.
1. Выберите RADIUS-сервер в настройках Mobile Client
2. Выберите EAP-RADIUS протоколом аутентификации при настройках phase 1