Переносил тут ikev2 на новую машину, решил не морочиться с переносом сертификатов, а выпустить серверу новый — благо Let’sEncrypt никаких ограничений, не накладывает.
Новые сертификаты выпускаются уже не RSA, а ECDSA, так что в ipsec.secrets необходимо поменять тип закрытого ключа сервера с RSA на ECDSA
Иначе ничего не заработает 🙂
И не забывайте, apparmor без настройки не даст стронгсвану прочитать сертификаты из каталогов Let’sEncrypt
Для того, чтобы 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
С Debian 10 и примерно соответствующей ей Ubuntu strongswan закрыт аппармором, через это все инструкции типа «создайте ссылки на сертификаты в /etc/letsencrypt/live/yourdomainnamehere» перестали работать.
Решение чертовски простое, хоть и не очевидное. Надо добавить в /etc/apparmor.d/local/usr.lib.ipsec.charon две строчки:
Я люблю OpenVPN за массу возможностей и простоту настройки
Хочешь L2 туннель? А пожалуйста.
Хочешь L3? А пожалуйста.
Надо работать через прокси? А пожалуйста.
Надо отправлять клиентам маршруты и свои DNS? Да вообще нивопрос
Windows? Mac? Linux? Плевать. Работает везде.
Хочешь авторизацию по сертификатам? Нет, надо по логину? Хочешь тащить логин из домена windows? Да без проблем, любой вариант на выбор
Плюсом к этому отсутствие геммороя с PKI клиентских операционок: просто добавь свой CA в конфигурацию, и всё будет работать. Не надо импортировть CA в хранилище клиента. Это просто прекрасно — дал конфиг, работает. Все настройки там
А вот чем плох OpenVPN, это производительность. Он медленный. Просто ужас, какой медленный, в сравнении с ikev2 и wireguard. Но это значит ровно одно — если вам нужен производительный впн: site-to-site какой-нибудь, или просто гонять 1С в тонком клиенте с большими отчётами — выбирайте не openvpn, а если задача быстро развернуть ВПН для доступа в офис, или ещё куда-то — это ваш выбор 🙂