MikroTik RouterOS 7: SoftEther и OpenConnect поднимают в контейнерах

· ·

MikroTik RouterOS 7: SoftEther и OpenConnect поднимают в контейнерах

PrimeCoder · 2026 · формат: tech

Разбор новинки простыми словами: что это, кому нужно и брать ли.

SMB и админам больше не нужна отдельная Linux-машина ради SoftEther или ocserv — оба VPN разворачиваются прямо на маршрутизаторе, что упрощает инфраструктуру и снижает затраты.

Связанные услуги: каталог, AI Boost Team, стать клиентом.

Что произошло

В RouterOS не было сервера SoftEther. Не было и сервера OpenConnect. Годами это лечили костылём: рядом с маршрутизатором ставили Linux-хост или виртуалку, она держала ocserv либо SoftEther, а MikroTik просто пробрасывал на неё порты и следил, чтобы железка не упала вместе с гипервизором.

В RouterOS из коробки есть WireGuard, OpenVPN, SSTP, L2TP/IPsec и IKEv2, но нет сервера OpenConnect или SoftEther.

С RouterOS 7 контейнеры перестали быть экзотикой. Появился рабочий рецепт: оба VPN поднимаются внутри маршрутизатора. Проверено на CHR 7.24.5 x86_64 под KVM, 768 МБ памяти, 7 ГБ диска. На железных моделях порядок тот же, разница в образе под arm/arm64 и внешнем накопителе.

Что это на практике

Схема простая, если не пытаться умничать. Каждому контейнеру — свой veth-интерфейс, все veth — в один bridge, скажем 10.10.4.0/24. Наружу контейнеры выходят через masquerade роутера, внутрь трафик попадает только через dst-nat. DHCP тут не при чём: RouterOS сам выдаёт контейнеру адрес и шлюз из настроек veth, внутри он становится eth0.

SoftEther удобен тем, что умеет SecureNAT — встроенные DHCP и NAT, работающие целиком в userspace. Ни TUN, ни iptables, ни расширенных прав ему не нужны. Клиенты получают адреса из 192.168.30.0/24, DNS пересылается на маршрутизатор. В контейнере это взлетает сразу.

С ocserv формально сложнее: ему нужны TUN, ip_forward и iptables, а в Docker это cap_add NET_ADMIN, которого в RouterOS нет. На деле контейнер RouterOS спокойно создаёт TUN и меняет сетевые настройки внутри своего сетевого пространства. Режим privileged=yes не потребовался. Клиентская сеть задаётся переменными окружения — в тесте 10.10.5.0/24. Папку /etc/ocserv монтируют наружу целиком: там конфиг, сертификаты, пользователи.

Чем это отличается от «как было»

Раньше выбор был из двух зол. Первое — подменить протокол: взять WireGuard или IKEv2 и объяснить подрядчику, что его Cisco Secure Client больше не подключается. Второе — поставить отдельный хост, обновлять его, бэкапить, мониторить, держать в голове, что он живёт на другом железе и упадёт тихо. Для SMB на 20–50 человек вторая история — это ещё одна виртуалка, ещё один набор патчей, ещё один ответственный.

Контейнер на маршрутизаторе убирает отдельную коробку из уравнения. Обновление образа — одна команда. Настройки лежат в mount, а не в root-dir: root-dir заменяется при смене образа, mount остаётся. Это и есть главный архитектурный сдвиг, а не сам факт появления VPN.

Кому нужно и как применить

  • Офис, которому нужен каскад с уже работающим сервером SoftEther на Linux. Cascade Connection склеивает хабы на уровне L2, и SoftEther на MikroTik становится частью той же логической сети.
  • Компания с подрядчиками на Cisco Secure Client. Ставить им WireGuard — переучивать людей. ocserv решает вопрос без объяснений.
  • Филиал или площадка без серверной. Один маршрутизатор, один бэкап конфига, ноль отдельных Linux-машин.

