Pull to refresh

Comments 208

А еще, что б "имеповаднобыло" выложил кумулятивный транскрипт (как результат больших 24 главы) тех самых ютублекций лекций по ТСПУ на github
https://github.com/DanielLavrushin/tspu-docs
если вдруг кому интересно теорию почитать. Она сильно устаревшая (по разным источникам лецкии делались в 2021 году), но фундаментально базовая.

Гениальные уши у LLM. Принцип «ананасных мальчиков». Просто гениально.

Это очень смешно, и правда. Я упустил этот момент в вычитке. В лекции речь шла о борьбе нанайских мальчиков. Ютуб странскриптил это в `ананайских мальчиков`, и после это все превратилось в борьбу `ананасных мальчиков`.

Локальный мем получается...

о_О Вот это спасибо! Давно хотел что-то такое почитать, будет очень интересно как разработчику обходов) Это вы делали или нет? Какую иишку использовали?

Судя по скринам на YT лежит видеоверсия

Вообще-то в readme репозитория есть эта ссылка

Действительно. Не заметил

Здравствуйте. Скажите пожалуйста, на таком:

Linux RT-BE92U-CC10 4.19.294 #1 SMP PREEMPT Tue Nov 25 10:59
:27 EST 2025 aarch64 ASUSWRT-Merlin

Ваш замечательный проект заведётся?

о да, конечно! как азусник азуснику (обнимемся :)). Не вижу никаких проблем в заводе.

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

А что по требованиям к железу? У меня с учётом nfqws-keenetic(с веб мордой, но без автоподбора стратегий), меньше половины из 128Мб потребляется. Нагрузка ЦП, на уровне шума.

Ой, а скажите, в последних моделях асусов HW offloading все еще конфликтует с обработкой сетевых соединений в ядре? А то у меня на RT-AC88U (знаю, знаю, EOL и Мерлин уже два года не выпускал прошивки, как раз собираюсь обновляться по железу) - доходит до банального, либо hairpin NAT, либо NAT offloading и температура на 2-3 градуса ниже (77 вместо 80).
Поскольку я все равно уже созрел отказаться от асуса, то вопрос чисто праздный.

У вас система какая на роутере? OpenWRT?

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

Можно настроить так, что бы первые N пакетов проходили через ядро и только потом соединение отправлялись в HW offloading. Для этого надо немного поправить правило nftables, но создается оно автоматически firewall4 и как повлиять на него я не нашел.

Но есть костыль. Сделать скрипт заменяющий правило и добавить hook в конфиг.

/scripts/rewrite-nft-rule.sh
#!/bin/sh

trap "exit 1" TERM
export TOP_PID=$$

die () {
    >&2 echo "$1"
    kill -s TERM $TOP_PID
}

offload_rule=$(nft -a list ruleset | grep -E '^\s+meta l4proto \{ tcp, udp \} flow add @ft' || die 'Rule offloading not found')
rule_handle=$(echo $offload_rule | sed -n 's/.*handle[[:space:]]\+\([0-9]\+\).*/\1/p')

echo "Delete default rule $offload_rule"
nft delete rule inet fw4 forward handle $rule_handle || die "Can't delete default rule"
nft insert rule inet fw4 forward "ct packets > 50 meta l4proto { tcp, udp } flow add @ft"
/etc/config/firewall
config include
        option enabled '1'
        option type 'script'
        option path '/scripts/rewrite-nft-rule.sh'
        option fw4_compatible '1'

Все что делает скрипт это заменяет правило `meta l4proto { tcp, udp } flow add @ft` на `ct packets > 50 meta l4proto { tcp, udp } flow add @ft`, т.е. теперь offloading применяется только для соединений после 50 пакетов. За эти 50 пакетов успевает примениться обман DPI, а дальше трафик все равно шифрованный.

OpenWRT?

Вот в том и вопрос про асусы. Они используют Broadcom, который этот наш опенсорс в гробу видел. Как я понимаю (поправьте если не прав), у этих всяких чипов, заточенных на сети, есть разные типы offloading, не только NAT. И в той же OpenWRT можно на, например, Медиатеках, выбирать, какое именно ускорение включать, а какие вещи оставить ядру.

За костыли спасибо, прикольное. Для сабжа как раз подходит, для hairpin NAT как я понял все равно придется отключать HW разгрузку, там все пакеты с/на внутренний бридж надо маскарадить. Но вообще странно, вродебы такая простая и нужная вещь, а её не реализовали на уровне железа.

Вот в том и вопрос про асусы

Судя по WIKI RT-AC88U вполне поддерживает openwrt
https://openwrt.org/toh/asus/rt-ac88u

У меня у самого Asus c OpenWRT, но на MediaTek.

А вообще, мне кажется, на всех роутерах на linux offloading должен делаться одинаково. В nftables создается flowtable и дальше правилом туда добавляются соединения, а там уже драйвер в ядре сам разбирается, как эту таблицу на сетевую карту отправить.

разные типы offloading

Да есть программный, есть аппаратный.

При программном пакеты все равно попадают в ядро, но пропускают большую часть сетевого стека и проверок (в том числе и правила netfilter) из-за чего нагрузка падает.

При аппаратном пакеты вообще в ядро не попадают.

В документации по ядру про это подробнее расписано, если интересно. https://docs.kernel.org/networking/nf_flowtable.html

Но вообще странно, вродебы такая простая и нужная вещь, а её не реализовали на уровне железа.

Да потому что эта функция нужна в РФ, да в Китае МБ. Никому больше не надо специально фрагментировать пакеты и творить прочую дичь с трафиком, лишь бы их DPI пропустил.

Оу, благодарю за линк. Последний раз поддержку в опенврт я смотрел лет 5 назад, а там как раз указано что поддерживается с версии 22.03.0. У меня устаревшие данные стало быть, как-то умудрились разработчики запилить поддержку BCM53xx.
И за линк на flowtable тоже) Интересно.

> Да потому что эта функция нужна в РФ, да в Китае МБ.
Нене, я про hairpin NAT, это когда машины из локальной сети могут получить доступ к внутренним сервисам при обращении на внешний адрес роутера (при условии проброшенных портов, естественно). Если включать HW NAT offloading, то просто перестает работать вот это правило:
`-A POSTROUTING -s $lan_subnet -d $lan_subnet -o $lan_bridge_if -j MASQUERADE`
Сами пакеты проходят через проброшенные порты, но вот после рукопожатия (когда обработка потока уходит в железо) напрочь отключается SNAT и сервер начинает получать от роутера пакеты с адресом клиента в локальной сети, а не с адресом роутера.

Впрочем, возможно дело именно в MASQUERADE, который сам по себе довольно тяжелый и требует получать информацию о текущем адресе на интерфейсе, а таблицам в железке неоткуда угадывать этот адрес. Надо будет попробовать просто SNAT вместе с HW offloading.

Здравствуйте. Скажите, под винду и под андроид трудно допилить ?

угу, к сожалению да, это серверное linux-по:(, под вин точно нет, но под андроид как буд-то можно буде попробовать

Нет, про винду я имел в виду если выделить какой-то HAL и в нём просто заменить линуксовые системные вызовы на виндовые. Наверняка они достаточно похожи. С другой стороны, наверняка эта часть (HAL) окажется не слишком велика по сравнению со всем остальным. Вобщем поковыряюсь в исходниках. Про андроид даже не знаю, наверняка потребуется root, без чего хотелось бы обойтись..

просто весь проект основан на базе линуксового nfqueue, по этому фундаметально винда мимо тут идет:( ну и в целом задача интересна была сделать сетевое серверное приложение (базово для роутеров), а не для частных клиентов.

но! я могу что-то и не знать! проект опенсурсный, и если кто-то присоеденится к разработке, я буду более чем рад. Честно говоря это все те еще дебри всратые:).

Полез сейчас гуглить "nfqueue аналог windows", выдало - Основным аналогом Linux-очереди пакетов NFQUEUE в Windows является драйвер WinDivert (Windows Packet Divert). Так что возможно не так уж всё безнадёжно. Попытаюсь :)))

Через WinDivert работает GoodbyeDPI, zapret и прочие. Если интересно, можете попробовать мое поделие, но оно работает как прокси, без дров

Специально зашел поблагодарить Вас за "поделие" - работает отлично! Если запускать с --no-blacklist, то и некоторые другие ресурсы становятся доступны.

Доброй ночи. А подробной инструкции как это дело поставить и настроить на Кинетик нет случайно?

В группе много людей ставили на кинетики, без особых проблем. Ставится везде одинаково, чеез базовый скрипт установки. Кинетик это линух, а значит должно работать из коробки, дальше вопрос в ресурсах железки. Голанг бинагники на память более затратные, нежели сишные проекты типа запретов.

в любом случае у меня есть небольшие гайды на гитхабе, может помогут?

https://daniellavrushin.github.io/b4/

не столько наверное с кинетиком связано, но не подскажете есть возможность оффлайн установку как-то сделать? На кинетике вива через скрипт получаю ошибку Failed to fetch latest version. Пробовал через wget, пробовал с флешки на которой стоит Entware. Проблем с доступом к гитхабу нет, в общем сходу как-то непонятно почему я номер последней сборки получить не могу

UPD попробовал запустить ./install.sh v1.36.0 получил ошибку загрузки. Короче буду разбираться почему у меня с компа, на котором не установлено ни одного запрета и прочего к гитхабу доступ есть, а с роутера за которым этот комп находится доступа видимо нет

да это косяк wget, нужно доставить `wget-ssl`.
А попробуйте снова установить, кстати? я подкрутил кое-что в скрипте, может получится теперь?

У меня так же, на DSL Skipper с 46Мб ROM:

[INFO] Fetching latest release information...
[WARNING] Direct download failed, trying proxy (proxy.lavrush.in)...
[ERROR] Failed to fetch latest version

Причём до этого установка прошла, но фейлился запуск без уточнения причин, поэтому решил очистить внутреннее хранилище, заново установил Entware, пакеты wget-ssl, bash и начал сначала.
Рекомендуется больше памяти?

Человек не программист , но с пониманием дела , сможет залить в роутер данную стратегию ?

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

Под андроид уже есть решения, и да, рут нужен

Для ByeByeDPI не нужен рут.

Еще бы неплохо добавить скрипт или другой инструмент для полного удаления программы и возврата всех настроек обратно, включая nftables и т.д.

много чего добавить можно и нужно, но конкретно это все уже есть.

флаг `--remove` к скрипту удалит все установленное.

А насчет правил - они добавляются только при работе приложения. При выходе все очищается и возвращается в былой вид.

У Вас может ещё и не хватить ПЗУ. Кажется пора обновлять устройство 😅

Кстати, думаю возможно под него навасянить openwrt и поставить софт из статьи, но это надо разбираться в том как это сделать(

У меня подобный опыт был с первой ревизией keenetic 4G (не рекомендую повторять))

Проблема всех golang решений в том, что они собираются статически. (Что меня сильно удивляет в выборе языка для сборки "под роутер") Отсюда - мегабайт - это минимальный размер бинарника на go.

статика это именно что "под роутер" ибо фиг его знает какие там есть shared libs

Мы же точно знаем, что мы поддерживаем и можем проверить (версия ОС и процессор определяются нетрудно). Раз можем проверить - просто взять SDK под конкретные роутеры и собрать, проблем-то? (собственно это именно правильный подход, с учётом ограниченности доступных объёмов данных)

В чем проблема? Возьмите код и пересоберите динамические бинарные файлы под каждую платформу.

Насколько я знаю, сделать это с Go - нетривиально. (Но возможно я ошибаюсь).

Дело даже не в размере самого бинаря, его можно ужать через upx. Проблема в потреблении оперативки в рантайме. Голанг любит кушать память, а на роутере с 128 МБ ОЗУ каждый мегабайт на счету

Можно пожать UPXом с 12МБ до 4МБ:

upx --best b4
                       Ultimate Packer for eXecutables
                          Copyright (C) 1996 - 2024
UPX 4.2.2       Markus Oberhumer, Laszlo Molnar & John Reiser    Jan 3rd 2024

        File size         Ratio      Format      Name
   --------------------   ------   -----------   -----------
  12058808 ->   4420212   36.66%   linux/arm64   b4

Packed 1 file.

На USB-флэшку. У меня так и работает. Гунлить "Keenetic entware". Только вам бы ещё прошивку обновить.

Сервер обновлений недоступен. А там было-то на выбор две прошивки лет 5 назад, я их переключал, разницы не видел.

Правильно. Официально поддержку свернули уже очень давно, но до недавнего времени была неофициальная (от официального разработчика на добровольных началах). Надо только прошивку переключить на тестовую ветку (не бета!).

Делается из терминала, например через telnet:

components list delta
components commit

И прилетит версия 2.16 с новым интерфейсом и фичами. Обновление серьезное, старый конфиг если и поднимется, то криво. Иногда сразу после прошивки роутер вообще становится недоступен, но как только загрузится, можно сбросить и всё заработает, только настройки надо будет заново настроить.

А так у меня на даже более младшей модели (Keenetic II) успешно крутились zerotier, zapret, ipset-dns (этот с небольшим напилингом скриптов, всё-таки дале так прошивка старовата), wireguard - так вообще официальный компонент с настройкой через веб-морду.

Рано, в общем, на покой им, всё у них хорошо.

В чём будет выгода от этой новой прошивки?

Лучший функционал с более удобной и гибкой настройкой, поддержка пачки более-менее современных протоколов VPN, поддержка сторонних пакетов с потенциально безграничным функционалом? Я-то, как бы, отвечал на вопрос, КАК сделать на этой модели, то, что в посте, а не ЗАЧЕМ. Это уже дело ваше.

Но чтобы решить "зачем", должен же я уточнить у человека, который имел с этим опыт. Вряд ли ведь нейронка мне скажет, что там поменялось.

Этому кинетку лет больше, чем РКН :D

Хотите современные протоколы и обходы блокировок, покупаете современные роутеры. Никто не будет тестировать инфраструктурные проекты под девайсы 10-15 летней давности.

Я к тому, что когда где-то пишут Keenetic, вообще не уточняют версии и прочее. Это как написать "Работает в Windows".

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

"не уточняют версии"

Очевидно, если не указано иное, то всегда подразумевается актуальная поддерживаемая, или хотя бы не сильно устаревшая версия, на момент публикации текста. Это ж база). То есть несколько поколений назад - норм, 10 винда скорее норм, хотя и eol вот-вот прошел. А вот 7 винда с учетом eol больше 5 лет назад, или вот Zyxel с eol >10 лет , ну объективно, не попадают под признаки актуальности :)

Я не знаю, как зухель именует свои продукты. Может, у каждого продукта своё название, и кинетик один такой. Ну, максимум с разной ревизией, но тогда нужно же указывать ревизию. Знаю, что "работает в Android" — это очень расплывчатое понятие. У меня сейчас на руках есть телефон с Android 7.1, там уже мало что работает. А какой диапазон версий нынче актуален, я не уточнял. Вроде, под 9-й, который у меня на другом телефоне, пока приходят обновления всего, чем я пользуюсь. Но как это узнавать не из личного опыта? Тем более, что каждый разработчик программы, наверное, сам выбирает, насколько свежим API пользоваться.

Виндой не пользуюсь 17-й год, поэтому тоже не очень знаю, что у них происходит. Лет 10 назад слышал, что "десятка теперь навсегда, будет роллинг релиз", а недавно стали писать про 11-ю. Она хоть из беты вышла? Про релиз как будто бы нигда не писали, либо я пропустил. Зато пишут про баги и уязвимости аж в блокноте.

Не надо собирать софт под роутеры на go. он собирается статически. И никакой флешки так не хватит.

Что же у вас за флешки, что их не хватает? Даже в мой роутер я втыкал 8 GB с NTFS, она виделась и работала.

Встроенная память роутера для системных приложений и данных, а не "шара" для хранения файлов.

На тех же кинетиках все пользовательское (entware, приложения, данные) хранится на внешней флешке, на внутренней из изменяемого пользователем - только конфиги (туда можно, конечно, и приложения закинуть, но она маленькая и изнашивается быстро).

