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 работает в userspace | SoftEther поднимается без плясок с 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, значит, вы нажали не ту кнопку, а не нашли ошибку в конфиге.
PrimeCoder Team · Официальный ответ · PrimeCoder
Пришлите формат отчётности (дашборд / таблица / «на глаз») — подскажем минимальный набор метрик на старт.