Коротко: на MikroTik с RouterOS 7 рабочий путь один — протокол VLESS через функцию Container. На роутере запускается лёгкий контейнер с xray; нужна модель с архитектурой ARM/ARM64/x86 и место под образ. Это даёт маскировку трафика под обычный HTTPS и стабильность в любых сетях, и поддерживает в том числе XHTTP-конфигурации. Встроенный в RouterOS WireGuard для нашего сервиса не подойдёт, и ниже разобрано почему — это первое, что стоит прочитать, если вы рассчитывали настроить всё за 15 минут.
Не разбираешься в роутерах? Честная навигация
MikroTik — инструмент сетевых инженеров: тут нет мастеров настройки, а логика RouterOS требует понимания маршрутизации. Если ты выбираешь первый роутер под VPN для дома — посмотри сначала гайд по Keenetic или TP-Link: там всё настраивается кнопками в веб-интерфейсе. Если MikroTik уже стоит и ты с ним на «ты» — поехали. Застрянешь — поддержка Tainet поможет разобраться с твоей конфигурацией.
Что понадобится
- Свежая стабильная ветка RouterOS 7 и пакет
containerиз Extra packages под неё же. Версия важна: на старых сборках команда/container/envs/addпринимает толькоname=вместоlist=, и готовый набор команд отвечаетexpected end of command. - Модель на ARM, ARM64 или x86 (hAP ax2/ax3, RB5009, CCR2004 и новее, x86/CHR) и место под образ — USB-флешка, NVMe или свободный раздел. Свою архитектуру покажет
/system/resource/print, полеarchitecture-name. На mmips и smips (hEX, hEX S, hAP lite) контейнеров нет вовсе; у hEX Refresh они есть, но принимают только образыarm32v5. Если модель не подходит, вопрос шире одной марки — как понять, подойдёт ли твой роутер разобрано в общем обзоре. - Ключ VLESS от сервиса. У Tainet он лежит в Telegram-боте или на этом сайте в личном кабинете; первые 7 дней — бесплатно, хватит обкатать настройку. В кабинете набор команд для MikroTik собирается готовым, с уже подставленными значениями ключа, — его остаётся вставить в терминал.
Дальше в статье - практические шаги; если нужно готовое подключение, Tainet настраивается за пару минут - через Telegram-бот или в личном кабинете на этом сайте.
Почему встроенный WireGuard не подойдёт
RouterOS 7 умеет WireGuard штатно, и файл конфигурации он даже примет. Но мы выдаём не обычный WireGuard, а AmneziaWG — тот же протокол плюс строки Jc, Jmin, Jmax, S1, S2 и H1–H4 в секции [Interface]. Они меняют вид трафика, и благодаря им соединение живёт в российских сетях, где обычный WireGuard работает нестабильно.
RouterOS этих строк не знает и молча их пропускает. В результате клиент здоровается с сервером не тем способом, которого сервер ждёт, — и рукопожатие не происходит вовсе. Отличить это от «просто не работает» можно по трём признакам:
- интерфейс в
/interface/wireguard/printпоказываетrunning— он показывает так всегда, сам по себе это ничего не значит; - поле
last-handshakeу пира пустое; - счётчик
rxстоит на нуле,txрастёт — роутер шлёт, ответа нет.
Поэтому «попробовать на пять минут» здесь нечего: работать не начнёт ни на одной модели и ни на одной версии прошивки. Официальной поддержки параметров AmneziaWG в RouterOS нет, и в планах MikroTik её тоже нет.
Рабочий путь один, и он ниже.
Настройка: VLESS через контейнер
Идея: на роутере поднимается контейнер, который держит VLESS-подключение, а RouterOS заворачивает в него трафик. Внутри образа два компонента — сам xray и hev-socks5-tunnel; второй обязателен, потому что роутер отдаёт в контейнер IP-пакеты, а xray принимает SOCKS. Голый образ xray, даже мультиархитектурный, шлюзом не станет.
Образ ниже — wiktorbgu/vless-hev-socks5-tunnel-mikrotik, собран под amd64, arm64 и 32-битный ARM. Он сторонний: не наш и не MikroTik. Тег mikro — сборка без файлов geoip.dat/geosite.dat, для моделей, где память общая с системой.
Порядок действий — пять шагов, дальше каждый расписан подробно:
- Включите поддержку контейнеров и подтвердите изменение на самом устройстве.
- Поднимите сеть для контейнера: veth, мост, адрес и NAT.
- Передайте контейнеру девять параметров своего ключа.
- Скачайте образ и запустите контейнер.
- Заверните в туннель нужные устройства правилом mangle.
Шаг 1. Включи поддержку контейнеров. Установи пакет container (Extra packages под свою версию), затем:
/system/device-mode/update container=yes
RouterOS попросит подтвердить изменение физически — нажатием кнопки Reset, а на x86 и CHR холодной перезагрузкой, то есть выключением и включением машины. Это защита MikroTik, без неё контейнеры не запустятся. Выключается контейнерный режим тем же способом.
Шаг 2. Сеть для контейнера.
/interface/veth/add name=veth-vless address=172.17.0.2/24 gateway=172.17.0.1
/interface/bridge/add name=containers
/interface/bridge/port/add bridge=containers interface=veth-vless
/ip/address/add address=172.17.0.1/24 interface=containers
/ip/firewall/nat/add chain=srcnat src-address=172.17.0.0/24 action=masquerade
Шаг 3. Передай контейнеру параметры своего ключа. Значения берутся из vless://-ссылки: адрес и порт — из её начала, остальное — из параметров после ?. В личном кабинете эти девять строк собираются готовыми, с уже подставленными значениями; в боте Tainet лежит сама ссылка.
/container/envs/add list=vless key=REMOTE_ADDRESS value=АДРЕС_СЕРВЕРА
/container/envs/add list=vless key=REMOTE_PORT value=443
/container/envs/add list=vless key=ID value=ТВОЙ_UUID
/container/envs/add list=vless key=ENCRYPTION value=none
/container/envs/add list=vless key=FLOW value=xtls-rprx-vision
/container/envs/add list=vless key=FINGER_PRINT value=ЗНАЧЕНИЕ_FP
/container/envs/add list=vless key=SERVER_NAME value=АДРЕС_СЕРВЕРА
/container/envs/add list=vless key=PUBLIC_KEY value=ЗНАЧЕНИЕ_PBK
/container/envs/add list=vless key=SHORT_ID value=ЗНАЧЕНИЕ_SID
Значения FINGER_PRINT, PUBLIC_KEY и SHORT_ID подставляйте свои — из ссылки или из готового набора в кабинете. Отпечаток сервис выдаёт не любой: подставив «популярный» наугад, вы получите тот, который наш же бэкенд считает приметным.
Параметр называется именно list=. В части руководств и в описании самого образа стоит name= — это старый синтаксис, и современный RouterOS отвечает на него expected end of command.
Шаг 4. Создай и запусти контейнер (root-dir — на твоём накопителе):
/container/config/set registry-url=https://registry-1.docker.io tmpdir=disk1/tmp
/container/add remote-image=wiktorbgu/vless-hev-socks5-tunnel-mikrotik:mikro \
interface=veth-vless root-dir=disk1/containers/vless envlist=vless \
dns=1.1.1.1,8.8.8.8 start-on-boot=yes logging=yes name=vless
/container/start vless
Две строки здесь неочевидны и обе стоят тихого отказа. registry-url задан явно, потому что по умолчанию RouterOS ходит на lscr.io, а образ лежит на Docker Hub. dns= задан явно, потому что без DNS контейнер не стартует вовсе.
Шаг 5. Заверни трафик. Простейший вариант — весь трафик через контейнер отдельной таблицей маршрутизации:
/routing/table/add name=to_vpn fib
/ip/route/add dst-address=0.0.0.0/0 gateway=172.17.0.2 routing-table=to_vpn
/ip/firewall/mangle/add chain=prerouting src-address=192.168.88.0/24 \
dst-address=!192.168.88.0/24 \
action=mark-routing new-routing-mark=to_vpn passthrough=yes
(Подставь свою локальную подсеть; для выборочной маршрутизации меняй условие в mangle — по адресам устройств или спискам назначения. Исключение dst-address=! обязательно: без него в туннель уедет и трафик между своими подсетями и VLAN. Отдельная таблица маршрутизации тоже не украшение — маршрут по умолчанию через контейнер в основной таблице увёл бы туда же обращение к самому серверу, и туннель замкнулся бы на себя.)
Проверка: /container/print — статус running; лог контейнера покажет установленное подключение; устройства из размеченной подсети выходят с IP сервера. Отдельно проверь DNS, игры и звонки: у потока xtls-rprx-vision UDP через туннель не гарантирован, поэтому DNS на роутере надёжнее задать статикой в /ip/dns.
Нюанс про типы конфигураций: внутри контейнера полноценный xray, поэтому он понимает и VLESS, и XHTTP-варианты из подписки Tainet — фильтровать ничего не нужно. Это отличает MikroTik-путь от роутерных решений на sing-box (как HomeProxy на OpenWRT), где XHTTP пока не поддерживается — подробности в гайде по OpenWRT.
Tainet работает с любым из путей: WireGuard-конфиг для штатного клиента, VLESS-подписка для OpenWRT — одна подписка, оба формата, плюс те же серверы на телефоне и компьютере. Подключение через Telegram-бот или в личном кабинете на этом сайте, от 8 ₽ в день.
Попробовать →Проблемы и решения
Контейнер не стартует. Четыре классические причины: не подтверждён device-mode (повтори шаг 1 и подтверди кнопкой или холодной перезагрузкой), не задан DNS (dns= в /container/add или записи в /ip/dns), не хватает места (проверь накопитель и root-dir), архитектура (/system/resource/print → architecture-name; на arm32v5 наш образ не встанет).
Контейнер работает, трафик не идёт. Проверь NAT-правило для 172.17.0.0/24, маршрут в routing-table и mangle-правило — три места, где обычно теряется пакет. И сверь девять переменных окружения со своим ключом: пустое или обрезанное значение PUBLIC_KEY роутер принимает молча, контейнер стартует, а соединения нет.
Скорость ниже ожидаемой. Шифрование в контейнере нагружает CPU: на hAP ax-серии реалистично ожидать десятки—до сотни Мбит/с; для гигабитных задач смотри в сторону RB5009/CCR. Если нужен гигабит по дому, пусти через туннель не всю сеть, а только те устройства, которым он действительно нужен, — это и есть правило в mangle.
После обновления RouterOS всё пропало. Проверь, что пакет container установлен под новую версию, и перезапусти контейнер.
Не решилось — напиши в поддержку: подскажем по твоей модели и конфигурации.
Частые вопросы
Какие модели MikroTik подходят для VLESS-контейнера?
Любые на ARM/ARM64/x86 с местом под образ: hAP ax2/ax3, RB5009, CCR2004 и новее, виртуальный CHR. Модели на mmips и smips (hEX, hEX S, hAP lite) контейнеров не поддерживают вовсе. У hEX Refresh поддержка есть, но он принимает только образы arm32v5, а сборки под него у этого образа нет.
Почему нельзя просто взять встроенный WireGuard?
Потому что он не подключится: наш конфиг несёт параметры маскировки, RouterOS их не читает, и рукопожатия с сервером не происходит. Подробно это разобрано выше — вместе с признаками, по которым отказ видно на роутере. Как устроена маскировка у VLESS — в разборе протокола.
Можно ли пустить через VPN только часть устройств?
Да, это сильная сторона MikroTik: меняй условия в mangle-правиле — по адресам устройств, address-list или назначению. Телевизор через туннель, рабочий комп напрямую — штатная задача.
Одна подписка на роутер и телефон — можно?
Да: подписка Tainet мультиустройственная — контейнер на роутере и Happ на телефоне работают с одной ссылкой. Обзор всех платформ — в гайде по устройствам.
Если нужен сервис, который дружит с MikroTik: у Tainet в личном кабинете набор команд для контейнера собирается готовым, с уже подставленными значениями ключа, — остаётся вставить его в терминал роутера. Бесплатная первая неделя на обкатку, от 8 ₽ в день. Оформить — в Telegram-боте или на этом сайте в личном кабинете. Вопросы по твоей схеме — поддержка отвечает живыми людьми.