Настройка IKEv2 VPN на MikroTik: сертификаты, логин-пароль и безопасность

Подробное руководство по настройке IKEv2 VPN-сервера на MikroTik: аутентификация по сертификатам и логину/паролю, выпуск сертификатов, настройка IPsec, подключение клиентов и решение типичных проблем.

Почему IKEv2 — оптимальный выбор для MikroTik

Протокол IKEv2 (Internet Key Exchange version 2) входит в семейство IPsec и считается одним из самых надёжных и современных способов организации VPN. В отличие от устаревших PPTP и L2TP, которые имеют серьёзные уязвимости и ограничения, IKEv2 обеспечивает высокий уровень шифрования, устойчивость к разрывам соединения и автоматическое восстановление при смене сети (например, при переходе с Wi-Fi на мобильный интернет).

Для MikroTik IKEv2 особенно привлекателен тем, что поддерживается всеми современными операционными системами: Windows, macOS, iOS и Android — без установки дополнительного программного обеспечения. Это упрощает развёртывание VPN для удалённых сотрудников и личного использования. Кроме того, при наличии аппаратного ускорения IPsec на роутерах MikroTik скорость соединения будет значительно выше, чем у OpenVPN, работающего на уровне пользовательского пространства.

Однако у IKEv2 есть и недостатки. Настройка серверной части требует понимания принципов работы IPsec и выполнения ряда условий, таких как наличие статического IP-адреса или доменного имени. Тем не менее, при следовании инструкциям процесс оказывается вполне выполнимым даже для администраторов с базовым уровнем подготовки.

Два подхода к аутентификации: сертификаты или логин-пароль

При настройке IKEv2 VPN-сервера на MikroTik можно использовать два основных способа аутентификации клиентов: на основе сертификатов (digital signature) и на основе логина и пароля (EAP-RADIUS).

Аутентификация по сертификатам считается более безопасной, так как исключает передачу паролей по сети и защищает от атак типа «человек посередине». Однако она требует создания инфраструктуры открытых ключей (PKI): нужно выпустить корневой сертификат CA, серверный сертификат и отдельный клиентский сертификат для каждого устройства. Эти сертификаты необходимо доставлять и устанавливать на клиентские машины, что может быть трудоёмким при большом количестве пользователей.