Я довольно много пользовался внешними флешками к роутерам ещё во времена, когда 8 мегабайт внутреннего флеша - это было много, а нередко было 4 мегабайта (и ни в чём себе не отказывай!).
Почти всегда это было связано с проблемами в перспективе (от геморроя при обновлениях, до дохших флешек и виснувших роутеров из-за перегрева или глючивших usb контроллеров). Но краткосрочно - да, работает.

При наличии альтернатив, я предпочту использовать внутреннюю память роутера.

С тех пор коты не один сетевой провод перегрызли. У меня nfqws-keenetic работает с начала "деградации" ютуба на внешней флешке. По началу перезагрузки нужны были раз в неделю, но софт был сырой. Последние несколько месяцев всё работает стабильно. Флешка древняя, на 8Гб(меньше просто не нашлось на тот момент под рукой), usb 2.0 ещё. Полноразмерная и холодная. Есть современная сандиск на 64Гб, маленькая, но она сильно греется и сомнительно её на постоянку подключенной оставлять.

Есть современная сандиск на 64Гб, маленькая, но она сильно греется и сомнительно её на постоянку подключенной оставлять.

Вот лежит Sandisk Ultra на 16Гб, которая в текущем роутере таки сдохла. Причём дохла рандомно и с глюками роутера. В итоге перестала читаться кусками.
Это не первая, но первая в этом роутере.

PS. Древние скорее всего жить будут лучше, потому что там была более качественная флеш.

М.б. роутер телеметрию на неё писал по кругу и затёр до дыр?

Вроде не должен был. Подозреваю сочетание перегрева и "современной" flash-памяти.

Тоже пользуюсь долго, протер не одну флешку на роутерах ;) Последний раз надоело, и поставил SSD m.2 в USB-коробочке. Так роутеру понравилось, уже 2 года полет прекрасный, он ssd даже тримит еженедельно.

SSD и как фс для линукса работает, и как сетевая шара.

О, неплохая идея. Спасибо.

Думаю, что-то типа intel optane вполне подойдет.

подключаешь флешку, ставишь entware, а потом уже что угодно накатить можно

хотя на счёт первой экстры я не уверен, там прошивка желательна поновее

netis nx32u (arm)

лучший вариант - wbr3000uax (arm), если дождетесь на вб или на авито с переплатой, если не терпится

цена вопроса меньше 1 похода в 5-ку

Интересно, а телеграм может вылечить такое чудо? Со всем остальным nfqws хорошо справляется..

В случае телеграма, по-моему, шейпинг просто по ip идёт.

Вот странное дело, в 2018 году блокировки по IP оказались бесполезны. Именно в отношении Телеграм.
А в 2026 работают :(

В 2018 Паша Дуров прилагал не маленькие усилия со своей стороны, Дигитал Ресистанс и все такое, а теперь ему скорее всего неособо интересны пользователи из РФ

я думаю сейчас другой кейс, скорее всего это тем кто блокирует сейчас плевать что что то отвалится, диапазоны телеги открыты, там 11 тысяч адресов только v4, это капля в море относительно сегодняшнего заблокированного. В 18 году был резонанс что резко перестало много открываться того что работало. Сейчас в условиях когда легче перечислить что работает чем не работает заблочить все подсети по ip мне кажется не составляет проблемы, мы достаточно прожарены уже.

Tg (пока) вылечить может MTProxy (особенно за TLS 443). Но, боюсь, это временно.

Роутер, роутер... Даже обидно как-то, у всех роутер. А вот у меня кабель из трубы и в компьютер втыкается. Можно тоже какой-нибудь роутер между ними вставить?

К чёрту мелочи. Лучше поискать какой-нибудь неттоп с двумя сетевыми портами, накатить на него openwrt и получить наиболее гибкое устройство

уж лучше на N100 поискать тогда

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

Сейчас полно одноплатников с двумя и более портами

Надо смотреть на стоимость и доступность, а то одноплатник будет дороже роутера и ехать с Али, когда Cudy на OpenWRT будет стоить 2700 с доставкой завтра.

Если вы про Cudy серию 3000 то у нее вроде памяти 16мб, это место буквально только для самого ОpenWRT (в теории можно конечно попоробовать использовать оперативку), а минимум нужно хотя бы 32мб, а лучше 128мб

Они разные
TR3000 подороже, но встречаются ревизии даже с 256.

NanoPI R3S
можете посмотреть в эту сторону

Думаю - это наилучшее решение. Не зависит от роутера и его прошивки, не нагружает его (роутер). У меня, например ASUS ZenWiFi BQ16 для которого ни OpenWRT, ни AsusWRT-Merlin не существует.

У него по спекам - Broadcom BCM67263. Broadcom как Snapdragon - проприетарные чипы, драйвера которых в открытом доступе нет.

Поэтому никакого OpenWRT там быть не может.

Если бы цель состояла в поддержке роутером OpenWRT, то есть таблица поддерживаемых платформ. И чаще всего свежие версии OpenWRT идут на процессорах MediaTek. Поэтому да, как вы говорите, WiFi отдельно, проводной роутер отдельно - самое лучшее решение.

Труба — это сотовый телефон или труба провайдера в подъезде?

В подъезде. Всем спасибо за ликбез.

Дороговато.

Тогда можно любой роутер между ними вставить.

Любой девайс на котором можно запустить линукс, с двумя портами или хотя бы с USB - можно воткнуть USB-сетевую карту, и не одну.

Комп, одноплатник, старый ноутбук, тв-бокс...

У меня так работало раньше, x96mini на amlogic s905w, юсб это lte модем, а выход ethernet в микротик точку доступа

Выглядит вкусно. А кто-нибудь рядом с ним ставил впн-клиент, можно их подружить?

HydraRoute хорошо дружит с b4, главное у b4 в настройках отключить сетевой vpn интерфейс (тот который создал hydraroute).

И тогда работает так: что не забрал hydraroute по правилам (домены cidr), идет в b4

Связка HR и b4 прям очень удачная

А есть аналог HydraRoute под OpenWRT?

v2rayA можно попробовать, ставил его на кинетик, но HydraRoute более простой и быстрый как по мне.

жаль под Mikrotik (routerOS) нет такого коробочного решения...

для старых mmips не подойдет

Он для всего старья не подойдет, что не умеет Docker. Там коробочных решений можно не ждать, а в случае более популярных ARM/ARM64 — при наличии навыков, хоть собрать самостоятельно.

Пора обновляться, если стоит цель крутить подобное именно на RouterOS.

Выскажу, наверное, непопулярное мнение, но с каждым днем микрот становится все менее и менее привлекательным в российских условиях. Лучше сразу на openwrt уходить.

В далекие времена когда блокировки только начинались он был оптимальным решением - гибкий роутинг, куча протоколов из коробки. Но со временам обход блокировок на нем стал задачей с заметно большим количеством геморроя, чем на том же openwrt. Банально потому что готовых решений под openwrt в разы больше. Я пока выкручиваюсь набором из микрота + роутинга в виртуалку с нужным софтом, но это настолько не гибкое решение по сравнению с любым решением на openwrt что, смотря на знакомых с bananapi, появляется желание слезать с микротика.

эмм, а что вас не устраивает в byedpi контейнере? даже статья тут на хабре есть. Вроде как есть контейнер для той же nfqws, но я пока не пробовал

Было бы здорово получить список (можно тупо MD файлом в репозитории) проверенных устройств. Если честно, я бы даже купил под это себе Кинетик в DNS'е.
Но не хочу после покупку узнать, то тут не MIPS процессор или ещё какие-то проблемы.

Опять же - Netcraze? Считаем его за Кинетик, или нет?

Да, это одно и тоже.

Netcraze=Keenetic с переклееной наклейкой

За все устройства не скажу, но Keenetic peak (kn-2710) - работает хорошо, пару недель на b4 все четко.

на netcraze ultra тоже поидеи взлетит, на днях буду туда ставить, могу отписаться по результату.

Да и как вариант можно ax3000 взять шитый на keenOS и накатить туда. Но это эксперимент, я сам так не делал. Но знаю что ax3000 шьют на keenos и он прям очень неплох в качестве репитера для mesh сети за свои 4килорубля, может как головной роутер тоже норм.

Ну мне на ДВ из "вкусных" моделей в DNS'е доступна эта: Netcraze GIGA NC-1012
Процессор: ARM-процессор MT7981 1,3 ГГц (Mediatek Filogic 820)

Если б был, уверен, что заведётся, прям сейчас заказал бы.

Цена не выглядит вкусной. Прямо сейчас на wb всё еще есть ASUS AX4200 (Filogic 830 2.0 GHz quad-core) за ~7600, а так на него везде цена over 10к (хотя не знаю какая будет цена для ДВ). Шьется на OpenWRT за 10 мин.

у меня на giga kn-1011 летает

Зачем переплачивать за шильдик - netis nx32u + 4pda

тут больше не архитектура сроляет, а память и место на роутере.

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

да, упустил этот момент, все же проекты на голанге в отличие от сишных творчеств весьма требовательны к ресурсам. На минималке вроде как жрет 35-40 метров.


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

Я так понимаю, что можно в виртуалке установить линукс, туда поставить вашу прогу и выходить в интернет всем устройствам в локальной сети используя виртуалку как шлюз?

Ну или старый пк, ноут для этого использовать.

Если возможно, то описать бы в инструкции это подробно для "чайников".

Конкретно с сабжем не проверял, но могу посоветовать Routerich - мощное железо, OpenWRT из коробки, и хорошее комьюнити в Telegram, где обсуждается в том числе подобный софт. Заказать можно в одноименном Telegram-чате или на Озоне (дороже).

В opkg+luci не думали обернуть

а кто то простыми словами может плз обьяснить - в чём профит anti-DPI решений, например, сабжа, по сравнению с квн/прокси ? ведь, допустим, этот инструмент не поможет от геоблока такого то сервиса "с той стороны". и как тогда быть ? миксовать несколько инструментов ?

миксовать несколько инструментов ?

да.

а кто то простыми словами может плз обьяснить - в чём профит anti-DPI решений, например, сабжа, по сравнению с квн/прокси ?

я не очень глубокий спец в теме, поэтому только простыми словами и могу - зачем гонять трафик бог весть куда, если можно его не гонять? Если есть шанс не гнать траффло через европу - то лишний раз стоит этим воспользоваться. Отсутствие дополнительных задержек, отсутствие ограничений по скорости. Нагрузка на сетевое железо, насколько я понимаю, тоже сильно ниже (не нужны расходы на доп шифрование).
А на проксе можно как раз вписать те редкие сервисы, которые очень плохо работают с запретом\аналогами, а так же те сервисы которые сами по гео блочат.

Если есть шанс не гнать траффло через европу - то лишний раз стоит этим воспользоваться. Отсутствие дополнительных задержек, отсутствие ограничений по скорости.

с этим полностью согласен, я имел ввиду профит между сабжем и точечной маршрутиризацией (что нужно - через прокси, что не нужно - напрямую), например через v2RayA на openwrt

Так в этом и дело - ютуб - зачем его гнать через проски? Дискорд - зачем гнать через прокси?
Гоните в тоннель только то, что нужно, всякие chatgpt, intel)
А все остальное будет работать через aDPI сервисы. Т.е. по сути вы просто расширяете скоуп того, что "не нужно заворачивать через отдельный сервер".
Если у вас такой нужды нет - то вам и профита никакого не будет) Я настроил запрет, а вот маршруты для прокси заленился делать так руки и не дошли)))

  • Скорость. Ну то есть если канал 800 Mbit/s то с VPN 200 Mbit/s будет в лучшем случае.

  • Иногда желательно residential ip (и нет геоблока). VPN (почти все) datacenter IP. Приходится еще и residential proxy + proxifier городить.

