Обход блокировки YouTube и некоторых сайтов на MikroTik за 5 минут

Вопреки распространенному и вводящему в заблуждение мнению, на MikroTik можно настроить работу антиDPi. Основные требования: роутер должен быть на ARM/ARM64/x86/x64(mipsbe/smips итд не подойдет, на hap ac2 обязательно поставить галочку single process в routing->settings для освобождения ram, а так же стоит установить старый модуль wireless вместо wifi-qcom-ac или отказаться от wifi в виду ограниченного кол-ва ram) и установлен пакет для поддержки контейнеров, а так же его работа разрешена, ну и очень желательно иметь внешнюю флешку для этого дела (фс только ext4). Огромная благодарность за решение и разрешение на публикацию: @wiktorbgu . К сожалению, лично у меня на таттелекоме не работает после этого вообще, но, возможно, кто-то найдется и внесет свои дополнительные исправления в этот набор. На ROS6/mipsbe думаю можно завести аналогичную тему через MetaRouter - виртуализация openwrt с последующей насадкой модулей. Оригинальная статья: https://habr.com/ru/articles/838452/ (доступна только под vpn)
Команды в настройку за один присест (стоит их скопировать сначала в notepad++ и потом только в terminal):

Summary
/interface/bridge add name=Bridge-Docker port-cost-mode=short
/ip/address add address=192.168.254.1/24 interface=Bridge-Docker network=192.168.254.0
/interface/veth add address=192.168.254.5/24 gateway=192.168.254.1 name=BYEDPI-SOCKS
/interface/veth add address=192.168.254.2/24 gateway=192.168.254.1 name=TUN2SOCKS
/interface/bridge/port add bridge=Bridge-Docker interface=BYEDPI-SOCKS
/interface/bridge/port add bridge=Bridge-Docker interface=TUN2SOCKS

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

/container/add remote-image=tazihad/byedpi:latest interface=BYEDPI-SOCKS cmd="--disorder 1 --auto=torst --tlsrec 1+s --debug 1" root-dir=/usb1/docker/byedpi start-on-boot=yes
/container/envs/ add key=LOCAL_ROUTE name=tun2socks value="ip r a 192.168.0.0/16 via 192.168.254.1;ip r a 10.0.0.0/8 via 192.168.254.1;ip r a 172.16.0.0/12 via 192.168.254.1"
/container/envs/ add key=SOCKS5_ADDR name=tun2socks value=192.168.254.5
/container/add remote-image=snegowiki/hev-socks5-tunnel-mikrotik:latest interface=TUN2SOCKS root-dir=usb1/docker/hev-socks5-tunnel start-on-boot=yes envlist=tun2socks

/ip/dns set address-list-extra-time=1d

/ip/dns/static/ add address-list=za_dpi_FWD forward-to=localhost match-subdomain=yes name=googlevideo.com type=FWD
/ip/dns/static/ add address-list=za_dpi_FWD forward-to=localhost match-subdomain=yes name=youtube.com type=FWD
/ip/dns/static/ add address-list=za_dpi_FWD forward-to=localhost match-subdomain=yes name=youtubei.googleapis.com type=FWD
/ip/dns/static/ add address-list=za_dpi_FWD forward-to=localhost match-subdomain=yes name=ytimg.com type=FWD
/ip/dns/static/ add address-list=za_dpi_FWD forward-to=localhost match-subdomain=yes name=youtu.be type=FWD
/ip/dns/static/ add address-list=za_dpi_FWD forward-to=localhost match-subdomain=yes name=ggpht.com type=FWD
/ip/dns/static/ add address-list=za_dpi_FWD forward-to=localhost match-subdomain=yes name=rutracker.org type=FWD
/ip/dns/static/ add address-list=za_dpi_FWD forward-to=localhost match-subdomain=yes name=rutracker.cc type=FWD
/ip/dns/static/ add address-list=za_dpi_FWD forward-to=localhost match-subdomain=yes name=medium.com type=FWD

/routing/table add disabled=no fib name=dpi_mark

/ip/route add disabled=no distance=1 dst-address=0.0.0.0/0 gateway=192.168.254.2%Bridge-Docker pref-src="" routing-table=dpi_mark scope=30 suppress-hw-offload=no target-scope=10

