Ускоряем YouTube и обходим блокировки на Mikrotik без VPN: подробное руководство

В этой статье я расскажу как ускорить ютуб и не только прямо на роутере Mikrotik и без VPN. Если данная статья вам была полезна, не забудьте поставить лайк.

Также в моем тг-канале есть более простые способы ускорения ютуба.

В моем случае используется MikroTik hAP ax3. Стоит упомянуть, что подойдут только роутеры с архитектурой ARM, ARM64 или x86 (CHR), которые и поддерживают контейнеры.

Ускоряем YouTube и обходим блокировки на Mikrotik без VPN: подробное руководство
  • Прошивку желательно использовать 7.16, т.к. только в ней завезли DNS Forward запросы с использованием встроенного DoH.

Скоро версия выйдет в стабильном канале обновления, а пока в тестировании предрелизная версия на данный момент 7.16rc2.

Перед началом настройки рекомендую сделать бэкап конфигурации, чтобы быстро вернуться в рабочее состояние и начать заново при необходимости.

По настройке контейнеров есть официальная вики, но постараюсь всё кратко описать здесь.

Если команда /system/device-mode print показывает container: yes , то все ок, если нет, то для включения режима контейнеров на устройстве нужно выполнить следующую команду и следовать инструкциям в консоли:

/system/device-mode/update container=yes

Скорее всего придется скачать и доустановить пакеты Extra packages - Container для вашей платформы.

Для установки контейнеров не рекомендуется использовать внутреннюю память, поэтому на роутерах нужна внешняя память USB это флешка или жесткий диск и желательно USB 3.0 и выше отформатированный в ext3/ext4.

Для удобного доступа к файлам контейнеров я расшарил флешку на бридже локальной сети, куда устанавливаются контейнеры (здесь и далее обращайте внимание на имя usb накопителя в вашей системе):

/ip smb set enabled=yes interfaces=bridge /ip smb shares add directory=usb1 name=flash

По умолчанию для samba присутствует пользователь guest без пароля. Для безопасности создайте своего пользователя и пароль.

Пример настройки SMB
Пример настройки SMB

Далее мы создаем бридж для контейнеров, задаем ему адрес, создаем 2 интерфейса VETH с адресами и добавляем их в наш бридж:

/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 add address=192.168.254.2/24 gateway=192.168.254.1 name=TUN2SOCKS /interface bridge port add bridge=Bridge-Docker interface=BYEDPI-SOCKS add bridge=Bridge-Docker interface=TUN2SOCKS
настройки бриджа и VETH
настройки бриджа и VETH
Ускоряем YouTube и обходим блокировки на Mikrotik без VPN: подробное руководство

Установим URL-адрес реестра для загрузки контейнеров из реестра Docker и установим каталог извлечения tmpdir для подключенного usb носителя:

/container config set registry-url=https://registry-1.docker.io tmpdir=/usb1/docker/pull
настройки Container
настройки Container

Скачиваем образы контейнеров, привязываем их к созданным интерфейсам VETH и ставим на автоматический запуск при загрузке устройства:

  • В контейнере byedpi при запуске используется набор команд в аргументе cmd, которые вам возможно придется подбирать для своего провайдера (у меня дом.ру), чтобы обходить DPI, справку по настройке параметров можно посмотреть на гитхабе проекта.
/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/add remote-image=xjasonlyu/tun2socks:latest interface=TUN2SOCKS root-dir=usb1/docker/tun2socks start-on-boot=yes

Далее открываем файл:

\192.168.88.1\flash\docker\tun2socks\entrypoint.sh

Если вы будете искать файлы через проводник в WinBox и не увидите содержимое каталогов контейнеров, всему виной файлы пустышки с именем .type в каталогах, они скрывают их содержимое, чтобы не нагружать проводник файлов.

Ускоряем YouTube и обходим блокировки на Mikrotik без VPN: подробное руководство

и до запуска контейнера заменяем его содержимое этим (рекомендую использовать редактор Notepad++):