Попробую

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

Минусы туннелей:

- закон скорее всего запрещает не то, что говорить о них, но уже как буд-то и пользоваться (если не уже, то думаю вопрос времени).
- скорость работы. По сути вы не к сайту подключаетесь, а к какому-то серверу, а уже от него подключаетесь к нужному сервису. Скорость ну прям-таки сильно режется в моменте, в сравненни если бы работало все напрямую.

Ну и ДПИ-Шаталки
Плюсы:
- не нужно иметь ни подписок ни серверов, принцип работы шаталок этого не требует
- трафик никуда не идет, только до нужного сервиса нарямую
- законодательно ничего не нарушается, даже больше. Это уже проблемы ТСПУ, что "нишмагла" и пропустила (но все еще не забывайте, что само посещение некоторых определенных сайтов может быть незаконно, но это другая история - тут все взрослые, под свою ответственность, как говорится).

Минусы дпи-шаталок же:
- ненадежность и небезопасность. По сути шаталки не про безопасность а про доступ. Вы как ходили на свой любимый запрещенный сайт, так и ходите, шаталка просто пилит пакеты и добавляет мусор, чтобы сконфузить дорогую железку на стороне провайдера.
- сложность - очень высокий технический порог входа. Нельзя сделать большую красную кнопочку "почини мне интернет", потому что тспу сильно разнится от региона к региону и от провайдера к провайдеру, (да что говорить, от сайта к сайту даже) и нужно в конкретном случае подбирать ту или иную стратегию обхода.
- более легкий отлет. Если туннель банится, то банится полностью, сразу понятно становится. С дпи несколько все сложнее, подкрутили один сайт, все работает, а конкретно этот - нет, и не понятно в чем проблема. Как по мне это тоже в минусы.

Как-то так.

вот это прямо ёмко, моё почтение)

Идеальный сетап это микс. Тяжелый медийный трафик вроде ютуба пускаем напрямую через B4 или zapret, а заблокированные по IP сайты заворачиваем в туннель через маршрутизацию

А как маршрутизировать трафик? Желательно по geosite.

Я щас юзая podcop, но он использует fakeIP, поэтому если не может подменить dns, то ломается.

Раньше использовал DAE, для маркировки и отправки в тунель, но с установкой на openwrt у него проблемка.

Cтавите (например на NAS) mihomo. Там в proxy-groups можно указать дополнительный маршрут DIRECT, а стратегию выбора маршрута type: fallback. Тогда он сначала пробует прямой и если он не ололо, то переключается на ваше этосамое. При этом прямой маршрут идет через nfttables, которые как раз модифицирует b4.
Если b4 еще не запущен, то проб не проходит и михомо переключается на этсамое и таки показывает вам образовательные видео на тытрубе, пусть и медленно.
Тытрубу можно выделить в отдельную политику маршрутизации в mihomo, так же как и "ру траффик" и все что в голову придет - там тоже используются dat файл от v2ray, потому что это иделогическое продолжение clash, который тоже из той китайской тусовки. Но его (mihomo) отличительная особенность, то он умеет вычитывать vless и ss подписки, в отличие от 3x-ui. Это значит, что если ваш "провайдер" может выдавать вам сразу пулл серверов и если один отрыгнет, то вы этого даже не заметите, даже не придется перебивать параметры подключения к новым выходным узлам.

Это все вполне можно развернуть докер компоузом и парой километровых конфигов. Но отлаживать это достаточно долго, от пары дней до недели.
Не вкурсах можно ли это завести на роутере. Не смотря на наличие KN-1811 с arm, я решил хостить этсамое на обычном x86 NAS и пробелмы с производительностью или развалом сети (vpn в vpn или в дурилке) меня не касаются.

Главный профит - отсутствие бутылочного горлышка в виде стороннего сервера. Ты получаешь прямой пиринг до серверов ютуба без двойного роутинга и не платишь за аренду виртуалки где-нибудь в Нидерландах

Поставил попробовать, есть вопрос - без ключа --skip-tables оно ругалось в логи, дескать

Error: failed to add tables rules: exit status 1

и не поднимало веб-интерфейс. С ключом запустилось, веб интерфейс на 7000 порту поднялся, но попробовал Discovery для facebook.com, и все варианты оказались безрезультатны (подождал, пока все пройдут, включая несколько бонусных уровней.)

Это у меня что-то не завелось как надо, или шибко хорошо DPI работает?

Скрытый текст

═══════════════════════════════════════

Starting discovery for domain: facebook.com

═══════════════════════════════════════

Measuring network baseline using yandex.ru

Network baseline: 4.36 KB/s (2293 bytes in 513.014945ms)

Starting discovery for domain: facebook.com

Phase DNS: Checking DNS poisoning for facebook.com

