Добавить в корзинуПозвонить
Найти в Дзене
Серик Байбатыров

Mikrotik: Container + маршрутизация

Учимся создавать на микротике контейнеры и создавать правила маршрутизации на основании маркировки пакетов.
Будем делать на mikrotik hap ac2 на arm процессоре.
1. Обновляем версию прошивки и устанавливаем container
Версия RouterOS должна совпадать с версией container. Сначала обновляем RouterOS (перезагружаемся) и после ее установки устанавливаем container:

Создаем на микротике контейнеры и правила маршрутизации на основании маркировки пакетов.

Будем делать на mikrotik hap ac2 на arm процессоре.

1. Обновляем версию прошивки и устанавливаем container

Версия RouterOS должна совпадать с версией container. Сначала обновляем RouterOS (перезагружаемся) и после ее установки устанавливаем container:

-2

Скачиваем пакет, кидаем его в микротик (files) и перезагружаемся.

/system/device-mode/update container=yes

Проверяем:

/system/device-mode print выдаст

container: yes

-3

2. Подготавливаем флешку

/disk format-drive disk1 file-system=ext4

-4

3. Создаем бридж и VETH

/interface/bridge add name=Bridge-Docker

-5

/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

-6

Добавляем VETH в бридж Bridge-Docker

-7

4. Настраиваем контейнеры и задаем точку монтирования нашу флешку

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

(usb1 - путь к флешке)

-8

Ставим контейнер прокси 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

-9

После запуска контейнера прокси socks5 будет доступен по 192.168.254.5:1080

Ставим контейнер с socks5-тоннелем

Создаем переменную для контейнера для блокировки quic

/container/envs add list=QUIC_REJECT key=QUIC value=REJECT

-10

(проверить на телевизоре 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

-11

Параметры для запуска

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

-12

Можно настроить DNS over HTTPS по этой ссылке

Mikrotik: DoH - DNS over HTTPS
Серик Байбатыров2 февраля

/ip dns forwarders add doh-servers=https://dns.google/dns-query name=fwd_doh

-13

Тогда статические записи в DNS надо делать по другому:

/ip/dns/static/ add address-list=za_dpi_FWD forward-to=fwd_doh match-subdomain=yes type=FWD name=googlevideo.com

-14

И так далее...

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

-15

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

-16

отключаем forward fasttrack connection

-17

перехватываем 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

Готово!