Skip to content

Instantly share code, notes, and snippets.

@nskforward
Last active December 1, 2025 11:49
Show Gist options
  • Select an option

  • Save nskforward/d143f4adde26ddf92001b0a84bc4de19 to your computer and use it in GitHub Desktop.

Select an option

Save nskforward/d143f4adde26ddf92001b0a84bc4de19 to your computer and use it in GitHub Desktop.
Настройка VPN-туннеля VLESS на роутере MikroTik

Настройка VPN (VLESS + Reality) на роутере Mikrotik

Инструкция предполагает, что ваш роутер сброшен до заводских настроек.

Инструкция проверена на 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

Настройка файрвола:

/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

Создание контейнера

Если у вас нет внешней флешки в роутере, то параметру tmpdir нужно присвоить значение ramstorage:

/container config set registry-url=https://registry-1.docker.io tmpdir=usb1/container-tmp layer-dir=usb1/container-tmp/layer

Создадим ENV переменную для контейнера с параметрами подключения к внешнему VPN-серверу:

# value заполняем своим значением от VLESS сервера (например, из 3X-UI панели):
/container envs add list=mihomo key=SRV1 value="vless://..."

Создаём и запускаем контейнер:

/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=192.168.89.1 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

# Установка доверенных сертификатов (необходимо для 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

Открываем доступ к сревисам

# Instagram
/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
# YouTube
/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

Бэкап

/system backup save name=usb1/backup/with_vpn.backup
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment