Оглавление
Встал вопрос настройки VPN сервера так, чтобы умели и мобильные устройства и Windows ноутбуки. При этом хотим, чтобы пользователи могли сами себе настроить подключение без прав администратора. Да еще и вводили только доменный Выбрали IKEv2. Настроим.
В целом все делалось по инструкции: https://habr.com/ru/articles/721062/, но повторение мать учения.
Что нужно перед настройкой:
- Микрот ROS 7
- Доменное имя для выдачи сертификатов, в нашем случае vpn.mydomain.com.
Настройка сертификата Lets Encrypt на Mikrotik
В ROS 7 появилась очень интересная возможность – сгенерировать Lets Encrypt сертификат встроенными средствами и всего одной командой. Грех не воспользоваться.
Добавляем правило FW чтобы получить сертификат. Получаем сертификат. Убираем добавленное правило FW.
/ip/firewall/filter add chain=input protocol=tcp dst-port=80 action=accept comment="temporary filter rule" place-before=1
/certificate/enable-ssl-certificate dns-name=vpn.mydomain.com
/ip/firewall/filter remove [find comment="temporary filter rule"]
Настройка IKEv2 server на Mikrotik
Делаем пул адресов для ВПН клиентов:
/ip/pool add name=vpn-pool ranges=192.0.2.1–192.0.2.254
Настройку IKEv2 делаем в следующем порядке
- Profile
- Proposal
- Group
- Policy Template
- Peer (шаблон)
- Modeconf
- Identity
Profile
/ip/ipsec/profile
print
add copy-from=0 name=profile-ike2
Proposal
/ip/ipsec/proposal
print
add copy-from=0 name=proposal-ike2 pfs-group=none
Group
/ip ipsec policy group add name=ike2
Policy Template
/ip/ipsec/policy add dst-address=192.0.2.0/24 group=ike2 proposal=proposal-ike2 src-address=0.0.0.0/0 template=yes
Шаблон Peer (то есть,клиента)
/ip/ipsec/peer add exchange-mode=ike2 name=peerike2 passive=yes profile=profile-ike2
Mode config
Это параметры, которые передаются клиенту при подключении, в частности мы передаем адрес нашей внутренней сети 192.168.1.0/24:
/ip/ipsec/mode-config
print
add address-pool=vpn-pool name=ike2-modconf split-include=192.168.1.0/24 system-dns=yes
Identity
/ip/ipsec/identity
Собираем все настройки вместе. Здесь мы также указываем полученный сертификат Lets Encrypt (имя заменить на свое):
add auth-method=eap-radius certificate=letsencrypt-autogen_2024-xx-xxTxx:xx:xxZ generate-policy=port-strict mode-config=ike2-modconf peer=peerike2 policy-template-group=ike2
Также скачиваем на Микрот и импортируем промежуточные сертифиткаты Lets Encrypt, чтобы не пришлось их ставить вручную на всех ПК. На момент конца августа 2024 нужны сертификаты R10 и R11
https://letsencrypt.org/certificates/
Добавляем их в Identity:
Настройка связи с Windows NPS
Далее, для авторизации можно развернуть RADIUS на самом Микротике, но у нас он настроен на взаимодействие с корпоративным сервером Windows NPS, учетки будут авторизовываться там Конкретной инструкции нет, все в обилии есть в Сети.
Сетевые политики со стороны RADIUS:
Настройка Firewall
Также на Микроте стандартно надо открыть на вход порты UDP 500,1701,4500 и ipsec-esp:
/ip firewall filter
add action=accept chain=input port=1701,500,4500 protocol=udp
add action=accept chain=input protocol=ipsec-esp
Также, разрешить траффик из ВПН подсети в основную подсеть, или конкретно до каких то узлов, как удобнее:
add action=accept chain=forward src-address=192.0.2.0/24
Настройка клиентов
Windows
Пользователь открывает Powershell и копирует туда код. При первом подключении вводит свой доменный логин пароль.
Вместо mydomain.local указать корпоративный домен AD:
Add-VpnConnection -Name IKEv2_OFFICE -ServerAddress "vpn.mydomain.com" -TunnelType "Ikev2" -EncryptionLevel Required -AuthenticationMethod Eap -DnsSuffix "mydomain.local" -SplitTunneling -RememberCredential -PassThru -Force
Android
Пользователь качает и ставит приложение StrongSwan: https://download.strongswan.org/Android/
Далее, формируем текстовый файл vpn.mydomain.com.sswan следующего содержания:
{
"uuid": "559eb893-1cee-4196-8b97-67045e029e91",
"name": "vpn.mydomain.com",
"type": "ikev2-eap",
"remote": {
"addr": "vpn.mydomain.com"
}
}
и передаем пользователю например через Telegram.
Пользователю остается импортировать этот файл в приложении и ввести свой доменный логин пароль один раз.