Запуск SoftEther: официальный образ, порт 444 снаружи на 443 внутри, дальше — Server Manager с обычного ноутбука. Пароль администратора задаётся до открытия порта, через vpncmd. ocserv слушает 8443 TCP/UDP с пробросом на 443.

Где подвох

Контейнеры закрыты device-mode. Разрешение подтверждается физически в течение 5 минут: на железе — кнопка reset, на CHR — Power off и Power on из панели провайдера. /system reboot и кнопка Reboot в панели не подходят. Пять минут — жёсткий лимит, промахнулись, повторяйте.

Второй подвох — теги SoftEther. Тег stable — это ветка 4.x, она хранит настройки в /mnt. Ветка 5.x (теги вида 5.2.5188) хранит их в /var/lib/softether. Путь в mount должен совпадать с тегом, иначе пользователи и пароли исчезнут при пересоздании контейнера. Тихая потеря доступа, без ошибок в логах.

Третий — реестр образов в RouterOS задаётся глобально, на все контейнеры сразу. Актуальный ocserv живёт на Quay (aminvakil/ocserv), версия на Docker Hub не обновлялась с 2020 года. Значит, реестр временно переключают на Quay, собирают контейнер, возвращают Docker Hub. Забыли вернуть — SoftEther перестанет обновляться.

Четвёртый — каскад настраивается только в одну сторону. С двух сторон получите петлю. И перед каскадом SecureNAT в хабе надо выключить, иначе его DHCP начнёт раздавать адреса устройствам удалённой сети.

Факт → что это значит

ФактЧто это значит для вас
Нет cap_add, но TUN создаётсяНе нужен privileged=yes, меньше риска при компрометации контейнера
SecureNAT работает в userspaceSoftEther поднимается без плясок с iptables, ocserv — сложнее
root-dir заменяется при обновленииВсе настройки — только в mount, иначе потеряете конфиг
Реестр один на все контейнерыОбновление двух образов из разных реестров — ручная жонглёровка
Тест на CHR, не на железеДля боевого роутера считайте память и берите внешний накопитель

Брать или подождать

Брать, если у вас уже есть RouterOS 7 с запасом памяти и конкретная задача: каскад с SoftEther или клиенты Cisco. Схема рабочая, проверенная, отдельная Linux-машина больше не нужна.

Подождать, если роутер один и он держит офис на 100 человек. Контейнеры едят RAM и диск, а падение VPN-сервиса на борту означает падение всего узла. Сначала посчитайте бюджет памяти и решите, готовы ли вы к тому, что обновление образа трогает боевую коробку.

И да: это не замена WireGuard. WireGuard остаётся быстрее и проще. Контейнеры нужны там, где протокол диктует не ваша воля, а чужая инфраструктура.

Вопросы, которые задают чаще всего

Нужен ли отдельный сервер? Нет. Нужен образ под архитектуру роутера и внешний накопитель для настроек.

Сколько памяти займёт? В тесте хватило 768 МБ на CHR, но там же крутились два контейнера и сама система. Для боевого узла считайте с запасом.

Что с безопасностью? Порт открывается только после смены пароля администратора SoftEther. Порядок действий не случайный.

Обновления прилетят сами? Нет. Образ скачивается вручную, mount с настройками переживает замену, но следить за тегами придётся вам.

Что делать дальше

Возьмите тестовый CHR, включите пакет container, подтвердите device-mode и поднимите один SoftEther с SecureNAT. Если взлетело за вечер — переносите на боевой роутер. Если застряли на device-mode, значит, вы нажали не ту кнопку, а не нашли ошибку в конфиге.

Читайте также

Комментарии (1)

  • PrimeCoder Team · Официальный ответ · PrimeCoder

    Пришлите формат отчётности (дашборд / таблица / «на глаз») — подскажем минимальный набор метрик на старт.

Обсудить на сайте