Аутентификация по логину и паролю значительно упрощает процесс: достаточно установить на сервер один сертификат (желательно от Let's Encrypt), а для проверки учётных данных использовать встроенный RADIUS-сервер (User Manager) в RouterOS 7. Это избавляет от необходимости генерировать и распространять клиентские сертификаты. Пользователи просто вводят логин и пароль при подключении. Такой подход удобен для небольших сетей и быстрого развёртывания, хотя и считается чуть менее безопасным, чем сертификатная аутентификация.

Выбор между этими методами зависит от требований к безопасности и удобству администрирования. Для корпоративной среды с высокими требованиями к защите чаще выбирают сертификаты, а для малого бизнеса или личного использования — логин и пароль.

Подготовка MikroTik: версия RouterOS и необходимые пакеты

Для настройки IKEv2 VPN-сервера с аутентификацией по логину и паролю потребуется RouterOS версии 7.x, поскольку именно в этой версии появились встроенные средства для работы с сертификатами Let's Encrypt и встроенный RADIUS-сервер (User Manager). Если вы планируете использовать сертификатную аутентификацию, подойдёт и более ранняя версия, но для единообразия рекомендуется обновиться до актуальной.

В случае использования User Manager необходимо установить дополнительный пакет user-manager-7.x.npk, который можно скачать с официального сайта MikroTik в разделе «Software» (архив extra packages). Важно, чтобы версия пакета точно совпадала с версией установленной RouterOS — иначе пакет не установится. После скачивания файл нужно скопировать в корень файловой системы роутера и перезагрузить его. Если пакет установлен успешно, в меню WinBox появится пункт «User Manager».

Для работы с сертификатами Let's Encrypt необходимо, чтобы роутер имел доступный извне порт TCP 80 (HTTP) на время генерации и обновления сертификата. Также желательно наличие FQDN (доменного имени), привязанного к внешнему IP-адресу MikroTik. Это позволит автоматически получать и обновлять действительные сертификаты, что повышает доверие клиентов и упрощает настройку.

Создание центра сертификации и выпуск сертификатов на MikroTik

Если вы выбрали аутентификацию по сертификатам, первым шагом будет создание собственного центра сертификации (CA) прямо на роутере. Это делается в меню System → Certificates. Нажмите «+» для создания нового сертификата, укажите имя (например, ca), Common Name — ca, размер ключа — 2048 бит (или больше), срок действия — например, 3650 дней (10 лет). На вкладке Key Usage оставьте только флаги crl sign и key cert. sign, затем нажмите Apply и Sign. В поле CA CRL Host укажите IP-адрес роутера (например, 127.0.0.1).

После создания CA выпускается серверный сертификат. Для этого снова создайте новый сертификат, но в поле Name и Common Name укажите IP-адрес или FQDN, по которому клиенты будут подключаться к серверу. В поле Subject Alt. Name выберите тип IP или DNS и укажите соответствующий адрес. На вкладке Key Usage оставьте только tls server. Подпишите сертификат закрытым ключом CA.

Затем создаются клиентские сертификаты. Для каждого клиента создайте отдельный сертификат с понятным именем (например, ФИО сотрудника). На вкладке Key Usage укажите tls client. Срок действия клиентских сертификатов рекомендуется устанавливать не слишком длинным (например, 365 дней), чтобы снизить риски при компрометации. После подписания сертификат нужно экспортировать в формате PKCS12, который включает закрытый ключ, клиентский сертификат и корневой сертификат CA. При экспорте обязательно укажите пароль (не менее 8 символов), иначе закрытый ключ не будет выгружен.

Настройка IPsec для IKEv2: профили, предложения и пулы

Настройка IKEv2 VPN-сервера в MikroTik сводится к конфигурации нескольких сущностей IPsec. Рассмотрим их по порядку.

Профиль (Profile) задаёт параметры установления соединения. Рекомендуется создать новый профиль с осмысленным именем (например, IKEv2), скопировав его из профиля default, чтобы не изменять стандартные настройки. В терминале это можно сделать командой /ip ipsec profile add copy-from=default name=IKEv2.

Предложения (Proposals) определяют алгоритмы шифрования и хеширования. Для совместимости с современными ОС необходимо убрать устаревший 3DES и добавить AES-128-CBC, AES-192-CBC, AES-256-CBC. В терминале создаётся предложение с pfs-group=none (отключение Perfect Forward Secrecy для упрощения совместимости).

Пул IP-адресов нужен для выдачи адресов VPN-клиентам. Создайте пул, например, vpn-pool с диапазоном 192.0.2.1-192.0.2.254. Этот диапазон будет использоваться для виртуальных адресов клиентов.

Mode Config — набор параметров, передаваемых клиенту при подключении: адрес из пула, DNS-серверы, маршруты до внутренних сетей. Здесь указывается address-pool, split-include (подсети, которые должны быть доступны через туннель), а также флаг system-dns для передачи DNS-серверов роутера.

Группа политик — просто тег для связывания политик и идентификаторов. Создаётся пустая группа, например, ikev2-policies.

Политика (Policy Template) определяет, какой трафик будет шифроваться. В шаблоне указывается src-address=0.0.0.0/0, dst-address — сеть VPN-клиентов (например, 192.0.2.0/24), флаг template=yes и ссылка на группу политик.

Пир (Peer) — настройка приёма подключений. Указывается exchange-mode=ike2, passive=yes (сервер ожидает подключения), address=0.0.0.0/0 и ссылка на профиль.

Identity — связывает все настройки вместе: указывает метод аутентификации, сертификат сервера, группу политик, mode-config и пир. Для сертификатной аутентификации используется auth-method=digital-signature, для логина-пароля — auth-method=eap-radius.

Аутентификация по логину и паролю с помощью User Manager

Для упрощения доступа к IKEv2 VPN можно использовать аутентификацию по логину и паролю, задействовав встроенный RADIUS-сервер User Manager. Этот подход особенно удобен, когда не хочется возиться с выпуском и установкой клиентских сертификатов.

После установки пакета user-manager необходимо выполнить базовую настройку: включить User Manager, добавить роутер (сам MikroTik) с общим секретом и создать пользователя. Например, команды:

/user-manager set enabled=yes
/user-manager router add address=127.0.0.1 name=router1 shared-secret=MySuperPass1234
/user-manager user add name=user1@gw1 password=1234567890

Затем нужно настроить RADIUS-клиент на MikroTik, чтобы IPsec-запросы аутентификации пересылались на локальный User Manager:

/radius add address=127.0.0.1 secret=MySuperPass1234 service=ppp,ipsec
/radius incoming set accept=yes

В identity для IKEv2 указывается auth-method=eap-radius и ссылка на сертификат сервера (например, от Let's Encrypt). При подключении клиент вводит логин и пароль, а MikroTik проверяет их через RADIUS.

Важно: для работы EAP-RADIUS на сервере должен быть установлен действительный сертификат, который будет использоваться для шифрования и проверки подлинности сервера. Это может быть самоподписанный сертификат, но лучше использовать Let's Encrypt, чтобы клиенты не получали предупреждений о недоверии.

Получение сертификата Let's Encrypt на MikroTik

Для аутентификации по логину и паролю, а также для повышения доверия клиентов при сертификатной аутентификации, рекомендуется использовать сертификаты от Let's Encrypt. В RouterOS 7 есть встроенная команда для автоматического получения и обновления таких сертификатов.

Перед генерацией сертификата необходимо открыть порт TCP 80 на внешнем интерфейсе (временно), так как Let's Encrypt проверяет владение доменом через HTTP-запрос. Команда для получения сертификата выглядит так:

/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=gw1.mt-courses.ru
/ip/firewall/filter remove [find comment="temporary filter rule"]

После успешного выполнения вы увидите сообщение progress: [success] ssl certificate updated. Сертификат появится в списке сертификатов с именем вида letsencrypt-autogen_2023-xx-xxThh:mm:ssZ.

Важно: на клиентских устройствах (особенно Windows) должен быть установлен промежуточный сертификат Let's Encrypt R3 в хранилище «Промежуточные доверенные центры сертификации» компьютера (Local Machine). Если этого не сделать, клиент может не доверять серверному сертификату, и подключение будет отклонено с ошибкой IKE (например, код 13801).

Настройка брандмауэра и маршрутизации для IKEv2

Чтобы VPN-сервер был доступен извне и клиенты могли получить доступ к внутренним ресурсам, необходимо настроить правила брандмауэра.

Во-первых, разрешите входящие UDP-пакеты на порты 500 и 4500 (IKE и IPsec NAT-T) на внешнем интерфейсе. Например:

/ip firewall filter add action=accept chain=input dst-port=500,4500 in-interface=ether1 protocol=udp

Во-вторых, разрешите форвардинг трафика от VPN-клиентов к внутренней сети. Для этого добавьте правило в цепочке forward, разрешающее трафик с политикой IPsec in,ipsec:

/ip firewall filter add action=accept chain=forward in-interface=ether1 ipsec-policy=in,ipsec

Эти правила должны быть расположены выше любых запрещающих правил в соответствующих цепочках. Также убедитесь, что на внешнем интерфейсе включён NAT для исходящего трафика VPN-клиентов, если они должны выходить в интернет через роутер.

Если вы используете mode-config с параметром split-include, клиенты получат маршруты только до указанных подсетей, и весь остальной трафик будет идти напрямую (split tunneling). Если требуется направить весь трафик через VPN, можно не указывать split-include или использовать split-include=0.0.0.0/0.

Подключение клиентов Windows, Android и iOS

После настройки сервера необходимо настроить клиентские устройства.

Windows 10/11: Создайте новое VPN-подключение через «Параметры → Сеть и Интернет → VPN». В качестве имени сервера укажите FQDN (или IP-адрес), на который выпущен сертификат. Тип VPN — IKEv2. Введите логин и пароль (если используется EAP-RADIUS) или импортируйте клиентский сертификат (если используется digital signature). Для импорта сертификата PKCS12 дважды щёлкните файл .p12 и следуйте мастеру импорта, обязательно установите сертификат в хранилище «Личное» (Personal) для текущего пользователя.

Android: В настройках VPN выберите тип IKEv2/IPsec MSCHAPv2 (для логина-пароля) или IKEv2/IPsec Certificate (для сертификатов). Укажите адрес сервера, имя пользователя и пароль, либо импортируйте сертификат.

iOS/macOS: В настройках VPN выберите IKEv2, укажите адрес сервера, удалённый ID (FQDN), а также учётные данные. Для сертификатной аутентификации необходимо установить сертификат в профиль.

Если возникают ошибки, проверьте:

  • Соответствие адреса в сертификате и адреса, к которому подключаетесь.
  • Наличие промежуточных сертификатов на клиенте.
  • Правильность настроек брандмауэра на сервере.
  • Логи IPsec на MikroTik (/log print where topics~"ipsec").

Типичные ошибки и способы их устранения

При настройке IKEv2 VPN на MikroTik часто возникают следующие проблемы:

Ошибка IKE 13801 в Windows — обычно означает, что клиент не доверяет серверному сертификату. Убедитесь, что промежуточный сертификат Let's Encrypt R3 установлен в хранилище «Промежуточные доверенные центры сертификации» на уровне компьютера (Local Machine), а не пользователя.

Несоответствие адреса сертификата — если сертификат выпущен на FQDN, а клиент подключается по IP-адресу (или наоборот), соединение будет отклонено. Всегда используйте один и тот же адрес.

Нет доступа к внутренним ресурсам — проверьте правила брандмауэра в цепочке forward, а также настройки mode-config (split-include). Убедитесь, что маршруты до внутренних сетей передаются клиентам.

Клиент не получает IP-адрес — проверьте пул адресов и mode-config. Убедитесь, что пул не исчерпан.

Проблемы с NAT — если клиенты не могут выйти в интернет, проверьте правило masquerade для исходящего трафика VPN-клиентов.

Сертификат не обновляется — Let's Encrypt сертификаты действительны 90 дней. Убедитесь, что порт 80 доступен для проверки и что команда enable-ssl-certificate выполняется регулярно (например, по расписанию).

Вопросы и ответы

Что лучше для MikroTik: IKEv2 или OpenVPN?

IKEv2 и OpenVPN — оба протокола обеспечивают высокий уровень безопасности, но имеют различия. IKEv2 встроен в большинство операционных систем, что упрощает настройку клиентов без установки дополнительного ПО. Он также более устойчив к смене сети и быстрее восстанавливает соединение. OpenVPN требует установки клиентского приложения, но зато более гибок в настройке и может работать через любые порты, что полезно для обхода строгих файрволов. Для MikroTik IKEv2 часто предпочтительнее из-за простоты и производительности при аппаратном ускорении IPsec.

Можно ли использовать IKEv2 с логином и паролем без сертификатов?

Нет, для IKEv2 всегда требуется сертификат на стороне сервера для шифрования и проверки подлинности. Однако можно упростить аутентификацию клиентов, используя EAP-RADIUS с логином и паролем вместо клиентских сертификатов. В этом случае на сервере устанавливается один сертификат (например, от Let's Encrypt), а клиенты проходят проверку по учётным данным через RADIUS-сервер (User Manager).

Какой срок действия лучше задавать для сертификатов CA и клиентских?

Для корневого сертификата CA обычно задают длительный срок — 10 лет (3650 дней), так как его компрометация маловероятна, а перевыпуск всех клиентских сертификатов — трудоёмкая задача. Клиентские сертификаты рекомендуется выпускать на более короткий срок, например, 1 год (365 дней), чтобы снизить риски при утере устройства или увольнении сотрудника. Серверный сертификат также можно выпускать на 1-2 года, особенно если используется Let's Encrypt с автоматическим обновлением.

Что делать, если Windows не подключается к IKEv2 VPN с ошибкой 13801?

Ошибка 13801 означает, что клиент не может проверить подлинность сервера. Чаще всего это связано с неправильной установкой промежуточного сертификата Let's Encrypt R3. Убедитесь, что сертификат R3 установлен в хранилище «Промежуточные доверенные центры сертификации» на уровне компьютера (Local Machine), а не пользователя. Также проверьте, что адрес, к которому вы подключаетесь, точно совпадает с адресом в сертификате сервера (FQDN или IP).

Нужно ли открывать порт 80 на постоянной основе для Let's Encrypt?

Нет, порт 80 нужен только в момент генерации или обновления сертификата. Рекомендуется открывать его временно, выполнить команду enable-ssl-certificate, а затем закрыть. Для автоматического обновления можно настроить планировщик, который будет открывать порт, обновлять сертификат и закрывать порт. Это повышает безопасность, так как веб-интерфейс роутера не будет доступен извне.

Как ограничить доступ к VPN только для определённых пользователей?

При использовании User Manager вы можете создавать отдельных пользователей с индивидуальными логинами и паролями. Для ограничения доступа к конкретным подсетям можно использовать mode-config с параметром split-include, указывая только те сети, к которым пользователь должен иметь доступ. Также можно настроить политики в User Manager для ограничения времени доступа или пропускной способности.

Можно ли использовать IKEv2 VPN на MikroTik для обхода блокировок?

IKEv2 использует UDP-порты 500 и 4500, которые могут быть заблокированы провайдером. Однако IPsec поддерживает NAT-T, что позволяет работать через NAT. В некоторых случаях IKEv2 может быть заблокирован, если провайдер использует DPI (глубокую инспекцию пакетов). Для обхода блокировок часто используют OpenVPN или WireGuard, которые могут работать через порт 443 (HTTPS). Тем не менее, IKEv2 остаётся хорошим выбором для корпоративных VPN, где блокировки не являются основной проблемой.