Skip to content

Instantly share code, notes, and snippets.

@nskforward
Last active February 24, 2026 20:41
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

Обновление от 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

Сам список доменов для некоторых популярных сервисов приведен в конце инструкции.

Весь трафик через VPN

Инструкция подразумевает, что ваша домашняя сеть имеет адрес 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

Без 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

Открываем доступ к сервисам (выборочная маршрутизация)

Ниже представлены только некоторые популярные сервисы. Вы легко можете вносить в список для обхода любые свои домены (все поддомены автоматически будут попадать в туннель, поэтому их прописывать не обязательно).

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
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

WhatsApp

/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

ChatGPT

/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

JetBrains

/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

PornHub

/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

Interactive Brokers

/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
@q10nick
Copy link

q10nick commented Feb 18, 2026

А можете объяснить эти строки?

/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

Не сильно шарю в mangle и mss... Зачем это делать? И в последней строке fasttrack зачем?

@nskforward
Copy link
Author

nskforward commented Feb 18, 2026

@q10nick
Статические маршруты априори работают быстрее чем Mangle. Так как сетевой пакет минует попадания сразу во множество цепочек и очередей внутри роутера. Также, через статический маршрут трафик может быть ускорен через FastTrack. Если у вас "слабенький" роутер, то статическая маршрутизация может быть хорошим выходом. Но за это придётся платить временем на поддержании актуальности маршрутов (IP ресурсов меняются сильно чаще, чем домены).
Если у вас мощный роутер, то большой проблемы в теории не должно быть и с Mangle маркировкой трафика. Плюс, в правилах из инструкции применена некоторая оптимизация - маркируется не каждый пакет, а сразу всё соединение. Но механизм FastTrack не совместим с VPN через Mangle, поэтому последним правилом мы отключили FastTrack для маркированных соединений.
Обратите внимание, что включение NAT (как советовали выше в комментах) также может существенно замедлить трафик.
Если конкретно у вас тормоза только с Instagram, то тут вероятнее всего для Instagram нужно в лист исключений добавить какой-то еще домен (можно вычислить по имеющемуся у вас списку IP адресов к каким доменам они относятся).

@nkunchukin
Copy link

nkunchukin commented Feb 18, 2026

Добрый день!
Может кто сталкивался?

Зверушка Mikrotik hAP ax^2
Сеть на контейнера настроена.
NAT для сети контейнера настроен.
Firewall - disable

Контейнер запускается но.........
При запуске контейнера получаю ошибку в логе:
time="2026-02-18T16:46:40.352074191+03:00" level=warning msg="[TCP] dial GLOBAL (match Match/) mihomo --> github.com:443 error: dns resolve failed: couldn't find ip"
time="2026-02-18T16:46:40.352405941+03:00" level=error msg="Error downloading UI: can't download file: Get "https://github.com/MetaCubeX/metacubexd/archive/refs/heads/gh-pages.zip\": EOF"

Вид из контейнера:

/ # cat /etc/resolv.conf
nameserver 8.8.8.8
nameserver 8.8.4.4
options edns0 trust-ad
search .
/ #

/ # ping 140.82.121.4
PING 140.82.121.4 (140.82.121.4): 56 data bytes
64 bytes from 140.82.121.4: seq=0 ttl=53 time=48.872 ms
64 bytes from 140.82.121.4: seq=1 ttl=53 time=45.711 ms
64 bytes from 140.82.121.4: seq=2 ttl=53 time=45.617 ms
64 bytes from 140.82.121.4: seq=3 ttl=53 time=45.928 ms

--- 140.82.121.4 ping statistics ---
4 packets transmitted, 4 packets received, 0% packet loss
round-trip min/avg/max = 45.617/46.532/48.872 ms
/ #

/ # ping github.com
ping: bad address 'github.com'

Вид с роутера:
[Home] > ping github.com
SEQ HOST SIZE TTL TIME STATUS
0 140.82.121.4 56 54 44ms990us
1 140.82.121.4 56 54 44ms921us
2 140.82.121.4 56 54 44ms999us
sent=3 received=3 packet-loss=0% min-rtt=44ms921us avg-rtt=44ms970us max-rtt=44ms999us

Куда копать?

@freshlalka
Copy link

@nkunchukin А на контейнер сделали dns? Сначала тоже столкнулся с этой проблемой попробовал несколько Dns'ов - сработало. У меня локальный Dns в сети, поэтому подсказать конкретный не могу

@freshlalka
Copy link

