Обновление от 08.01.2026
Инструкция предполагает, что ваш роутер сброшен до заводских настроек.
Инструкция проверена на RouterOS версии 7.20
Не все модели Mikrotik поддерживают работу с контейнерами. Командами ниже пробуем проверить поддержку и установить.
Проверяем, установлен ли пакет container:
/system package print
Если в выводе нет container, то пытаемся установить:
/system package update
/system package enable container
Проверяем включена ли поддердка container в ядро ОС:
/system/device-mode/print
Если в выводе вы видите container: no, то пытаемся включить и перезагрузить устрйоство:
/system/device-mode/update container=yes
После этой команды обязательно перезагружаем роутер по питанию. Сразу после перезагрузки проверяем, появилась ли поддержка контейнеров командой:
/system/device-mode/print
В выводе должно быть container: yes. Если у вас не так, скорее всего ваша модель не поддерживает контейнеры. Возможно, вам поможет официальное руководство: https://help.mikrotik.com/docs/spaces/ROS/pages/84901929/Container
Создаём необходимые интерфейсы:
/interface/bridge add name=container
/ip/address add address=192.168.89.1/24 interface=container network=192.168.89.0
/interface/veth add address=192.168.89.2/24 gateway=192.168.89.1 name=vless
/interface/bridge/port add bridge=container interface=vless
Настройка маршрутизации:
/routing table add disabled=no fib name=to_vpn_table
/ip route add dst-address=0.0.0.0/0 gateway=192.168.89.2 distance=1 routing-table=to_vpn_table
Обратите особое внимание, что очередность правил в файрволле критически важна!
Если вы хотите пустить через VPN только часть трафика (по списку доменов), то необходимо прописать правила ниже:
/ip firewall address-list add list=to_vpn_list address=2ip.ru
/ip firewall mangle add action=change-mss chain=forward new-mss=1360 out-interface=container passthrough=yes protocol=tcp tcp-flag=syn tcp-mss=1453-6553
/ip firewall mangle add action=mark-connection chain=prerouting connection-mark=no-mark dst-address-list=to_vpn_list in-interface-list=!WAN new-connection-mark=to_vpn_mark passthrough=yes
/ip firewall mangle add action=mark-routing chain=prerouting connection-mark=to_vpn_mark new-routing-mark=to_vpn_table passthrough=no in-interface=!container
/ip firewall filter set [find action~"fasttrack-connection"] connection-mark=!to_vpn_mark
Сам список доменов для некоторых популярных сервисов приведен в конце инструкции.
Инструкция подразумевает, что ваша домашняя сеть имеет адрес 192.168.88.0/24. Иначе замените в правилах ниже адрес сети на ваш.
Если вы хотите пуситить весь трафик через VPN, то нужно прописать правила ниже:
/ip firewall mangle add action=change-mss chain=forward new-mss=1360 out-interface=container passthrough=yes protocol=tcp tcp-flag=syn tcp-mss=1453-6553
/ip firewall mangle add action=mark-connection chain=prerouting src-address=192.168.88.0/24 dst-address=!192.168.88.0/24 connection-mark=no-mark routing-mark=!to_vpn_table in-interface-list=!WAN new-connection-mark=to_vpn_mark passthrough=yes
/ip firewall mangle add action=mark-routing chain=prerouting connection-mark=to_vpn_mark new-routing-mark=to_vpn_table passthrough=no in-interface=!container
/ip firewall filter set [find action~"fasttrack-connection"] connection-mark=!to_vpn_mark
Если вам нужно пустить трафик через VPN только с одного конкретного домашнего IP, то в поле src-address правила mark-connection указываем не всю домашнюю сеть 192.168.88.0/24, а конкретный IP - например, 192.168.88.123/32. При этом IP-адрес этого устройства нужно сделать статичтным, чтобы адрес не менялся после истечения аренды (таблица /ip arp - через WinBox выделяем в таблице нужное устройство - жмём make static).
Если у вас есть USB флешка в роутере (рекомендуется), которая примонтирована, например, в usb1, то необходимо выполнить команду:
/container config set registry-url=https://registry-1.docker.io tmpdir=usb1/container-tmp layer-dir=usb1/container-tmp/layer
Иначе будет достаточно команды:
/container config set registry-url=https://registry-1.docker.io tmpdir=ramstorage
Создадим ENV переменную для контейнера с параметрами подключения к внешнему VPN-серверу:
# value заполняем своим значением от VLESS сервера (например, из 3X-UI панели):
/container envs add list=mihomo key=SRV1 value="vless://..."
Если у вас ещё нет своего VPN-сервера, то вы можете его развернуть самостоятельно по инструкции: https://gist.github.com/nskforward/b4ee345cf825bd38e1642c4d753648be
Создаём и запускаем контейнер:
/container add envlists=mihomo interface=vless logging=no remote-image=registry-1.docker.io/wiktorbgu/mihomo-mikrotik:latest root-dir=usb1/container-tmp/docker/mihomo dns=8.8.8.8,8.8.4.4 start-on-boot=yes
/container start mihomo
Пробуем с устройства локальной сети отрыть в браузере ресурс: https://2ip.ru
При корректной работе в браузере должен отобразиться IP-адрес внешнего VPN-сервера.
Также, в браузере должна открываться UI-панель самого Mihomo, работающая в контейнере по адресу: http://192.168.89.2:9090/ui/#/setup?hostname=192.168.89.2&port=9090&secret=
Без DNS-over-HTTPS (DOH) примерно половина запрещенных ресурсов не будет открываться, даже с настроенным VPN. Так как маршрутизация работает по IP, но чтобы получить IP домена, нужно сперва сходить к DNS серверу (читайте азы про работу интернета). По-умолчанию, используется DNS-сервер провайдера, который цензурирует все DNS-запросы, проходящие через него.
К примеру, вы в браузере открываете ресурс "https://instagram.com", браузер отправляется запрос на трансляцию домена instagram.com в IP адрес. DNS-запрос каскадно доходит до DNS-сервера провайдера (если ранее где-то не закешировано локально), в этом месте происходит цензура и вам в ответ возвращается фейковый IP-адрес, который ведёт на ресурс, вроде такого: "Извините, ресурс заблокирован на территории РФ". Более того, DNS провайдера может перхватывать незашифрованные DNS-запросы к другим внешним серверам.
Чтобы решить эту проблему, в Mikrotik нужно включить DOH, тогда провайдер не сможет расшифровать DNS-запросы.
# Установка доверенных сертификатов (необходимо для DOH)
/certificate/settings/set builtin-trust-anchors=trusted
# Сохранение адресов вышестоящего DNS сервера, чтобы его самого не резолвить из вне
/ip dns static
add type=A name=dns.google address=8.8.8.8
add type=A name=dns.google address=8.8.4.4
# Включение DOH
/ip dns set use-doh-server=https://dns.google/dns-query verify-doh-cert=yes doh-max-server-connections=100 doh-max-concurrent-queries=300 doh-timeout=10s
# Отключаем старые DNS настройки
/ip dhcp-client set numbers=0 use-peer-dns=no
/ip dns set servers="" allow-remote-requests=yes
Ниже представлены только некоторые популярные сервисы. Вы легко можете вносить в список для обхода любые свои домены (все поддомены автоматически будут попадать в туннель, поэтому их прописывать не обязательно).
/ip dns static
add type=FWD match-subdomain=yes address-list=to_vpn_list name=instagram.com
add type=FWD match-subdomain=yes address-list=to_vpn_list name=facebook.com
add type=FWD match-subdomain=yes address-list=to_vpn_list name=cdninstagram.com
add type=FWD match-subdomain=yes address-list=to_vpn_list name=fbcdn.net
/ip dns static
add type=FWD match-subdomain=yes address-list=to_vpn_list name=youtube.com
add type=FWD match-subdomain=yes address-list=to_vpn_list name=googlevideo.com
add type=FWD match-subdomain=yes address-list=to_vpn_list name=ytimg.com
add type=FWD match-subdomain=yes address-list=to_vpn_list name=ggpht.com
add type=FWD match-subdomain=yes address-list=to_vpn_list name=gvt1.com
add type=FWD match-subdomain=yes address-list=to_vpn_list name=youtube-nocookie.com
add type=FWD match-subdomain=yes address-list=to_vpn_list name=googleapis.com
add type=FWD match-subdomain=yes address-list=to_vpn_list name=gstatic.com
add type=FWD match-subdomain=yes address-list=to_vpn_list name=googleusercontent.com
add type=FWD match-subdomain=yes address-list=to_vpn_list name=l.google.com
add type=FWD match-subdomain=yes address-list=to_vpn_list name=yt.be
add type=FWD match-subdomain=yes address-list=to_vpn_list name=youtu.be
add type=FWD match-subdomain=yes address-list=to_vpn_list name=youtube.ru
add type=FWD match-subdomain=yes address-list=to_vpn_list name=withyoutube.com
add type=FWD match-subdomain=yes address-list=to_vpn_list name=youtubego.co.id
add type=FWD match-subdomain=yes address-list=to_vpn_list name=youtubego.co.in
add type=FWD match-subdomain=yes address-list=to_vpn_list name=youtubego.com
add type=FWD match-subdomain=yes address-list=to_vpn_list name=youtubemobilesupport.com
add type=FWD match-subdomain=yes address-list=to_vpn_list name=1e100.net
/ip dns static
add type=FWD match-subdomain=yes address-list=to_vpn_list name=whatsapp.net
add type=FWD match-subdomain=yes address-list=to_vpn_list name=whatsapp.com
/ip dns static
add type=FWD match-subdomain=yes address-list=to_vpn_list name=openai.com
add type=FWD match-subdomain=yes address-list=to_vpn_list name=chatgpt.com
add type=FWD match-subdomain=yes address-list=to_vpn_list name=oaiusercontent.com
/ip dns static
add type=FWD match-subdomain=yes address-list=to_vpn_list name=jetbrains.com
add type=FWD match-subdomain=yes address-list=to_vpn_list name=jetbrains.ai
/ip dns static
add type=FWD match-subdomain=yes address-list=to_vpn_list name=pornhub.com
add type=FWD match-subdomain=yes address-list=to_vpn_list name=pornhub.org
add type=FWD match-subdomain=yes address-list=to_vpn_list name=phncdn.com
/ip dns static
add type=FWD match-subdomain=yes address-list=to_vpn_list name=interactivebrokers.com.hk
add type=FWD match-subdomain=yes address-list=to_vpn_list name=interactivebrokers.com
add type=FWD match-subdomain=yes address-list=to_vpn_list name=interactivebrokers.ie
add type=FWD match-subdomain=yes address-list=to_vpn_list name=au10tixservices.com
/system backup save name=usb1/backup/with_vpn.backup
Здравствуйте, если не по теме, пжл. не пинайте. Кто-нибудь пробовал прикрутить AmneziaWG 2.0, т.к. такое ощущение (скорость упала катастрофически), что 3 сторона (провайдер r_0_t), начал замедлять (блочить) vless (пробывал менять транспорт не помогло). Может faq есть?