DNS FAILED: system resolver error: lookup facebook.com: i/o timeout

DNS: retrying system resolver for facebook.com (attempt 2)

DNS FAILED: system resolver error: lookup facebook.com: i/o timeout

DNS: retrying system resolver for facebook.com (attempt 3)

DNS FAILED: system resolver error: lookup facebook.com: i/o timeout

DNS: system resolver returned IPs: []

DNS: reference IPs (DoH): [31.13.72.36]

✗ DNS poisoned: system IPs [] don't match reference [31.13.72.36]

DNS Discovery: no working DNS config found for facebook.com

Stored 1 target IPs for preset testing: [31.13.72.36]

DNS poisoned, no bypass - using direct IPs: [31.13.72.36]

Phase 1: Testing 29 strategy families

Testing 'no-bypass'...

→ FAILED (Get "https://facebook.com": context deadline exceeded)

Testing payload variants...

Testing 'proven-combo'...

→ FAILED (Get "https://facebook.com": context deadline exceeded)

Payload 1 (google): FAILED

Памяти оперативной ест не очень много - где-то 25-30 МБ заняло дополнительных.

аналогично, падает на старте и вдвижении правил в nft, дальше оно просто не заработает:

ошибки

Скрытый текст
Error: failed to add tables rules: failed to add rule to b4_chain: exit status 1
Usage:
  b4 [flags]

Flags:
      --clear-tables                  Perform only iptables/nftables cleanup and exit
      --config string                 Path to config file
      --error-file string             Path to error log file (empty disables) (default "/var/log/b4/errors.log")
  -h, --help                          help for b4
  -i, --instaflush                    Flush logs immediately (default true)
      --ipv4                          Enable IPv4 processing (default true)
      --ipv6                          Enable IPv6 processing
      --mark uint                     Packet mark value (default 32768) (default 32768)
      --queue-num int                 Netfilter queue number (default 537)
      --skip-tables                   Skip iptables/nftables setup on startup
      --syslog                        Enable syslog output
      --tables-monitor-interval int   Tables monitor interval in seconds (default 10, 0 to disable) (default 10)
      --threads int                   Number of worker threads (default 4)
      --verbose string                Set verbosity level (debug, trace, info, silent), default: info (default "info")
  -v, --version                       Show version and exit
      --web-port int                  Port for internal web server (0 disables) (default 7000)

Error: failed to add tables rules: failed to add rule to b4_chain: exit status 1
Error: failed to add tables rules: failed to add rule to b4_chain: exit status 1
Usage:
  b4 [flags]

Flags:
      --clear-tables                  Perform only iptables/nftables cleanup and exit
      --config string                 Path to config file
      --error-file string             Path to error log file (empty disables) (default "/var/log/b4/errors.log")
  -h, --help                          help for b4
  -i, --instaflush                    Flush logs immediately (default true)
      --ipv4                          Enable IPv4 processing (default true)
      --ipv6                          Enable IPv6 processing
      --mark uint                     Packet mark value (default 32768) (default 32768)
      --queue-num int                 Netfilter queue number (default 537)
      --skip-tables                   Skip iptables/nftables setup on startup
      --syslog                        Enable syslog output
      --tables-monitor-interval int   Tables monitor interval in seconds (default 10, 0 to disable) (default 10)
      --threads int                   Number of worker threads (default 4)
      --verbose string                Set verbosity level (debug, trace, info, silent), default: info (default "info")
  -v, --version                       Show version and exit
      --web-port int                  Port for internal web server (0 disables) (default 7000)

Error: failed to add tables rules: failed to add rule to b4_chain: exit status 1
Error: failed to add tables rules: failed to add rule to b4_chain: exit status 1
Usage:
  b4 [flags]

Flags:

дебаг запуск

Скрытый текст
[INIT] Logging initialized at level 3
2026/02/25 09:00:02.632509 [INFO] Starting B4 packet processor
2026/02/25 09:00:02.634884 [INFO] Log level set to debug
2026/02/25 09:00:02.634972 [INFO] Effective CLI flags:
2026/02/25 09:00:02.635036 [INFO]   --clear-tables=false --config=/etc/b4/b4.json --error-file=/var/log/b4/errors.log --help=false --instaflush=true --ipv4=true --ipv6=false --ma
rk=32768 --queue-num=537 --skip-tables=false --syslog=false --tables-monitor-interval=10 --threads=4 --verbose=debug --version=false --web-port=7000
2026/02/25 09:00:02.635090 [INFO] Loaded targets: 0 domains, 0 IPs across 1 sets
2026/02/25 09:00:02.635099 [TRACE] Clearing existing iptables/nftables rules
2026/02/25 09:00:02.639554 [TRACE] NFTABLES: clearing rules
2026/02/25 09:00:02.643555 [TRACE] Adding tables rules
2026/02/25 09:00:02.647634 [TRACE] Detected firewall backend: nftables
2026/02/25 09:00:02.647750 [TRACE] NFTABLES: adding rules
2026/02/25 09:00:02.883611 [TRACE] Created nftables table: b4_mangle
2026/02/25 09:00:02.892643 [TRACE] Created nftables chain: b4_chain
2026/02/25 09:00:02.901621 [TRACE] Created nftables chain: prerouting
2026/02/25 09:00:02.910601 [TRACE] Created nftables chain: output
2026/02/25 09:00:02.919670 [TRACE] Created nftables chain: postrouting
2026/02/25 09:00:02.919736 [TRACE] NFTABLES: adding rule to postrouting: [jump b4_chain]
2026/02/25 09:00:02.924610 [TRACE] NFTABLES: adding rule to output: [oifname "lo" return]
2026/02/25 09:00:02.929692 [TRACE] NFTABLES: adding rule to output: [meta mark 0x8000 accept]
2026/02/25 09:00:02.934644 [TRACE] NFTABLES: adding rule to output: [jump b4_chain]
2026/02/25 09:00:02.939970 [TRACE] NFTABLES: adding rule to b4_chain: [meta mark 0x8000 return]
2026/02/25 09:00:02.945004 [TRACE] NFTABLES: adding rule to b4_chain: [meta nfproto ipv4 tcp dport 443 ct original packets < 20 counter queue num 537-540 bypass]

uname -a Linux OpenWrt-emmc 6.12.66 #0 SMP Wed Jan 21 00:20:54 2026 aarch64 GNU/Linux

nftables v1.1.6 (Commodore Bullmoose #7)

@Jholinar куда еще подебажить?

привет, я чуть попозже гляну детальнее, но на первый взгляд скорее всего ему не хватает каких-то сетевых модулей ядра, которые отключены видимо в этой сборке OWRT.
Некоторые минимальные сборки OpenWRT могут не содержать необходимых модулей. 

# Обычный Linux
modprobe xt_connbytes
modprobe xt_NFQUEUE

# OpenWRT (если modprobe не работает)
insmod xt_connbytes
insmod xt_NFQUEUE


да, как будто нет этих модулей

 ll /lib64/modules/6.12.66/xt*
-rw-r--r--    1 root     root          4872 Jan 13 02:23 /lib64/modules/6.12.66/xt_LOG.ko
-rw-r--r--    1 root     root          8528 Jan 13 02:23 /lib64/modules/6.12.66/xt_TCPMSS.ko
-rw-r--r--    1 root     root          3680 Jan 13 02:23 /lib64/modules/6.12.66/xt_comment.ko
-rw-r--r--    1 root     root          5520 Jan 13 02:23 /lib64/modules/6.12.66/xt_limit.ko
-rw-r--r--    1 root     root          3800 Jan 13 02:23 /lib64/modules/6.12.66/xt_mac.ko
-rw-r--r--    1 root     root          4504 Jan 13 02:23 /lib64/modules/6.12.66/xt_mark.ko
-rw-r--r--    1 root     root          4824 Jan 13 02:23 /lib64/modules/6.12.66/xt_multiport.ko
-rw-r--r--    1 root     root          6664 Jan 13 02:23 /lib64/modules/6.12.66/xt_tcpudp.ko
-rw-r--r--    1 root     root          6248 Jan 13 02:23 /lib64/modules/6.12.66/xt_time.ko

осталось понять в каких пакетах они

xt_connbytesiptables-mod-conntrack-extra
xt_NFQUEUEkmod-ipt-nfqueue

вощем сам себе и ответил :) пошел пробовать