Контейнер запустился, но почему-то не принимает мой url, вставил его из панели в переменную с ключом SRV1 и значением с моей url из панели 3x-ui. Текст ошибки:
level=warning msg="error:url.Port() is empty line:vless://тут.мой.url
и следом ошибка:
msg="initial proxy provider SRV error: yaml: unmarshal errors:\n line 2: cannot unmarshal !!str `vless:/...` into provider.ProxySchema, convert v2ray subscribe error: format invalid"
Что делаю не так? Сеть и интернет в контейнере есть и работает. Транспорт TCP.
P.S транспорт xhttp контейнер поддерживает?

@rafgfdhh-sudo
Copy link

rafgfdhh-sudo commented Feb 19, 2026

nkunchukin Предполагаю DNS-запросы из контейнера не проходят. Если у Вас правило masquerade для сети контейнера?
/ip firewall nat add chain=srcnat action=masquerade out-interface=<ваш-WAN-интерфейс> src-address=<сеть-контейнера>

Так же можно попробовать использовать DNS самого роутера
/container config set dns=<IP-роутера-в-сети-контейнера>

@Horverd51
Copy link

@freshlalka xhttp не работает, если ты поменял протокол, но не обновил ссылку в envs, то работать не будет. заодно проверь что ссыль правильно вставилась

@Horverd51
Copy link

А еще вопрос, DoH может резать скорость? почему выбор именно на гугловские?

@hitechpol-web
Copy link

hitechpol-web commented Feb 19, 2026

По инструкции 2ip.ru с разу идет на container работает, а при установке DOH установка доверенных сертификатов
/certificate/settings/set builtin-trust-anchors=trusted
ROS 7.21.3 сейчас видно не дружит как выйти из этой ситуации ?, на форумах почитал говорят только откатывать ROS.

@NikB-HQ
Copy link

NikB-HQ commented Feb 21, 2026

А еще вопрос, DoH может резать скорость? почему выбор именно на гугловские?

DoH НЕ МОЖЕТ!!! резать скорость. Он не умеет, DNS нужен для разрешения имен.
За очереди отвечает queue
Смущает гугл, можно использовать one.one.one.one

/certificate settings
set builtin-trust-store=fetch,container,dns crl-store=system
/tool/fetch https://cacerts.digicert.com/DigiCertGlobalRootCA.crt.pem
/certificate/import file-name=DigiCertGlobalRootCA.crt.pem

/ip dns static
add address=1.0.0.1 name=cloudflare-dns.com type=A
add address=1.1.1.1 name=cloudflare-dns.com type=A

/ip dns set use-doh-server=https://cloudflare-dns.com/dns-query verify-doh-cert=yes doh-max-server-connections=100 doh-max-concurrent-queries=300 doh-timeout=10s

@mo029
Copy link

mo029 commented Feb 22, 2026

По инструкции 2ip.ru с разу идет на container работает, а при установке DOH установка доверенных сертификатов /certificate/settings/set builtin-trust-anchors=trusted ROS 7.21.3 сейчас видно не дружит как выйти из этой ситуации ?, на форумах почитал говорят только откатывать ROS.

In 7.21rc1:
/certificate settings set builtin-trust-store=all

In 7.20.6:
/certificate settings set builtin-trust-anchors=trusted

@KataeFF
Copy link

KataeFF commented Feb 23, 2026

Добрый день. Спасибо за инструкцию. Есть несколько вопросов.

  1. Настроил у себя маршрутизацию по списку доменов, загрузил те что были в конце инструкции и те что были ниже приведя их в нужную команду. И тут непонятки, некоторые ресурсы например nnm не работают пока их не занести в address lists, даже если они есть внесены в ДНС, куда можно капнуть что бы не заводить домены в Адрес лист?
  2. Если на ноуте в настройках стоит галка ipv6, то не все сайты открываются, тот же ютуб просто висит, не которые ресурсы не грузят картинки вообще, если ipv6 убрать, то работает хорошо. На компах и ТВ вопрос решается, там есть возможность откл работы с ipv6, а вот на телефоне не получается. Так же хотелось бы понять куда капнуть?
  3. Телега так же тупит, хотя если этот vless поднять на телефоне или компе, то все работает идеально.
    Домены телеги добавил как и в ДНС, так и адрес лист.

@nskforward
Copy link
Author

nskforward commented Feb 23, 2026

