Skip to content

Instantly share code, notes, and snippets.

@ergolyam
Last active February 28, 2026 07:09
Show Gist options
  • Select an option

  • Save ergolyam/c957e8d3f91430184df1cc1fa690dd8f to your computer and use it in GitHub Desktop.

Select an option

Save ergolyam/c957e8d3f91430184df1cc1fa690dd8f to your computer and use it in GitHub Desktop.
ByeDPI on MikroTik

ByeDPI на микротик

Подготовка

  1. Подключаем феш накопитель к mikrotik и форматируем его в ext4. Легче всего это сделать через winbox
  • Заходим в System > Disks > Format drive
  • Выбираем slot usb1 и file system ext4, и нажимаем start.
  • Ждём пока кнопка start снова не станет доступной.
  • Когда стала доступной то всё готово.
  1. Нужно установить пакет container.
  • Заходим на сайт Software Packages
  • Качаем Extra packages для вашей архитектуры.
  • Вытаскиваем установочный файл container*.npk и перекидываем в корень файловой системы микротика.
  • Включаем container в микротике.
    /system/device-mode update container=yes
    
  • Перезапускаем роутер.
    /system reboot
    
  • После перезапуска пакет из файловой системы пропадет и добавиться пункт в winbox, container.
  1. Настройка container.
  • Надо зарегистрироваться на docker.io.
  • После регистрации вводим такую команду, там где username и password это ваши логин и пароль из docker.io.
    /container/config set registry-url=https://registry-1.docker.io tmpdir=/usb1/docker/pull username=<имя_пользователя> password=<пароль>
    
  1. Создаём мост для наших будущих контейнеров.
/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
  1. Настраиваем DoH. DNS-DNSoverHTTPS(DoH)
/tool fetch url="https://cacerts.digicert.com/DigiCertGlobalRootCA.crt.pem"
/certificate import file-name=DigiCertGlobalRootCA.crt.pe
/ip dns set use-doh-server=https://cloudflare-dns.com/dns-query verify-doh-cert=yes
/ip dns set servers=1.1.1.1
  • Переводим абсолютно все dns запросы через doh кроме локальных:
    /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
    
  • Заходим на https://www.dnsleaktest.com/ и проверяем чтобы был dns Cloudflare

Настройка ByeDPI

  1. Делаем виртуальный ether для нашего контейнера.
/interface/veth add address=192.168.254.5/24 gateway=192.168.254.1 name=BYEDPI-SOCKS
  • Также настраиваем bridge port.
    /interface/bridge/port add bridge=Bridge-Docker interface=BYEDPI-SOCKS
    
  1. Скачиваем и запускаем контейнер.
/container/add remote-image=tazihad/byedpi:latest interface=BYEDPI-SOCKS cmd="-s 1 --disorder 1 --auto=torst --tlsrec 1+s --debug 1" root-dir=/usb1/docker/byedpi start-on-boot=yes dns=1.1.1.1
/container start [find interface=BYEDPI-SOCKS]
  • Теперь можно подключиться через любой socks клиент к нашему контейнеру через ip 192.168.254.5 и port 1080.

Настройка TUN2SOCKS, а точнее hev-socks5-tunnel

  1. Делаем виртуальный ether для нашего контейнера.
/interface/veth add address=192.168.254.2/24 gateway=192.168.254.1 name=TUN2SOCKS
  • Также настраиваем bridge port.
    /interface/bridge/port add bridge=Bridge-Docker interface=TUN2SOCKS
    
  1. Скачиваем и запускаем контейнер.
  • Задаём envs для нашего контейнера.
    /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:test interface=TUN2SOCKS root-dir=usb1/docker/hev-socks5-tunnel start-on-boot=yes envlist=tun2socks
    
  • Запускаем контейнер.
    /container start [find interface=TUN2SOCKS]
    
  1. Настраиваем срок dns адрессов.
/ip/dns set address-list-extra-time=1d
  1. Настраиваем таблицы маршрутов.
/routing table add disabled=no fib name=dpi_mark
/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
  1. Делаем mangle правило для заворачивания наших хостов в таблицу маршрутов.
/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
  1. Отключаем forward fasttrack connection для ускорение роутинга.
/ip firewall filter disable [find action=fasttrack-connection]
  • Можно также просто исключить маркированный трафик.
    /ip firewall filter set [find action=fasttrack-connection] packet-mark=no-mark connection-mark=no-mark
    
  1. Добавляем хосты которые мы хотим провести через byedpi. Для примера взял ютуб и рутрекер
/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
  1. Чистим dns кеш и перезапускаем роутер:
/ip dns cache flush
/system reboot
@samponet
Copy link

samponet commented Oct 9, 2024

У меня в статусе контейнера ошибка при добавлении командой /container/add remote-image=snegowiki/hev-socks5-tunnel-mikrotik:latest interface=TUN2SOCKS root-dir=usb1/docker/hev-socks5-tunnel start-on-boot=no envlist=tun2socks. Byedpi добавляется нормально.

@ergolyam
Copy link
Author

ergolyam commented Oct 9, 2024

У меня в статусе контейнера ошибка при добавлении командой /container/add remote-image=snegowiki/hev-socks5-tunnel-mikrotik:latest interface=TUN2SOCKS root-dir=usb1/docker/hev-socks5-tunnel start-on-boot=no envlist=tun2socks. Byedpi добавляется нормально.

для arm нужно не latest а test.

@ogokin
Copy link

ogokin commented Oct 10, 2024

Если у кого не заработет DNS c проверкой сертификатом (verify-doh-cert=yes)
Я импортировал ещё сертификаты с https://curl.se/ca/cacert.pem и DNS c проверкой заработал
Импорт сертификатов
/tool fetch url=https://curl.se/ca/cacert.pem
/certificate import file-name=cacert.pem passphrase=""

@samponet
Copy link

samponet commented Oct 11, 2024

Есть ли где описание параметров для контейнера byedpi-socks?

@ogokin
Copy link

ogokin commented Oct 11, 2024 via email

@ogokin
Copy link

ogokin commented Oct 11, 2024 via email

@samponet
Copy link

Не, нормально не работает именно с ютубом, рутрекер,например, норм. Устал параметры подбирать. Goodbyedpi с параметрами goodbyedpi.exe -5 -e1 -q --fake-gen 5 --fake-from-hex ... норм работает, а тут.. хз что настраивать уже. Идея хорошая, но реализовать что-то никак.

@nsleader
Copy link

Спасибо за инструкцию. У меня заработали вот эти Cmd параметры -s1 -q1 -Y -Ar -s5 -o1+s -At -f-1 -r1+s -As -s1 -o1 +s -s-1 -An

@samponet
Copy link

samponet commented Oct 17, 2024

Не понимаю как это работает: запущен winbox , подключен к микроту, запущен Torch на интерфейсе BYEDPI-SOCKS- есть ютуб, закрываю- нет ютуба.
Разобрался: надо выключить Fast-track connection в правилах файрволла

@tsh-mur
Copy link

tsh-mur commented Feb 23, 2025

Здравствуйте, а как обновить контейнер?
Разобрался, удалить и заново создать
[local@K30] /container> stop number=0
[local@K30] /container> remove numbers=0
[local@K30] /container> add remote-image=tazihad/byedpi:latest interface=BYEDPI-SOCKS cmd="-s 1 --disorder 1 --auto=torst --tlsrec 1+s --debug 1" root-dir=/usb1/docker/byedpi start-on-boot=yes dns=1.1.1.1
[local@K30] /container> /container start [find interface=BYEDPI-SOCKS]
Еще перезагружал

@fess55
Copy link

fess55 commented Mar 17, 2025

А что если, нет USB порта - как быть? Роутер RB4011iGS+5HacQ2Hnd. Написано, что встроенная память 512мб у него. Как подкрутить тогда?