Завелось? Если да, то обновлю тогда доки по вашим комментам.
С опенврт все время так, нужно что-то довключать то тут то там.

увы, но нет

PS я записываю все что надо еще допилить, там есть пару других каментов, там оформулю все отдельно

Возможно проблема в том, что xt_NFQUEUE — это модуль для iptables, а b4 использует nftables API (nft_queue).

Проверьте модули nftables

lsmod | grep -iE "nft|nfnetlink"

Скорее всего не хватает nft_queue или nfnetlink_queue.

Решение: либо доустановить модули nftables, либо патчить b4 для использования iptables.

стоят

lsmod | grep -iE "nft|nfnetlink"
nf_conntrack           90112 15 xt_helper,xt_connmark,xt_connlimit,xt_connbytes,nf_conncount,xt_state,xt_conntrack,xt_CT,nft_redir,nft_nat,nft_masq,nft_flow_offload,nft_ct,nf_nat,nf_flow_table
nf_defrag_ipv4         12288  2 nft_tproxy,nf_conntrack
nf_defrag_ipv6         16384  2 nft_tproxy,nf_conntrack
nf_flow_table          28672  2 nf_flow_table_inet,nft_flow_offload
nf_nat                 40960  4 nft_redir,nft_nat,nft_masq,nft_chain_nat
nf_reject_ipv4         12288  3 ipt_REJECT,nft_reject_ipv4,nft_reject_inet
nf_reject_ipv6         12288  2 nft_reject_ipv6,nft_reject_inet
nf_tables             188416351 nft_tproxy,nft_compat,nft_fib_inet,nf_flow_table_inet,nft_reject_ipv6,nft_reject_ipv4,nft_reject_inet,nft_reject,nft_redir,nft_quota,nft_numgen,nft_nat,nft_masq,nft_log,nft_limit,nft_hash,nft_flow_offload,nft_fib_ipv6,nft_fib_ipv4,nft_fib,nft_ct,nft_chain_nat
nf_tproxy_ipv4         12288  1 nft_tproxy
nf_tproxy_ipv6         12288  1 nft_tproxy
nfnetlink              16384  4 ip_set,nfnetlink_queue,nft_compat,nf_tables
nfnetlink_queue        24576  0 
nft_chain_nat          12288  4 
nft_compat             16384  0 
nft_ct                 20480  8 
nft_fib                12288  3 nft_fib_inet,nft_fib_ipv6,nft_fib_ipv4
nft_fib_inet           12288  0 
nft_fib_ipv4           12288  1 nft_fib_inet
nft_fib_ipv6           12288  1 nft_fib_inet
nft_flow_offload       12288  0 
nft_hash               12288  0 
nft_limit              12288  1 
nft_log                12288  0 
nft_masq               12288  1 
nft_nat                12288  9 
nft_numgen             12288  0 
nft_quota              12288  0 
nft_redir              12288  1 
nft_reject             12288  3 nft_reject_ipv6,nft_reject_ipv4,nft_reject_inet
nft_reject_inet        12288  2 
nft_reject_ipv4        12288  0 
nft_reject_ipv6        12288  0 
nft_tproxy             12288  0 
x_tables               24576 25 xt_set,iptable_raw,xt_NFQUEUE,xt_recent,xt_helper,xt_connmark,xt_connlimit,xt_connbytes,xt_state,xt_conntrack,xt_CT,nft_compat,xt_time,xt_tcpudp,xt_multiport,xt_mark,xt_mac,xt_limit,xt_comment,xt_TCPMSS,xt_LOG,iptable_mangle,iptable_filter,ipt_REJECT,ip_tables

nft-core тоже стоит

apk add kmod-nft-core
OK: 85.9 MiB in 209 packages

upd - заработало. не хватало kmod-nft-queue, Спасибо!

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

До установки около 50 МБ было задействовано

Upd: через некоторое время отвалилось, перестало подключаться ;) В настройках ничего не менял. Странненько.

возможно ТСПУ видит стратегию обхода и блочит ее. на постоянку дорого держдать вероятно, поэтому чуток заработало

не помогло

lsmod |grep -iE 'xt_connbytes|xt_NFQUEUE'
nf_conntrack           90112 15 xt_helper,xt_connmark,xt_connlimit,xt_connbytes,nf_conncount,xt_state,xt_conntrack,xt_CT,nft_redir,nft_nat,nft_masq,nft_flow_offload,nft_ct,nf_nat,nf_flow_table
x_tables               24576 23 xt_NFQUEUE,xt_recent,xt_helper,xt_connmark,xt_connlimit,xt_connbytes,xt_state,xt_conntrack,xt_CT,nft_compat,xt_time,xt_tcpudp,xt_multiport,xt_mark,xt_mac,xt_limit,xt_comment,xt_TCPMSS,xt_LOG,iptable_mangle,iptable_filter,ipt_REJECT,ip_tables
xt_NFQUEUE             12288  0 
xt_connbytes           12288  0 

ошибка та же

Как правило, по умолчанию из коробки стоят "универсальные" стратегии в проектах вроде запрета, byebyedpi и b4 в ограниченном количестве. И они конечно могут не сработать на разных провайдерах. Наиболее выигрышный вариант: вручную заполнить тот json-файл дополнительными стратегиями с расширенным числом параметров и тестировать.

Универсальной таблетки от блокировок нет, кроме виртуальных частных сетей.

А никто еще не пробовал какой то автогенератор возможных стратегий делать (ну как fuzzy-тесты делают) а потом проверять что сработает? или я что-то не так понимаю?

Не видел ни разу в интернете. Этот автогенератор можно сделать на любом языке программирования, с применением циклов for, в каждом вложенном цикле прибавлять по новому параметру. Задание уровня выпускных школьных классов.
Есть одно но. Стратегий может получиться колоссальное количество, если так делать. Я вручную их составлял когда-то для byedpi и стратегий получилось около 60000 штук. Проверка их всех заняла полтора дня на ПК. Но на тот момент, это мне помогло подобрать стратегию, которая игнорировала DPI провайдера.

Стоить еще добавить, что возможны ложно-положительные срабатывания из-за хитрости цензоров: пропускать N килобайт без задержек и только потом включать замедление.

В настройках роутера укажите DNS сервер: 9.9.9.9 или 9.9.9.10.

Проблема возникает из-за того, что роутер обращается к DNS провайдера -> к "официальному, настоящему и испортозамещённому" DNS РКН, а у них удалены многие DNS записи заблокированных ресурсов.

Это видно в логах, но B4, судя по написанному - берет IP из другого источника с DoH и пытается достучаться по этому IP.

quad9 features
Не факт, что это самый быстрый DNS
В терминале(на коленке) для примера:

for dns in 9.9.9.9 9.9.9.10 8.8.4.4 8.8.8.8 1.1.1.1 1.0.0.1;
do echo "Testing $dns";
dig @$dns google.com +stats | grep "Query time"; echo ""; done

Не спорю, но 8.8.8.8 и 1.1.1.1, к примеру, отдают на api.themoviedb.org - 127.0.0.1 (заблокированно для запросов со стороны рф). А мы же хотим, что бы сразу было хорошо, верно?

Лучше всего завернуть DNS-запросы в тот же v2raya на роутере и резолвить домены через удаленный сервер, тогда ни один локальный перехват не страшен, и геодата будет работать корректно

А можно его использовать в docker в режиме прокси/VPN?

Проекты для обхода - это круто! (Больше хороших и разных!)

Есть несколько вопросов:

  1. Почему golang? Оно статическое, сильно жрёт место на роутере (а оно там ценнейший ресурс). Роутеры с большой флешкой - дорогие. Флешка воткнутая в роутер занимает порт и потенциальный источник проблем.

  2. Зачем делать свой веб-интрефейс, когда в том же openwrt есть luci и интеграции к нему?

  3. Инсталлятор через скрипт, почему - понимаю, но почему не обернуть в пакет?

Почему не прочитали внимательно? Это не OpenWRT, а универсальное решение.

В самом начале было написано про "на роутер", как одна из целей. В этом раскладе первый аргумент продолжает работать. Да и второй, имхо,тоже частично валиден, потому что интеграция в UI роутера сильно желателен.

Роутеры, в массе, к сожалению ограничены по доступным объёмам данных, которые на них могут храниться.

привет! спасибо. Комментарий по делу, попробую объяснить.

1. я тоже не супер иксперт сетевой, в свое время начал копаться в кишках xray-core, и очень запал на тему с тамашней библиотекой geosite/geoip данных. В какой-то момент подумал, а чего бы не запилить что-то похожее на запрет с возможностью на лету подгружать большие базы сообщества доменов и CIDRов, нежели, чем в ручную постоянно вводить эти списки. Ну и попутно захотелось подразобраться, как это все работает. Это по сути результат собственного ковыряния с какой-то небольшой целью. Ну голанг был очень удобен для этого. К тому же я не умею в си от слова совсем ).

2. Свой веб интерфейс - потому что он не только для опенврт, а вообще для линкуса в целом. Я в свое время сделал удобный плагин для xray для роутеров Асуса, так там обратные теперь запросы - "сделай общий веб-интерфейс, че только для Асуса-то" ).

3. Да надо бы теперь по хорошему, что-то я не думал, что такой большой интерес будет. Сам проект не сильно новый, как-то жил со скриптом отдельно и норм было ). Но, опять же, это надо мейнтейнить разные репы (типа opkg или apk) будет.

> Флешка воткнутая в роутер занимает порт и потенциальный источник проблем.

usb-хаб в помощь

Заканчивается это всё заменой роутера на ПК. только задача-то не в этом.

v2ray geosite/geoip базы напрямую для DPI-шаталки вот это реально киллер-фича. В классических решениях вечно приходится костылить bash-скрипты для крона, чтобы парсить листы и апдейтить ipset'ы. Тут подцепил категорию и забыл. Главное чтобы парсер этих баз не тек по памяти при обновлениях)

Интересно, будет ли на Keenetic конфликтовать с другими доп.пакетами для обработки трафика, типа Traffic Classification или Content Filter.

(подозреваю, что это неизбежно - то есть кинетик лучше "разгрузить" от необязательного).

А на какой-нибудь TP-Link 3.13.6 Build 110712 Rel.33710n (Firmware Version) WR1043ND v1 00000000 (Hardware Version) это возможно поставить?

А насколько трудно под bsd портировать? Использую pfsense, хочется на него подобное вкорячить. Или может уже есть?

скорее нет чем да. файрволы абсолютно разные, надо сидеть логику разбирать с 0 и собирать. дорого очень.

Интересное решение! С запретом я откровенно намучился - провайдер стал менять методы блока настолько часто, что я уже дольше времени искал стратегию, чем пользовался. Да и 16кб блоки обходить я замучился - с ними тяжелее всего, особенно автоматизировать процесс - так и не разобрался детально как это бороть, а для Ютуба, это самым важным оказалось

провайдер стал менять методы блока

Провайдер ничего не меняет, провайдеры не имеют отношения к ТСПУ, они только обязаны их у себя размещать и обеспечивать функционирование (в том числе не "пускать" трафик мимо), управляет ими РКН.

Чудеса. После отвала zapret в декабре, через данную штуку заработал обход ютуба. Но только с приведенным конфигом. Discovery у меня почемуто не работает. Ошибка постоянно +/- одна и таже:

→ FAILED (Get "https://rutracker.org/": dial tcp: lookup rutracker.org: i/o timeout)

Тут про рутрекер, но на ютуб также ругалось. Когда добавил сет из сабжа тытруба заработала, хотя dicovery по прежнему до неё достучаться неможет. Ставил на самопальный NAS (debian-based) раздающий Wifi

вообще дискавери - это чисто пробить какие-нибудь простенькие сайты (скжаем условное забаненное СМИ), ютуб все-таки несколько сложнее устроен. Просто вбить youtube.com он то непосредственно к домену может и пробьется, но дальше у гугла много цдн источников (типа googlevideo.com и тп)

По этому нужно еще мониторить раздел соединений и смотреть, что там куда ломится.

у меня именно так и заработало payload с mail.ru и тупо доменом youtube.com(dns у меня свои на уровне openwrt прописаны), при этом с 2025 года zapret и подобные не работали(перебор параметров тоже пробовал). Ваш нашел вариант работы через discovery. Очень актуально т.к. влесс чуть живой.

lookup rutracker.org: i/o timeout)

хотя dicovery по прежнему до неё достучаться неможет.

DNS-то, надеюсь, не операторский и за TLS? DoT или DoH.

В браузере (FF) DNS через HTTPS (Cloudflare) включен. Или речь про настройки wan / lan?

А давайте допустим, что я ни разу не видел ни zapret ни GoodbyDPI, а взял и поставил этот сервер на обычный ноутбук с линукс. А про то как работает DPI решил почитать послезавтра. Так как мне открыть страницу ютуба, с помощью этого?
Где ввести url и нажать кнопку "Open"? Или этот проект не для того о чем я спросил?

эта штука как и zapret/goodbyedpi для клиента прозрачна - администратор настроил и включил, а клиент заходит на ютуб как и раньше.

Автору респект!
Ради интереса воткнул на виртуалку с убунтой 22.04
ее сделал временно роутером - скорость с какой побежал ютуб - давно забытые впечатления :)
ничего не настраивал, тупо как шло из каробки, пров MGTS GPON

Т.е. ты виртуалку эту шлюзом и днс указал?

Да, эту виртуалку указал роутером
У меня на проксе давно уже крутится виртуальный роутер на OPENWRT, с настроенным vraya+ квн, вся семья юзает инет и заблоченные ресурсы в прозрачном режиме. Ну если есть такая возм, че не поставить то? сервак все равно 27/7 работает
В запарке ДНС остался от дефолтного роутера который провайдерский, прежде чем тебе ответить перевел на ип виртуалки с этим софтом - не заработало :), с провайдерским и ютуб и все остальное работает ;)

А как быть с полным блоком ресурсов? Где не dpi а полная блокировка? Практика показывает, что все ресурсы где режет dpi скоро окажутся в полном блоке без какой либо фильтрации.

@Jholinar файналли заработало. теперь замечания:

1) для opwenwrt надо bash на sh pзаменить в строке

wget -qO- https://raw.githubusercontent.com/DanielLavrushin/b4/main/install.sh | bash

2) добавить в зависимости owrt пакет coreutils-nohup, его нет в базовом образе

3) добавить в зависимости для owrt: kmod-nfnetlink-queue, kmod-ipt-nfqueue, kmod-ipt-raw, kmod-ipt-ipset, kmod-nft-queue, kmod-nft-core

1.37 както криво инсталлер определяет их наличие, возможно отличие apk/opkg:

=======================================
     B4 Universal Installer
=======================================

[WARNING] Missing packages: kmod-nfnetlink-queue kmod-ipt-nfqueue kmod-ipt-raw kmod-ipt-ipset kmod-nft-core kmod-nft-queue kmod-nf-conntrack-netlink iptables-mod-nfqueue jq wget-ssl coreutils-nohup
Install missing packages? (Y/n): y
[INFO   ] Installing kmod-nfnetlink-queue...
[WARNING] Failed: kmod-nfnetlink-queue
[INFO   ] Installing kmod-ipt-nfqueue...
[WARNING] Failed: kmod-ipt-nfqueue
[INFO   ] Installing kmod-ipt-raw...
[WARNING] Failed: kmod-ipt-raw
[INFO   ] Installing kmod-ipt-ipset...
[WARNING] Failed: kmod-ipt-ipset
[INFO   ] Installing kmod-nft-core...
[WARNING] Failed: kmod-nft-core
[INFO   ] Installing kmod-nft-queue...
[WARNING] Failed: kmod-nft-queue
[INFO   ] Installing kmod-nf-conntrack-netlink...
[WARNING] Failed: kmod-nf-conntrack-netlink
[INFO   ] Installing iptables-mod-nfqueue...
[WARNING] Failed: iptables-mod-nfqueue
[INFO   ] Installing jq...
[WARNING] Failed: jq
[INFO   ] Installing wget-ssl...
[WARNING] Failed: wget-ssl
[INFO   ] Installing coreutils-nohup...
[WARNING] Failed: coreutils-nohup

ну и комент про память. приложение его любит. не просто любит, а очень

204 Мб RAM на aarch64:

Диск:

123 Мб дополнительно к голому owrt:

Спасибо за инструмент и материалы, комменты тоже не менее информативные
У меня такой вопрос. Собираюсь менять свой кинетик на что-то другое, формировал год назад список, останавливался на:
GL-iNet Flint 2 (GL-MT6000)
ASUS TUF Gaming AX4200
ASUS TUF Gaming AX6000

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

любой x86_64 на самом деле с 2 портами, старый кинетик оставить для wifi

Огромное спасибо за ваш труд. Запрет2 совсем трудный для меня, ваш вариант легче=)

Не все удается заставить работать, но как альтернатива ВПН замечательная.

Привет. А приложение умеет поднимать прокси или просто перенаправляет трафик используя правила ? В последнее стал замечать что начали резать протоколы по скорости некоторые, а некоторые вообще отваливаются. Может есть что интересное в виде транспорта, а то похоже даже v**ss прикрыли - вроде работает, но скорость постоянно подает.

Получится же поставить решение на Raspberry Pi и выставить какой-нибудь порт, куда можно будет заворачивать трафик внутри домашней сети, или это именно роутерное решение?

Тоже стало интересно.. стукните пожалуйста, если протестируете или получите ответ раньше меня

В одной из последних версий добавлен SOCKS5-сервер, куда можно заворачивать трафик если вдруг стоит не на роутере.

NFQUEUE в связке с Go это гарантированный оверхед на переключение контекста между ядром и юзерспейсом при каждом пакете. Плюс сборщик мусора в фоне. На гигабитных каналах при большой плотности трафика эта связка может начать дропать пакеты или давить проц, особенно на слабых ARM/MIPS

При правильно написаных правилах nft достаточно завернуть первые несколько пакетов на обработку, после чего произойдет десинхронизация и трафик пойдёт напрямую как раньше безо всяких nfqueue. Так что оверхед только на начальном этапе коннекта, потом всё как обычно, поэтому не столь страшно. Завернуть в квн/прокси с шифрованием гораздо тяжелее, живём же.

Должно. zapret же работает.

Здравствуйте!

Спасибо за труд - на Keenetic Giga KN-1010 установилось, веб-морда доступна, но не работает из-за этого:

opkg_install_cmd: Cannot install package kmod-nft-queue.

opkg_install_cmd: Cannot install package kmod-nf-conntrack-netlink.

opkg_install_cmd: Cannot install package iptables-mod-nfqueue.

Выдает для всех Unknown package.

Подскажите, куда копать? Вижу по комментариям, что есть счастливчики, у которых на Кинетике завелось.

В веб-морде - Параметры системы - Изменить набор компонентов - добавить "Модули ядра подсистемы Netfilter", вроде как надо еще ipv6 поддержку добавить.

Но у меня не то, чтобы завелось - подобранная стратегия работает несколько минут, а потом всё, блочится. ;) При этом банальнейшая https прокся, даже не VPN, работает прекрасно.

Да стоит всё, но что-то не так:

Давно делали opkg update & opkg upgrade?

Прям вчера. И прошивка стоит последняя.

Обновил еще раз, всё равно

~ # opkg install kmod-nft-queue
Unknown package 'kmod-nft-queue'.
Collected errors:

  • opkg_install_cmd: Cannot install package kmod-nft-queue.

Так у меня он так тоже не ставится, но тем не менее - обсуждаемая софтина работает (недолго).

Да, пободался вчера - устойчивой работы не добился, максимум 10-15 минут и блочится. Убрал.

Добавьте в install.sh проверку, установлен ли вообще nft в системе. А то как-то странно получается, в конце скрипт спрашивает запустить ли сервис и пишет, что всё прошло успешно, а b4 есессно не запускается. Ещё я не понял, у меня в resolv.conf четыре единички, а b4 в начале поиска стратегий пишет что-то вроде "DNS poisoned" и сравнивает его с какими-то странными адресами от cloudflare. Вообще огромное спасибо за такой крутой инструмент, это дико удобная штука! На orangepi полёт отличный, кстати!

А можете подсказать несведующему в сетях, как завести это добро на Raspberry Pi и подобных? Чтобы роутер ходил через него, а там всё было хитро настроено.
Какой траффик оно способно переварить? Просто у тех же кинетиков очень дохлый процессор, и это будет работать крайне скверно.

Если объяснять подробно надо отдельную статью писать. Но, если вкратце, точно также install.sh и от рута устанавливаете в той ОС, что у вас стоит на одноплатнике. Чтобы роутер пропустить так как вы хотите нужно два ethernet порта, т.е. либо изначально покупать такую плату, либо как-то что-то прикручивать. И не забудьте, что при этом ваш raspberry должен будет в том числе взять на себя обязанности фаерволла. Я сделал иначе - воткнул одноплатник в роутер и сделал из него точку доступа. Гуглите как сделать мост между интерфейсами и как в linux создать беспроводную точку доступа (во многих одноплатниках wifi встроен, либо можно usb свисток использовать).

Установил, добавил RUNET Freedom, b4geoip, API токен

ютуб не заработал...

Тестирую в Discovery, получаю вот это:

Measuring network baseline using max.ru

Network baseline: 328.81 KB/s (69932 bytes in 207.697062ms)

Starting discovery for domain: www.youtube.com

Phase DNS: Checking DNS poisoning for www.youtube.com

DNS FAILED: system resolver error: lookup www.youtube.com: i/o timeout

DNS: retrying system resolver for www.youtube.com (attempt 2)

DNS FAILED: system resolver error: lookup www.youtube.com: i/o timeout

DNS: retrying system resolver for www.youtube.com (attempt 3)

DNS FAILED: system resolver error: lookup www.youtube.com: i/o timeout

DNS: system resolver returned IPs: []

DNS: reference IPs (DoH): [64.233.162.198]

✗ DNS poisoned: system IPs [] don't match reference [64.233.162.198]

Что не так с DNS?

В настройках b4 какой dns стоит? в идеале должен быть роутер указан, а на роутере должны быть настроены dot/doh. Либо надо adguard home поднимать

Здравствуйте. Мой смелый интернет провайдер обеспечивает работу YouTube. Стоит ли устанавливать Ваше решение на роутер для решения проблем с телегой и т.д.?

Установил на Keenetic Ultra, вроде все завелось, вот только на порту 7000 ничего не открывается. в бизибоксе при вводе b4 такой вывод:

/ # b4
[INIT] Logging initialized at level 1
2026/02/27 15:28:11.303942 [INFO] Starting B4 packet processor
2026/02/27 15:28:11.304974 [INFO] Effective CLI flags:
2026/02/27 15:28:11.305613 [INFO] --clear-tables=false --config= --error-file=/var/log/b4/errors.log --help=false --instaflush=true --ipv4=true --ipv6=false --mark=32768 --queue-num=537 --skip-tables=false --syslog=false --tables-monitor-interval=10 --threads=4 --verbose=info --version=false --web-port=7000
2026/02/27 15:28:11.306553 [INFO] Loaded targets: 0 domains, 0 IPs across 1 sets
2026/02/27 15:28:11.362194 [WARN] IPTABLES[iptables]: multiport module not available, using individual port rules
2026/02/27 15:28:11.653971 [INFO] IPTABLES: adding rules
2026/02/27 15:28:11.740842 [WARN] IPTABLES[iptables]: multiport module not available, using individual port rules

Куда копать?

У меня роутер Keenetic Skiper и для всех Keenetic есть важный нюанс, далеко не во всех моделях NFQUEUE встроен в прошивку, по итогу не на все модели возможно поставить B4

B4 для меня не стал очень полезным, но он позволил разблокировать сайты с которыми запрет не справился (ну или я не справился ахах), например, инста, chess.com, itch.io, а в шахматы например я играю постоянно, так что было приятно понимать что я наконец стабилизировал вопрос с моим любимым хобби, большое спасибо автору!

Подскажите, как данный скрипт практически использовать ?

Discovery сделал, Set создал... А дальше ?

Sign up to leave a comment.

Articles