@KataeFF, добрый день. Вы затронули очень важный момент. Как появится время, я отражу это в инструкции.
Если вы правильно завели DNS записи, то маршрутизация заработает только при выполнении следующих условий:

  1. Устройство домашней сети обратится к DNS роутера за IP по нужному домену.
  2. Роутер через DOH получит IP запрошенного домена.
  3. Роутер занесет полученные IP в соответствующий Address List в виде динамической записи. Обратите внимание, что за этой записью следит ваш роутер самостоятельно и автоматически обновляет её при необходимости.
  4. При следующем новом соединении по IP из Address List вы должны пойти через VPN.

На этом пути может быть несколько неочевидных моментов. Во-первых, локальное устройство и его браузер могут кэшировать ответ DNS на своем уровне до того, как вы этот домен внесли в VPN. Таким образом, у вас не выполняется п.1 из условий выше. Вам нужно принудительно заставить устройство сходить на DNS роутра, чтобы отработала цепочка и появилась динамическая запись в Address List. Для этого можно использовать, к примеру, ваш терминал и команду dig. Как только вы визуально увидели динамическую запись вашего домена в Address List, значит цепочка отработала. Далее вам нужно пойти на ресурс именно с новым соединением. Для этого можно использоваться, к примеру, режим инкогнито в браузере. А еще лучше терминал и команду curl. Далее проверить через команду ‘traceroute IP_ресурса’ - маршрут должен пойти через контейнер.

@KataeFF
Copy link

KataeFF commented Feb 23, 2026

@KataeFF, добрый день. Вы затронули очень важный момент. Как появится время, я отражу это в инструкции. Если вы правильно завели DNS записи, то маршрутизация заработает только при выполнении следующих условий:

  1. Устройство домашней сети обратиться к DNS роутера за IP по нужному домену.
  2. Роутер через DOH получит реальный IP запрошенного домена
  3. Роутер занесет полученные IP в соответствующий Address List в виде динамической записи. Обратите внимание, что за этой записью следит ваш роутер и после смены IP домена роутер также обновит соответствующую динамическую запись автоматически.
  4. При следующем новом соединении по IP из Address List вы должны пойти через VPN.

На этом пути может быть несколько неочевидных моментов. Во-первых, локальное устройство и его браузер могут кэшировать ответ DNS на своем уровне до того, как вы этот домен внесли в VPN. Таким образом, у вас не выполняется п.1 из условий выше. Вам нужно принудительно заставить устройство сходить на DNS роутра, чтобы отработала цепочка и появилась динамическая запись в Address List. Для этого можно использовать, к примеру, ваш терминал и команду dig. Как только вы визуально увидели динамическую запись вашего домена в Address List, значит цепочка отработала.

Сегодня вообще контейнер сыпет ошибки:
connect error: context deadline exceeded
тут по ходу в блок попадает мой vless, при том что поднято 2 записи на 2 разных VPS, переключал руками в Селекторе интерфйеса Mihomo. Может есть какой то скрипт или правило для переключения с SRV1 на SRV2 в Envs при падении одного из них?

Так же появилась сегодня ошибка
cache full, not storing, поборол увеличением размера кеша для ДНС.

@NikB-HQ
Copy link

NikB-HQ commented Feb 23, 2026

По инструкции 2ip.ru с разу идет на container работает, а при установке DOH установка доверенных сертификатов /certificate/settings/set builtin-trust-anchors=trusted ROS 7.21.3 сейчас видно не дружит как выйти из этой ситуации ?, на форумах почитал говорят только откатывать ROS.

In 7.21rc1:
/certificate settings set builtin-trust-store=all

In 7.20.6:
/certificate settings set builtin-trust-anchors=trusted

На 7.21.3 DoH работает без проблем.
Ничего откатывать не нужно.
Работает корректно.

@NikB-HQ
Copy link

NikB-HQ commented Feb 23, 2026

Добрый день. Спасибо за инструкцию. Есть несколько вопросов.

  1. Настроил у себя маршрутизацию по списку доменов, загрузил те что были в конце инструкции и те что были ниже приведя их в нужную команду. И тут непонятки, некоторые ресурсы например nnm не работают пока их не занести в address lists, даже если они есть внесены в ДНС, куда можно капнуть что бы не заводить домены в Адрес лист?
  2. Если на ноуте в настройках стоит галка ipv6, то не все сайты открываются, тот же ютуб просто висит, не которые ресурсы не грузят картинки вообще, если ipv6 убрать, то работает хорошо. На компах и ТВ вопрос решается, там есть возможность откл работы с ipv6, а вот на телефоне не получается. Так же хотелось бы понять куда капнуть?
  3. Телега так же тупит, хотя если этот vless поднять на телефоне или компе, то все работает идеально.
    Домены телеги добавил как и в ДНС, так и адрес лист.