Ускоряем YouTube и обходим блокировки на Mikrotik без VPN: подробное руководство
#!/bin/sh ip tuntap add mode tun dev tun0 ip addr add 198.18.0.1/15 dev tun0 ip link set dev tun0 up ip route del default ip route add default via 198.18.0.1 dev tun0 metric 1 ip route add default via 192.168.254.1 dev eth0 metric 100 ip route add 192.168.0.0/16 via 192.168.254.1 dev eth0 tun2socks -device tun0 -proxy socks5://192.168.254.5:1080 -interface eth0
  • Предпоследней командой мы настраиваем локальный маршрут через роутер к BYEDPI-SOCKS контейнеру, т.к. без этого все запросы на шлюз TUN2SOCKS будут уходить на более приоритетный маршрут tun0 с метрикой 1 внутрь туннеля, при этом коннекта с самим туннелем не будет.

Теперь можно запустить контейнеры. Проще всего это сделать через WinBox в окне Container есть кнопка start.

Ускоряем YouTube и обходим блокировки на Mikrotik без VPN: подробное руководство

И как минимум кого-то может устроить вариант использования только контейнера BYEDPI-SOCKS с указанием его IP адреса и порта (192.168.254.5:1080) в настройках или плагинах браузера, такой вариант удобно использовать сразу для проверки обхода DPI провайдера. Я использую браузер Мозила и плагин FoxyProxy.

  • Плагин настраивается достаточно просто, например, для ютуба можно экспортировать настройки, так же есть очень удобная фича в окне плагина "Set tab proxy", отлично подходит для проверок работоспособности сайта, чтобы не выискивать все используемые им хосты, а включить прокси только в текущей вкладке.
Ускоряем YouTube и обходим блокировки на Mikrotik без VPN: подробное руководство
Ускоряем YouTube и обходим блокировки на Mikrotik без VPN: подробное руководство

Сначала рассмотрим настройку без получаемых маршрутов для роутинга на наши контейнеры по BGP

Будем использовать DNS Forward и списки хостов, которые будем пускать через нашу карусель из контейнеров анти dpi системы :)

Для начала установим срок хранения попавших в спискок адресов до одного дня, чтобы они не удалялись сразу же как только заканчивается TTL у полученной DNS записи:

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

Обязательно должен быть настроен DoH DNS, ибо можно получить "подарок" от провайдера с липовыми адресами используя не шифрованные запросы DNS.

Затем добавим хосты, которые нужно пускать через контейнер анти DPI:

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

Указанные домены с их поддоменами будут добавляться в список za_dpi_FWD, называется он так, чтобы быть в конце всех списков при сортировке по имени списка)

Ускоряем YouTube и обходим блокировки на Mikrotik без VPN: подробное руководство

Добавляем новую таблицу маршрутизации:

/routing table add disabled=no fib name=dpi_mark

И добавляем маршрут в эту таблицу на наш шлюз контейнер tun2socks:

/ip route add disabled=no distance=22 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

Теперь добавим mangle правило, чтобы заворачивать все полученные в список хосты в таблицу маршрутизации dpi_mark где весь трафик пойдет на наш анти dpi туннель:

/ip firewall mangle add action=mark-routing chain=prerouting comment="заворачивание списка хостов по DNS FWD на тунель tun2socks => byedpi" connection-state="" dst-address-list=za_dpi_FWD in-interface-list=LAN new-routing-mark=dpi_mark passthrough=yes
Ускоряем YouTube и обходим блокировки на Mikrotik без VPN: подробное руководство
Ускоряем YouTube и обходим блокировки на Mikrotik без VPN: подробное руководство
Ускоряем YouTube и обходим блокировки на Mikrotik без VPN: подробное руководство

Так же в правиле forward fasttrack connection нужно включить на вкладке general фильтр routing mark = main, так сайты из списков по манглу будут открываться быстрее.

Ускоряем YouTube и обходим блокировки на Mikrotik без VPN: подробное руководство

Теперь чтобы это все работало корректно, нужно все запросы DNS отправлять на роутер, для этого нужно отключить в браузере запросы DoH (например в мозилле) и добавить перехват всех запросов DNS из локальной сети:

/ip firewall nat add action=redirect chain=dstnat dst-port=53 in-interface-list=LAN protocol=udp add action=redirect chain=dstnat dst-port=53 in-interface-list=LAN protocol=tcp
Ускоряем YouTube и обходим блокировки на Mikrotik без VPN: подробное руководство

Всё! Можно начинать тестировать ютуб и сайты из добавленного списка, но с одним замечанием, нужно либо перезагрузить все устройства, что иногда сделать проще всего, чтобы на них очистился кеш DNS запросов, либо очистить его вручную и на роутере в том числе. Иначе необходимые адреса не попадут в списки для роутинга.