@ergolyam
Copy link
Author

А что если, нет USB порта - как быть? Роутер RB4011iGS+5HacQ2Hnd. Написано, что встроенная память 512мб у него. Как подкрутить тогда?

пропиши любые другие пути, по идее можешь скипуть подготовку usb.

@mrdrsash
Copy link

mrdrsash commented Jul 9, 2025

Мне помогло такое значение cmd="-Ku -a3 -An -Kt,h -d1 -s0+s -s3+s -s6+s -s9+s -s12+s -s15+s -s20+s -s30+s"

@dimawrx
Copy link

dimawrx commented Jul 16, 2025

Настроил роутер mikrotik по этой инструкции, на всех устройствах в сети (телефоны, планшеты, ноутбуки, телевизор Xiaomi) ютуб заработал, кроме устройств яндекса (Яндекс ТВ, Яндекс Модуль, Яндекс Станция Макс). ByeDPI я в основном и настраивал для того, чтобы смотреть ютуб на Яндекс ТВ. Подскажите, что еще надо настроить, чтобы ютуб заработал на устройствах яндекса?

@ergolyam
Copy link
Author

Настроил роутер mikrotik по этой инструкции, на всех устройствах в сети (телефоны, планшеты, ноутбуки, телевизор Xiaomi) ютуб заработал, кроме устройств яндекса (Яндекс ТВ, Яндекс Модуль, Яндекс Станция Макс). ByeDPI я в основном и настраивал для того, чтобы смотреть ютуб на Яндекс ТВ. Подскажите, что еще надо настроить, чтобы ютуб заработал на устройствах яндекса?

возможно у яндекса свой DOH, его нужно отключить

@dimawrx
Copy link

dimawrx commented Jul 27, 2025

возможно у яндекса свой DOH, его нужно отключить

В устройствах яндекса в настройках сети есть только стандартные настройки: статический адрес и dhcp, других настроек нет. Я нашел что под значком ютуба скрывается приложение CoAT:cobalt / com.yandex.tv.ytplayer, видимо в нем есть свои настройки не позволяющие смотреть ютуб в России. В Яндекс ТВ есть возможность подключить флешку и есть файловый менеджер, поэтому отключил это приложение, скачал и установил через флешку приложение Aptoide TV и через него установил YouTube for Android TV. В нем ютуб видео показывает и без проблем тянет 4К, ByeDPI круче VPN ))
Но в других устройствах яндекса (Яндекс Модуль, Яндекс Станция Макс) такой возможности установки сторонних приложений нет, точнее есть, но очень сложная, через медиаплеер VLC и есть вероятность окирпичить устройство. Поэтому, если кто знает как подружить CoAT:cobalt / com.yandex.tv.ytplayer и ByeDPI, напишите.

@samponet
Copy link

Не работает YouTube for Android TV без плясок с ByeDPI и VPN , как может показаться из комментария выше

@dimawrx
Copy link

dimawrx commented Jul 29, 2025

как может показаться из комментария выше

это второй комментарий в продолжении темы, чуть выше есть первый, в котором сообщается, что после настройки ByeDPI на устройствах Яндекса ютуб все равно не работает, а во втором комментарии, что в том случае помогла установка YouTube for Android TV, но не на всех устройствах его легко установить. Поэтому и спросил, как подружить yandex.tv.ytplayer и ByeDPI

@votincevmaxim
Copy link

Все сделал согласно инструкции, но почему то из списка сайтов добавленных в DNS работает только ютуб. А мне нужно еще Дискорд пробросить

@ergolyam
Copy link
Author

ergolyam commented Jan 31, 2026

Все сделал согласно инструкции, но почему то из списка сайтов добавленных в DNS работает только ютуб. А мне нужно еще Дискорд пробросить

через byedpi только замедленные сервисы работают, для зблокированных лучше использовать vless.

https://github.com/ergolyam/mikrotik-sing-box

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