Вы же в общих чертах понимаете, как работает маршрутизация ipv6?
Что из себя представляет контейнер и как в него попадает маркированный трафик?
В контейнере крутится обычный alpine linux, который маркированный трафик маршрутизирует к серверу vless.
Ваш ipv6 трафик вообще не попадает в него. Он идёт напрямую. А так как ipv6 более приоритетен, соответственно все проходит мимо vless.
Убедитесь, что контейнер получает ipv6 подключитесь шелом и посмотрите. Убедитесь, что трафик ipv6 идёт через vless.
Создайте правила ipv6 firewall mangle , для маркировки трафика, который перенаправить в контейнер.
Убедитесь, что vps, получает ipv6 и маршрутизация на vps по ipv6 работает.
Я десяток раз на разных хостинг площадках сталкивался, что ipv6 адрес в vps отдается, а трафик не ходит.

Если не получается, отключите получение ipv6 префикса и используйте ipv4

@KataeFF
Copy link

KataeFF commented Feb 23, 2026

Добрый день. Спасибо за инструкцию. Есть несколько вопросов.

  1. Настроил у себя маршрутизацию по списку доменов, загрузил те что были в конце инструкции и те что были ниже приведя их в нужную команду. И тут непонятки, некоторые ресурсы например nnm не работают пока их не занести в address lists, даже если они есть внесены в ДНС, куда можно капнуть что бы не заводить домены в Адрес лист?
  2. Если на ноуте в настройках стоит галка ipv6, то не все сайты открываются, тот же ютуб просто висит, не которые ресурсы не грузят картинки вообще, если ipv6 убрать, то работает хорошо. На компах и ТВ вопрос решается, там есть возможность откл работы с ipv6, а вот на телефоне не получается. Так же хотелось бы понять куда капнуть?
  3. Телега так же тупит, хотя если этот vless поднять на телефоне или компе, то все работает идеально.
    Домены телеги добавил как и в ДНС, так и адрес лист.

Вы же в общих чертах понимаете, как работает маршрутизация ipv6? Что из себя представляет контейнер и как в него попадает маркированный трафик? В контейнере крутится обычный alpine linux, который маркированный трафик маршрутизирует к серверу vless. Ваш ipv6 трафик вообще не попадает в него. Он идёт напрямую. А так как ipv6 более приоритетен, соответственно все проходит мимо vless. Убедитесь, что контейнер получает ipv6 подключитесь шелом и посмотрите. Убедитесь, что трафик ipv6 идёт через vless. Создайте правила ipv6 firewall mangle , для маркировки трафика, который перенаправить в контейнер. Убедитесь, что vps, получает ipv6 и маршрутизация на vps по ipv6 работает. Я десяток раз на разных хостинг площадках сталкивался, что ipv6 адрес в vps отдается, а трафик не ходит.

Если не получается, отключите получение ipv6 префикса и используйте ipv4

Спасибо! Доходчиво объяснили! Полез в VPS ))))

@NikB-HQ
Copy link

NikB-HQ commented Feb 23, 2026

Добрый день. Спасибо за инструкцию. Есть несколько вопросов.

  1. Настроил у себя маршрутизацию по списку доменов, загрузил те что были в конце инструкции и те что были ниже приведя их в нужную команду. И тут непонятки, некоторые ресурсы например nnm не работают пока их не занести в address lists, даже если они есть внесены в ДНС, куда можно капнуть что бы не заводить домены в Адрес лист?
  2. Если на ноуте в настройках стоит галка ipv6, то не все сайты открываются, тот же ютуб просто висит, не которые ресурсы не грузят картинки вообще, если ipv6 убрать, то работает хорошо. На компах и ТВ вопрос решается, там есть возможность откл работы с ipv6, а вот на телефоне не получается. Так же хотелось бы понять куда капнуть?
  3. Телега так же тупит, хотя если этот vless поднять на телефоне или компе, то все работает идеально.
    Домены телеги добавил как и в ДНС, так и адрес лист.

Вы же в общих чертах понимаете, как работает маршрутизация ipv6? Что из себя представляет контейнер и как в него попадает маркированный трафик? В контейнере крутится обычный alpine linux, который маркированный трафик маршрутизирует к серверу vless. Ваш ipv6 трафик вообще не попадает в него. Он идёт напрямую. А так как ipv6 более приоритетен, соответственно все проходит мимо vless. Убедитесь, что контейнер получает ipv6 подключитесь шелом и посмотрите. Убедитесь, что трафик ipv6 идёт через vless. Создайте правила ipv6 firewall mangle , для маркировки трафика, который перенаправить в контейнер. Убедитесь, что vps, получает ipv6 и маршрутизация на vps по ipv6 работает. Я десяток раз на разных хостинг площадках сталкивался, что ipv6 адрес в vps отдается, а трафик не ходит.
Если не получается, отключите получение ipv6 префикса и используйте ipv4

