Mikrotik. IKEv2 сервер с Lets Encrypt сертификатом. Windows Android клиенты с доменной аутентификацией.

Встал вопрос настройки VPN сервера так, чтобы умели и мобильные устройства и Windows ноутбуки. При этом хотим, чтобы пользователи могли сами себе настроить подключение без прав администратора. Да еще и вводили только доменный Выбрали IKEv2. Настроим.

В целом все делалось по инструкции: https://habr.com/ru/articles/721062/, но повторение мать учения.

Что нужно перед настройкой:

  1. Микрот ROS 7
  2. Доменное имя для выдачи сертификатов, в нашем случае 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 делаем в следующем порядке

  1. Profile
  2. Proposal
  3. Group
  4. Policy Template
  5. Peer (шаблон)
  6. Modeconf
  7. 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.

Пользователю остается импортировать этот файл в приложении и ввести свой доменный логин пароль один раз.

Ссылки

https://habr.com/ru/articles/721062/

Оставьте ответ

Ваш адрес email не будет опубликован.

÷ 5 = 2