/ip firewall mangle add action=mark-routing chain=prerouting comment="List DNS FWD route to tun2socks => byedpi" connection-state=""  dst-address-list=za_dpi_FWD in-interface-list=LAN new-routing-mark=dpi_mark passthrough=no

/ip/firewall/address-list/ add address=10.0.0.0/8 list=local
/ip/firewall/address-list/ add address=172.16.0.0/12 list=local
/ip/firewall/address-list/ add address=192.168.0.0/16 list=local

/ip firewall nat add action=redirect chain=dstnat dst-address-list=!local dst-port=53 in-interface-list=LAN protocol=udp
/ip firewall nat add action=redirect chain=dstnat dst-address-list=!local dst-port=53 in-interface-list=LAN protocol=tcp

После выполнения команд необходимо запустить 2 добавленных контейнера и перезагрузить роутер.
UPD: Вариант размещения антиdpi на роутере не совместим с антизапретом через openvpn на нем же, потому что происходит наложение маршрутов, просьба помочь с этим. У меня лично завелось все с --fake -1 --ttl 10 --auto=ssl_err --fake -1 --ttl 5 в аргументах контейнера.
UPD2: Если нет возможности использовать DoH или 7.16rc4(якобы все еще сырая прошивка), то нужно указать dns заместо localhost в dns static.
UPD3: Удалось совместить АнтиЗапрет и ютаб с другими сайтами путем указания им публичного dns снова через dns static.

Summary

image

ВНИМАНИЕ: Обход DPI работает только в случае блокировки сайта не по IP-адресу, тот же xvideos.com не откроется таким методом. Проверить можно по выдаче nslookup и проверкой ip.
P.S.Огромная благодарность @wiktorbgu , @dartraiden , @hufrea и другим кого не смог упомянуть.

1 Like

Обновил инструкцию, для тех у кого не открывается оригинальная статья

1 Like

наверное к требованиям стоит допипсать что нужно ещё кучу оперативной памятьи, как вот тут обсуждалось, например ас2 сосвоими 128 метрами идёт на…

1 Like

UPD4: Оптимальный вариант для себя пошел с такими аргументами и обязательным указанием статики в arp для контейнеров (после ребута mac сменится у них, добавить заново придется)
–disorder 1 --split 1 --fake -1 --ttl 10 --auto=ssl_err --fake -1 --ttl 5 --debug 1

UPD5: Тк нельзя стало почему-то по не понятным причинам отредачить первый пост, для контейнеров рекомендую использовать ветки test вместо latest

/container/add remote-image=tazihad/byedpi:test interface=BYEDPI-SOCKS cmd="--disorder 1 --auto=torst --tlsrec 1+s --debug 1" root-dir=/usb1/docker/byedpi start-on-boot=yes

/container/add remote-image=snegowiki/hev-socks5-tunnel-mikrotik:test interface=TUN2SOCKS root-dir=usb1/docker/hev-socks5-tunnel start-on-boot=yes envlist=tun2socks

По ощущениям работает реще все, ну и для просто arm тиков только с них возможна установка на текущий момент. И да, контейнеры можно удалять и переставлять независимо от проделанных действий, если у кого есть вопросы на этот счет. Для дескорда этот способ разблокировки тоже можно использовать, но только для статики без голоса по понятной всем причине.

Новая версия https://hub.docker.com/r/wiktorbgu/byedpi-mikrotik и достаточно только одного модуля теперь, занимает куда меньше ресурсов

Любителям byedpi :grin: велком ту тестинг ))
https://hub.docker.com/r/wiktorbgu/byedpi-hev-socks5-tunnel
наконец-то все в одном контейнере :slight_smile:
tag:test

Новый вариант настройки и контейнера в ориге статьи уже есть: [Решаем проблему блокировок (и YouTube) за 5 минут на роутере Mikrotik через контейнеры и без VPN / Хабр]
ВНИМАНИЕ!!! Предыдущие варианты настроек должны быть удалены перед установкой нового контейнера, чтобы не возникало проблем на пустом месте.

Для тех кто не хочет далеко ходить, быстрая настройка тут
/tool fetch https://cacerts.digicert.com/DigiCertGlobalRootG2.crt.pem
/certificate import file-name=DigiCertGlobalRootG2.crt.pem passphrase=""
/ip dns set use-doh-server=https://1.1.1.1/dns-query verify-doh-cert=yes

/interface/bridge add name=Bridge-Docker port-cost-mode=short
/ip/address add address=192.168.254.1/24 interface=Bridge-Docker network=192.168.254.0
/interface/veth add address=192.168.254.2/24 gateway=192.168.254.1 name=BYEDPI-TUN
/interface/bridge/port add bridge=Bridge-Docker interface=BYEDPI-TUN

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

/container/add remote-image=wiktorbgu/byedpi-hev-socks5-tunnel interface=BYEDPI-TUN cmd="--disorder 1 --auto=torst --tlsrec 1+s" root-dir=/usb1/docker/byedpi-hev-socks5-tunnel start-on-boot=yes

/ip/dns set address-list-extra-time=0s # set to default

/ip/dns/static/ add address-list=za_dpi_FWD forward-to=localhost match-subdomain=yes name=googlevideo.com type=FWD
/ip/dns/static/ add address-list=za_dpi_FWD forward-to=localhost match-subdomain=yes name=youtube.com type=FWD
/ip/dns/static/ add address-list=za_dpi_FWD forward-to=localhost match-subdomain=yes name=youtubei.googleapis.com type=FWD
/ip/dns/static/ add address-list=za_dpi_FWD forward-to=localhost match-subdomain=yes name=ytimg.com type=FWD
/ip/dns/static/ add address-list=za_dpi_FWD forward-to=localhost match-subdomain=yes name=youtu.be type=FWD
/ip/dns/static/ add address-list=za_dpi_FWD forward-to=localhost match-subdomain=yes name=ggpht.com type=FWD
/ip/dns/static/ add address-list=za_dpi_FWD forward-to=localhost match-subdomain=yes name=rutracker.org type=FWD
/ip/dns/static/ add address-list=za_dpi_FWD forward-to=localhost match-subdomain=yes name=rutracker.cc type=FWD
/ip/dns/static/ add address-list=za_dpi_FWD forward-to=localhost match-subdomain=yes name=medium.com type=FWD
/ip/dns/static/ add address-list=za_dpi_FWD forward-to=localhost match-subdomain=yes name=facebook.com type=FWD
/ip/dns/static/ add address-list=za_dpi_FWD forward-to=localhost match-subdomain=yes name=fbcdn.net type=FWD
/ip/dns/static/ add address-list=za_dpi_FWD forward-to=localhost match-subdomain=yes name=x.com type=FWD
/ip/dns/static/ add address-list=za_dpi_FWD forward-to=localhost match-subdomain=yes name=twitter.com type=FWD
/ip/dns/static/ add address-list=za_dpi_FWD forward-to=localhost match-subdomain=yes name=linkedin.com type=FWD
/ip/dns/static/ add address-list=za_dpi_FWD forward-to=localhost match-subdomain=yes name=prntscr.com type=FWD
/ip/dns/static/ add address-list=za_dpi_FWD forward-to=localhost match-subdomain=yes name=prnt.sc type=FWD
/ip/dns/static/ add address-list=za_dpi_FWD forward-to=localhost match-subdomain=yes name=t.co type=FWD
/ip/dns/static/ add address-list=za_dpi_FWD forward-to=localhost match-subdomain=yes name=protonvpn.com type=FWD
/ip/dns/static/ add address-list=za_dpi_FWD forward-to=localhost match-subdomain=yes name=nnmclub.to type=FWD
/ip/dns/static/ add address-list=za_dpi_FWD forward-to=localhost match-subdomain=yes name=ntc.party type=FWD

/routing/table add disabled=no fib name=dpi_mark

/ip/route add disabled=no distance=1 dst-address=0.0.0.0/0 gateway=192.168.254.2%Bridge-Docker pref-src="" routing-table=dpi_mark scope=30 suppress-hw-offload=no target-scope=10

/ip firewall mangle add action=mark-connection chain=prerouting connection-mark=no-mark dst-address-list=za_dpi_FWD in-interface-list=LAN new-connection-mark=to_dpi passthrough=yes
/ip firewall mangle add action=mark-routing chain=prerouting comment="To DPI" connection-mark=to_dpi in-interface-list=LAN new-routing-mark=dpi_mark passthrough=no routing-mark=!dpi_mark

/ip firewall filter set [find action=fasttrack-connection] packet-mark=no-mark connection-mark=no-mark

/ip/firewall/address-list/ add address=10.0.0.0/8 list=local
/ip/firewall/address-list/ add address=172.16.0.0/12 list=local
/ip/firewall/address-list/ add address=192.168.0.0/16 list=local

/ip firewall nat add action=redirect chain=dstnat dst-address-list=!local dst-port=53 in-interface-list=LAN protocol=udp
/ip firewall nat add action=redirect chain=dstnat dst-address-list=!local dst-port=53 in-interface-list=LAN protocol=tcp

:delay 10s

/container start [find interface=BYEDPI-SOCKS]
/container start [find interface=TUN2SOCKS]

image

Уважаемый bunkerfox, а можно, пожалуйста, подробнее, как Вы совместили контейнер с “впн-антизапретом”, с учетом нового варианта настройки от 7 ноября и выхода stable ROS 7.16.1?

1 Like

Через перенаправление dns для доменов

Т.е. без использования DOH?

DoH у меня стоит, который потом убирается скриптом при подключении АнтиЗапрета и наоборот. Но сидеть в нынешнем интернете без DoH вообще…равносильно выстрелу в ногу себе, другой вопрос если провайдер его зачем-то режет. И в целом щас контейнер обновился уже, свежий вариант тут:
https://hub.docker.com/r/wiktorbgu/byedpi-hev-socks5-tunnel и он же щас вполне дружит с hap ac2

Вон чего! Спасибо! Вроде в ROS 7.17, которая на подходе, обещают в раздел dns static включить возможность редиректа через DOH, который там же и будет задаваться, т.е. индивидуально для каждого домена.

Добрый день всем, кто поможет настроить микротик по этой теме? Сам не разбираюсь вообще. Контакты боюсь оставлять , не знаю разрешено ли это. Отблагодарю.

UPD6: Дискорд тоже возможно распломбировать через контейнер путем маркировки трафика. Скорее всего и остальное udp реалтайм можно завернуть.
На компе в powershell от рута:
New-NetQosPolicy -name “discord” -NetworkProfile All -DSCPAction 34 -AppPathName discord.exe -IPProtocol Both -PolicyStore “ActiveStore”

На роутере:
/ip firewall mangle add action=mark-connection chain=prerouting comment=“34 - to_dpi” connection-mark=no-mark dscp=34 in-interface-list=LAN new-connection-mark=to_dpi
И расположить над существующими правилами контейнера
Огромная благодаронсть @wiktorbgu

в текущей версии 7.17rc2 можно добавить файл подкачки и будет ему легче работаться

здесь в качестве подкачки используется раздел флешки

/disk format-drive usb1 file-system=wipe duration=10s

/disk add type=partition parent=usb1 partition-size=8G
/disk add type=partition parent=usb1 partition-size=512M

/disk format-drive usb1-part1 file-system=ext4

/disk set swap=yes usb1-part2

здесь используется файл, но нужно установить пакет rose-storage

/disk add file-path=usb1/swap file-size=1024M slot=swap type=file
/disk set swap swap=yes

Влажное уточнение, в settings у disks должны быть галочки сняты перед этим или будет ошибка при установке подкачки

это я недоскопировал
в самом начале - для варианта с разделом

/ip smb set enabled=no
/disk settings set auto-smb-sharing=no auto-media-sharing=no

4к новый микротик https://www.ozon.ru/product/mikrotik-marshrutizator-hap-ax-lite-l41g-2axd-1244924805 кому надо

tpws под mikrotik от @wiktorbgu
https://hub.docker.com/r/wiktorbgu/tpws-zapret-mikrotik
пока только как сокс прокси, но с браузера шустро работает