Рано или поздно в любой системе начинают появляться какие-то новые компоненты, с которыми раньше не приходилось сталкиваться. Так и в моем случае в парке удаленных маршрутизаторов Mikrotik под моим управлением появилось некоторое количество устройств Ubiquiti, которые тоже требовали удаленного управления. Для устройств Mikrotik давно был развернут VPN сервер L2TP/IPSEc и OpenVPN для особо сложных случаев, когда IPSEc отказывался работать от объекта заказчиков. Документация на Ubiquiti показывала, что клиентом L2TP/IPSEc он быть не может, но вроде поддерживает OpenVPN. Данная статья – шпаргалка для решения подобных задач Есть маршрутизатор Ubiquiti EdgeRouter 6P (прошивка v2.0.9-hotfix.2), находящийся у клиента. Есть OpenVPN сервер на маршрутизторе Mikrotik (прошивка 6.48.5 long-term) в центре управления по адресу ovpn.example.com. На сервер надо: Установить соединение OpenVPN/tcp (авторизация по паре логин/пароль) Маршрутизировать сети центра управления в этот туннель Разрешать удаленное управление через туннель по SSH и HTTPS Поддерживать туннель в рабочем состоянии Предполагается что логин и пароль для создаваемого туннеля, а также информация о удаленном объекте (например о адресах в LAN Ubiquiti) уже заведена в /ppp secrets на стороне сервера Те, кто эксплуатирует устройства Mikrotik знают их несколько «расслабленное» отношение к сертификатам. Так для работы служб www-ssl, openvpn и, в некоторых случаях, аутентификации peer-ов IPSEc не требуется наличие в сертификате тех или иных Usage полей. Mikrotik вполне позволит сконфигурировать OpenVPN сервер с сертификатом, в котором не будет отмечено Usage: digitalSignature и keyEncipherment  Однако устройства Ubiquiti относятся к сертификатам значительно более строго, и при попытке соединения с OpenVPN сервером устройства проверяют соответствие сертификата сервера сконфигурированному CA сертификату, а также наличие в сертификате сервера разрешенного применения digitalSignature и keyEncipherment (по документации OpenVPN ещё требуется атрибут keyAgreement, но в моем случае все заработало и без него). Таким образом первый шаг – проверка и экспорт сертификатов с Mikrotik В нашем случае используется сертификат “router-tls” Здесь проверяем: Наличие в Key usage digitalSignature и keyEncipherment Название сертификата CA (ca=router-ca) ID ключа CA (akid=e5c220ab170145b0fc22c7cccca3ce6ed9bc51c6) Здесь проверяем: Наличие в Key Usage  key-cert-sign и crl-sign SKID данного сертификата должен быть тем же что и AKID сертификата сервера OpenVPN Скачиваем файл router-ca.crt Устройства Ubiquiti обладают красивым  веб-интерфейсом, однако его функционал местами сильно ограничен. Так, например создание OpenVPN клиентов реализовано настолько нетривиально, что проще все настройки делать через SSH используя CLI Одной из приятных особенностей Ubiquiti является использование вполне честного Linux-а в качестве ОС и возможности переключится из CLI маршрутизатора в обыкновенный bash командой “sudo su” в CLI маршрутизатора Для создания соединения потребуется выполнить следующее: Скопировать файл с сертификатом CA на маршрутизатор Создать файл конфигурации OpenVPN с маршрутами до центра управления Создать файл с логином паролем Создать туннель по конфигурации Добавить туннель в группу портов LAN для обеспечения удаленного управления Большинство руководств найденных в сети предлагают держать файлы конфигураций для туннелей в директории /config/auth С помощью scp копируем файл сертификата CA на Ubiquiti, заходим на маршрутизатор по ssh и оказываемся в CLI маршрутизатора: Мы в домашней директории. Файл с сертификатом должен быть здесь. Скопируем его в рекомендованное место: В директории /config/auth создадим файл конфигурации OpenVPN В данном файле мы описываем клиента, подключающегося по протоколу TCP к серверу ovpn.example.com. На сервере должен быть сертификат, подписанный сертификатом CA из файла /config/auth/router-ca.crt.Авторизация проводится по логину паролю из файла /config/auth/ovpn_auth.txt При успешном соединении добавляется маршрут на сеть 10.10.50.0/24 (сеть центра управления) В файле /config/auth/ovpn_auth.txt первая строка – логин, вторая – пароль пользователя. Если все сделано правильно, то в директории /config/auth должно оказаться 3 файла: Возвращаемся в CLI маршрутизатора из bash (CTRL-D) и переходим в режим редактирования конфигурации Далее описываем параметры нашего соединения: если все сделано правильно и маршрутизатор не ругнулся, добавляем интерфейс vtun0 к LAN-портам С этого момента статус соединения можно посмотреть в веб-интерфейсе (в разделе Dashboard) и маршрутизатор должен управляться из центра управления