Спасибо! Доходчиво объяснили! Полез в VPS ))))

До VPS лезть рано.
Сначала в контейнер. Убедится, что он получил ipv6 адрес из префикса выданного провайдером.
Далее маркируете ipv6 трафик в mangle по тем же спискам. Они создаются в адрес листе для ipv6 автоматически .
Вы вообще как получаете ipv6?
Вы когда его получаете вы какой вес маршрута указываете? Route distance

@KataeFF
Copy link

KataeFF commented Feb 23, 2026

Добрый день. Спасибо за инструкцию. Есть несколько вопросов.

  1. Настроил у себя маршрутизацию по списку доменов, загрузил те что были в конце инструкции и те что были ниже приведя их в нужную команду. И тут непонятки, некоторые ресурсы например nnm не работают пока их не занести в address lists, даже если они есть внесены в ДНС, куда можно капнуть что бы не заводить домены в Адрес лист?
  2. Если на ноуте в настройках стоит галка ipv6, то не все сайты открываются, тот же ютуб просто висит, не которые ресурсы не грузят картинки вообще, если ipv6 убрать, то работает хорошо. На компах и ТВ вопрос решается, там есть возможность откл работы с ipv6, а вот на телефоне не получается. Так же хотелось бы понять куда капнуть?
  3. Телега так же тупит, хотя если этот vless поднять на телефоне или компе, то все работает идеально.
    Домены телеги добавил как и в ДНС, так и адрес лист.

Вы же в общих чертах понимаете, как работает маршрутизация ipv6? Что из себя представляет контейнер и как в него попадает маркированный трафик? В контейнере крутится обычный alpine linux, который маркированный трафик маршрутизирует к серверу vless. Ваш ipv6 трафик вообще не попадает в него. Он идёт напрямую. А так как ipv6 более приоритетен, соответственно все проходит мимо vless. Убедитесь, что контейнер получает ipv6 подключитесь шелом и посмотрите. Убедитесь, что трафик ipv6 идёт через vless. Создайте правила ipv6 firewall mangle , для маркировки трафика, который перенаправить в контейнер. Убедитесь, что vps, получает ipv6 и маршрутизация на vps по ipv6 работает. Я десяток раз на разных хостинг площадках сталкивался, что ipv6 адрес в vps отдается, а трафик не ходит.
Если не получается, отключите получение ipv6 префикса и используйте ipv4

Спасибо! Доходчиво объяснили! Полез в VPS ))))

До VPS лезть рано. Сначала в контейнер. Убедится, что он получил ipv6 адрес из префикса выданного провайдером. Далее маркируете ipv6 трафик в mangle по тем же спискам. Они создаются в адрес листе для ipv6 автоматически . Вы вообще как получаете ipv6? Вы когда его получаете вы какой вес маршрута указываете? Route distance

ipv6 дается провайдером.
Route distance 0 от провайдера.
в ipv6 address list есть адрес на интерфейс контейнер.

@NikB-HQ
Copy link

NikB-HQ commented Feb 23, 2026

ipv6 дается провайдером. Route distance 0 от провайдера. в ipv6 address list есть адрес на интерфейс контейнер.

Ну так сделайте, что бы при попадании в таблицу маршрутизации дистанция для 0::/0 "via interface" была 2 , и добавьте ещё один дефолт с дистанцией 1 и таблицей маршрутизации to_vpn_mark.
Сделайте по аналогии с ipv4.
Поймите, у вас трафик идёт напрямую, а должен через туннель.
Возьмите mtr-tiny и посмотрите трассу, куда идёт трафик.
Вы должны v6 трафик промаркировать, что бы он попал в таблицу to_vpn_mark и добрался до контейнера.
Подключится шелом к контейнеру и посмотреть как идёт трафик, получил ли контейнер ipv6 адрес или нет.

@rafgfdhh-sudo
Copy link

Здравствуйте, если не по теме, пжл. не пинайте. Кто-нибудь пробовал прикрутить AmneziaWG 2.0, т.к. такое ощущение (скорость упала катастрофически), что 3 сторона (провайдер r_0_t), начал замедлять (блочить) vless (пробывал менять транспорт не помогло). Может faq есть?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment