Создаем на микротике контейнеры и правила маршрутизации на основании маркировки пакетов.
Будем делать на mikrotik hap ac2 на arm процессоре.
1. Обновляем версию прошивки и устанавливаем container
Версия RouterOS должна совпадать с версией container. Сначала обновляем RouterOS (перезагружаемся) и после ее установки устанавливаем container:
Скачиваем пакет, кидаем его в микротик (files) и перезагружаемся.
/system/device-mode/update container=yes
Проверяем:
/system/device-mode print выдаст
container: yes
2. Подготавливаем флешку
/disk format-drive disk1 file-system=ext4
3. Создаем бридж и VETH
/interface/bridge add name=Bridge-Docker
/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/veth add address=192.168.254.5/24 gateway=192.168.254.1 name=BYEDPI-SOCKS
Добавляем VETH в бридж Bridge-Docker
4. Настраиваем контейнеры и задаем точку монтирования нашу флешку
/container/config set registry-url=https://registry-1.docker.io tmpdir=/usb1/docker/pull
(usb1 - путь к флешке)
Ставим контейнер прокси socks5
/container/add remote-image=wiktorbgu/byedpi-mikrotik interface=BYEDPI-SOCKS cmd="--disorder 1 --auto=torst --tlsrec 1+s" root-dir=/usb1/docker/byedpi-mikrotik start-on-boot=yes
После запуска контейнера прокси socks5 будет доступен по 192.168.254.5:1080
Ставим контейнер с socks5-тоннелем
Создаем переменную для контейнера для блокировки quic
/container/envs add list=QUIC_REJECT key=QUIC value=REJECT
(проверить на телевизоре LG)
upd: На телевизоре с WebOS заработало с DoH настройкой
Создаем контейнер на который будем заворачивать трафик на определенные хосты.
/container/add remote-image=wiktorbgu/byedpi-hev-socks5-tunnel:redirect interface=BYEDPI-TUN cmd="-Kt,h -d1 -s0+s -d3+s -s6+s -d9+s -s12+s -d15+s -s20+s -d25+s -s30+s -d35+s -An -Ku -a1 -An" root-dir=/usb1/docker/byedpi-hev-socks5-tunnel-redirect start-on-boot=yes envlists=QUIC_REJECT
Параметры для запуска
cmd="-Kt,h -d1 -s0+s -d3+s -s6+s -d9+s -s12+s -d15+s -s20+s -d25+s -s30+s -d35+s -An -Ku -a1 -An"
(со временем надо менять если перестанет работать)
5. Создадим DNS записи для автоматического добавления в address-list (za_dpi_FWD)
/ip/dns/static/ add address-list=za_dpi_FWD forward-to=8.8.8.8 match-subdomain=yes type=FWD name=googlevideo.com
/ip/dns/static/ add address-list=za_dpi_MSS_FWD forward-to=8.8.8.8 match-subdomain=yes type=FWD name=youtube.com
/ip/dns/static/ add address-list=za_dpi_FWD forward-to=8.8.8.8 match-subdomain=yes type=FWD name=youtube.ru
/ip/dns/static/ add address-list=za_dpi_FWD forward-to=8.8.8.8 match-subdomain=yes type=FWD name=youtubei.googleapis.com
/ip/dns/static/ add address-list=za_dpi_FWD forward-to=8.8.8.8 match-subdomain=yes type=FWD name=ytimg.com
/ip/dns/static/ add address-list=za_dpi_FWD forward-to=8.8.8.8 match-subdomain=yes type=FWD name=youtu.be
/ip/dns/static/ add address-list=za_dpi_FWD forward-to=8.8.8.8 match-subdomain=yes type=FWD name=ggpht.com
/ip/dns/static/ add address-list=za_dpi_FWD forward-to=8.8.8.8 match-subdomain=yes type=FWD name=l.google.com
/ip/dns/static/ add address-list=za_dpi_FWD forward-to=8.8.8.8 match-subdomain=yes type=FWD name=play.google.com
/ip/dns/static/ add address-list=za_dpi_FWD forward-to=8.8.8.8 match-subdomain=yes type=FWD name=nhacmp3youtube.com
/ip/dns/static/ add address-list=za_dpi_FWD forward-to=8.8.8.8 match-subdomain=yes type=FWD name=googleusercontent.com
/ip/dns/static/ add address-list=za_dpi_FWD forward-to=8.8.8.8 match-subdomain=yes type=FWD name=gstatic.com
/ip/dns/static/ add address-list=za_dpi_FWD forward-to=8.8.8.8 match-subdomain=yes type=FWD name=1e100.net
/ip/dns/static/ add address-list=za_dpi_FWD forward-to=8.8.8.8 match-subdomain=yes type=FWD name=youtube-nocookie.com
/ip/dns/static/ add address-list=za_dpi_FWD forward-to=8.8.8.8 match-subdomain=yes type=FWD name=gvt1.com
/ip/dns/static/ add address-list=za_dpi_FWD forward-to=8.8.8.8 match-subdomain=yes type=FWD name=yt.be
/ip/dns/static/ add address-list=za_dpi_FWD forward-to=8.8.8.8 match-subdomain=yes type=FWD name=cdninstagram.com
/ip/dns/static/ add address-list=za_dpi_FWD forward-to=8.8.8.8 match-subdomain=yes type=FWD name=instagram.com
/ip/dns/static/ add address-list=za_dpi_FWD forward-to=8.8.8.8 match-subdomain=yes type=FWD name=ig.me
Можно настроить DNS over HTTPS по этой ссылке
/ip dns forwarders add doh-servers=https://dns.google/dns-query name=fwd_doh
Тогда статические записи в DNS надо делать по другому:
/ip/dns/static/ add address-list=za_dpi_FWD forward-to=fwd_doh match-subdomain=yes type=FWD name=googlevideo.com
И так далее...
6. Создадим новую таблицу маршрутизации (dpi_mark)
/routing/table add disabled=no fib name=dpi_mark
и добавим маршрут на контейнер
/ip/route add check-gateway=ping gateway=192.168.254.2 routing-table=dpi_mark
7. Добавим правила в файервол
/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-connection chain=prerouting connection-mark=no-mark dst-address-list=za_dpi_MSS_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 dst-address-type=!local
/ip firewall mangle add action=change-mss chain=forward comment="Youtube MSS" dst-address-list=za_dpi_MSS_FWD new-mss=88 passthrough=no protocol=tcp src-address=192.168.254.2 tcp-flags=syn
отключаем forward fasttrack connection
перехватываем dns запросы на lan
/ip firewall nat add action=redirect chain=dstnat dst-address-type=!local dst-port=53 in-interface-list=LAN protocol=udp
/ip firewall nat add action=redirect chain=dstnat dst-address-type=!local dst-port=53 in-interface-list=LAN protocol=tcp
Готово!