Все это прекрасно совмещается с аналогичным выходом на vpn ресурсов по другому списку хостов в DNS FWD, которые не обходятся таким способом, но здесь не об этом.

Теперь рассмотрим настройку с получаемыми маршрутами по BGP в т.ч. для Ютуба

Допустим мы уже получаем какие-то маршруты по BGP от сервисов antifilter и дополнительно хотим получать адреса для Ютуба чтобы сразу направить их на наши контейнеры.

Ускоряем YouTube и обходим блокировки на Mikrotik без VPN: подробное руководство
Включаем этот список на сайте antifilter для получения на роутер.
Включаем этот список на сайте antifilter для получения на роутер.

В таком случае нужно ко всем вышеперечисленным настройкам создать новую таблицу маршрутизации clear_out

/routing table add disabled=no fib name=clear_out

С маршрутом в интернет для этой таблицы, который у вас есть по дефолту, у меня это выше стоящий GPON роутер 192.168.1.100:

/ip route add disabled=no distance=24 dst-address=0.0.0.0/0 gateway=192.168.1.100 pref-src="" routing-table=clear_out scope=30 suppress-hw-offload=no target-scope=10
Ускоряем YouTube и обходим блокировки на Mikrotik без VPN: подробное руководство
По сути нужно скопировать основной маршрут в интернет без указания VRF и с указанием новой таблицы роутинга
По сути нужно скопировать основной маршрут в интернет без указания VRF и с указанием новой таблицы роутинга

Далее в фильтрах роутинга /routing/filter нужно для Ютуба прописать наш шлюз TUN2SOCKS:

if (bgp-communities includes 65444:770) {set gw 192.168.254.2%Bridge-Docker; accept;} else {set gw 10.10.0.1%wireguard-client-vpn; accept;}
Ускоряем YouTube и обходим блокировки на Mikrotik без VPN: подробное руководство

Скорее всего у большинства по bgp приходят роуты в main routing table, а теперь после выполнения последней команды есть роуты и на шлюз контейнера tun2socks

По bgp приходят роуты в routing table main
По bgp приходят роуты в routing table main
Полученные по bgp маршруты для Ютуба
Полученные по bgp маршруты для Ютуба

в таком случае сам socks контейнер byedpi выводим в отдельную таблицу маршрутизации clear_out которая выходит прямо в интернет, чтобы не зациклить маршрутизацию адресов ютуба и всего что отправляется на шлюз контейнера tun2socks в таблице main, т.к. ничего не будет работать.

/ip firewall mangle add action=mark-routing chain=prerouting comment="BYEDPI-SOCKS mark route to clear_out" connection-state="" new-routing-mark=clear_out passthrough=yes src-address=192.168.254.5
По счетчикам видно срабатывание правила. Стоит приоритетнее, чем правило по спискам.
По счетчикам видно срабатывание правила. Стоит приоритетнее, чем правило по спискам.

Это правило отлично подходит для проверки работоспособности, т.к. есть счетчики на правилах. Либо же его можно заменить аналогичным другим правилом в другом разделе:

/routing rule add action=lookup comment="BYEDPI-SOCKS mark route to clear_out" disabled=no src-address=192.168.254.5/32 table=clear_out
Ускоряем YouTube и обходим блокировки на Mikrotik без VPN: подробное руководство

Выбирайте на вкус и цвет, есть ли какая-то разница в производительности, не знаю. Иногда лучше видеть всё в настройках mangle, в одном месте так сказать.

После этой настройки наш контейнер BYEDPI-SOCKS (192.168.254.5:1080) перестает быть напрямую доступным из локальной сети, поэтому использовать его из браузера как socks5 прокси становится невозможным. Может кто-то знает как это решить, пишите в комментариях.

На этом все.

Подпишитесь на мой тг-канал, где я регулярно выкладываю полезные сервисы и приложения для жизни.

1616
55
41 комментарий

Вот людям с роутерами Microtik не сидится на месте и они вечно занимаются каким-то пердолингом своего роутера))

8
Ответить

ну за такие бабки грех не крутить вертеть там всё.

1
Ответить

Спасибо. Не воспользуюсь.

7
Ответить

Пипец тут текста, тебе бы книги писать.

3
Ответить
Комментарий удалён модератором

А потом люди спрашивают зачем брать условный кинетик🤡

3
Ответить

а условный кинетик включает это одной кнопкой?

Ответить