dumbtv
dumbtv takes the ads, screen tracking and update nags out of your Fire TV over ADB. No root, none of your apps touched, every step can be undone. Free and open source.
翻译准备中
Обход DPI на роутерах Keenetic с помощью nfqws2
翻译准备中
AI 摘要 · README
安全Shell · MakefileGitHub @nfqws自行安装运营者未确认
试用过了吗? 点一下就好,无需登录。
正在加载完整 README。 以下为已保存的摘录。
Пакеты для установки nfqws2 на маршрутизаторы. Данный материал подготовлен в научно-технических целях. Использование предоставленных материалов в целях отличных от ознакомления может являться нарушением действующего законодательства. Автор не несет ответственности за неправомерное использование данного материала. Вы пользуетесь этой инструкцией на свой страх и риск! Автор не несёт ответственности за порчу оборудования и программного обеспечения, проблемы с доступом и потенцией. Подразумевается, что вы понимаете, что вы делаете.查看完整 README ↗
Пакеты для установки nfqws2 на маршрутизаторы.
Новая улучшенная версия nfqws-keenetic
[!IMPORTANT] Данный материал подготовлен в научно-технических целях. Использование предоставленных материалов в целях отличных от ознакомления может являться нарушением действующего законодательства. Автор не несет ответственности за неправомерное использование данного материала.
[!WARNING] Вы пользуетесь этой инструкцией на свой страх и риск!
Автор не несёт ответственности за порчу оборудования и программного обеспечения, проблемы с доступом и потенцией. Подразумевается, что вы понимаете, что вы делаете.
Изначально написано для роутеров Keenetic/Netcraze с установленным entware. Однако, работоспособность также была проверена на прошивках Padavan и OpenWRT (читайте ниже).
Списки проверенного оборудования собираем в отдельной теме.
Поделиться опытом можно в разделе Discussions или в чате.
nfqws2 - утилита для модификации TCP соединения на уровне пакетов, работает через обработчик очереди NFQUEUE и raw сокеты.
Почитать подробнее можно на странице авторов.
Прочитайте инструкцию полностью, прежде, чем начать что-то делать!
Рекомендуется игнорировать предложенные провайдером адреса DNS-серверов. Для этого в интерфейсе роутера отметьте пункты "игнорировать DNS от провайдера" в настройках IPv4 и IPv6.
Вместе с этим рекомендуется настроить использование DoT/DoH.
Установить entware на маршрутизатор по инструкции на встроенную память роутера или на USB-накопитель.
Через web-интерфейс Keenetic/Netcraze установить пакет Модули ядра подсистемы Netfilter (OPKG > Kernel modules for Netfilter). На старых прошивках он доступен к установке только после выбора компонента Протокол IPv6 (Network functions > IPv6).
В разделе "Интернет-фильтры" отключить все сторонние фильтры (NextDNS, SkyDNS, Яндекс DNS и другие).
Все дальнейшие команды выполняются не в cli роутера, а в среде entware. Подключиться в неё можно несколькими способами:
telnet 192.168.1.1, а потом exec sh.root, пароль по умолчанию - keenetic, порт - 222 или 22). Для этого в терминале написать ssh 192.168.1.1 -l root -p 222.Перед установкой удалите nfqws-keenetic (конфиги можно сохранить)
opkg remove nfqws-keenetic-web nfqws-keenetic
Установите необходимые зависимости
opkg update
opkg install ca-certificates wget-ssl
opkg remove wget-nossl
Установите opkg-репозиторий в систему
mkdir -p /opt/etc/opkg
echo "src/gz nfqws2-keenetic https://nfqws.github.io/nfqws2-keenetic/all" > /opt/etc/opkg/nfqws2-keenetic.conf
Репозиторий универсальный, поддерживаемые архитектуры: mipsel, mips, mips64, aarch64, armv7, x86, x86_64.
mips-3.4 Keenetic Giga SE (KN-2410), Ultra SE (KN-2510), DSL (KN-2010), Launcher DSL (KN-2012), Duo (KN-2110), Skipper DSL (KN-2112), Hopper DSL (KN-3610); Zyxel Keenetic DSL, LTE, VOX
mkdir -p /opt/etc/opkg
echo "src/gz nfqws2-keenetic https://nfqws.github.io/nfqws2-keenetic/mips" > /opt/etc/opkg/nfqws2-keenetic.conf
mipsel-3.4 Keenetic 4G (KN-1212), Omni (KN-1410), Extra (KN-1710/1711/1713), Giga (KN-1010/1011), Ultra (KN-1810), Viva (KN-1910/1912/1913), Hero 4G (KN-2310/2311), Giant (KN-2610), Skipper 4G (KN-2910), Hopper (KN-3810); Zyxel Keenetic II / III, Extra, Extra II, Giga II / III, Omni, Omni II, Viva, Ultra, Ultra II
mkdir -p /opt/etc/opkg
echo "src/gz nfqws2-keenetic https://nfqws.github.io/nfqws2-keenetic/mipsel" > /opt/etc/opkg/nfqws2-keenetic.conf
aarch64-3.10 Keenetic Peak (KN-2710), Ultra (KN-1811), Hopper (KN-3811), Hopper SE (KN-3812), Giga (KN-1012)
mkdir -p /opt/etc/opkg
echo "src/gz nfqws2-keenetic https://nfqws.github.io/nfqws2-keenetic/aarch64" > /opt/etc/opkg/nfqws2-keenetic.conf
Установите пакет
opkg update
opkg install nfqws2-keenetic
Установите веб-интерфейс (опционально)
opkg update
opkg upgrade nfqws2-keenetic
opkg remove --autoremove nfqws2-keenetic
opkg info nfqws2-keenetic
На Keenetic/Netcraze можно создать политику доступа NFQWS (Приоритеты подключений – Политики доступа в интернет) и после перезапуска nfqws2-keenetic будет работать только для устройств из этой политики. Не забудьте поставить галочку на интерфейсе провайдера в созданной политике.
Можно сделать политику исключения, добавив в конфиг POLICY_EXCLUDE=1. Тогда будет обрабатываться трафик для всех устройств, кроме тех, что добавлены в политику NFQWS.
Имя политики можно изменить в конфиге, параметр POLICY_NAME.
Если политика с таким именем не найдена, будет обрабатываться весь трафик.
opkgУстановите необходимые зависимости
opkg update
opkg install ca-certificates wget-ssl
opkg remove wget-nossl
Установите публичный ключ репозитория
wget -O "/tmp/nfqws2-keenetic.pub" "https://nfqws.github.io/nfqws2-keenetic/openwrt/nfqws2-keenetic.pub"
opkg-key add /tmp/nfqws2-keenetic.pub
Установите репозиторий в систему
echo "src/gz nfqws2-keenetic https://nfqws.github.io/nfqws2-keenetic/openwrt" > /etc/opkg/nfqws2-keenetic.conf
Репозиторий универсальный, поддерживаемые архитектуры: mipsel, mips, mips64, aarch64, armv7, x86, x86_64.
Для добавления поддержки новых устройств, создайте Feature Request
Установите пакет
opkg update
opkg install nfqws2-keenetic
Установите веб-интерфейс (опционально)
apkУстановите необходимые зависимости
apk --update-cache add ca-certificates wget-ssl
apk del wget-nossl
Установите публичный ключ репозитория
wget -O "/etc/apk/keys/nfqws2-keenetic.pem" "https://nfqws.github.io/nfqws2-keenetic/openwrt/nfqws2-keenetic.pem"
Установите репозиторий в систему
echo "https://nfqws.github.io/nfqws2-keenetic/openwrt/packages.adb" > /etc/apk/repositories.d/nfqws2-keenetic.list
Репозиторий универсальный, поддерживаемые архитектуры: mipsel, mips, mips64, aarch64, armv7, x86, x86_64.
Для добавления поддержки новых устройств, создайте Feature Request
Установите пакет
apk --update-cache add nfqws2-keenetic
Установите веб-интерфейс (опционально)
[!NOTE] NB: Все пути файлов, описанные в этой инструкции, начинающиеся с
/opt, на OpenWRT будут начинаться с корня/. Например конфиг расположен в/etc/nfqws2/nfqws2.confДля запуска/остановки используйте команду
service nfqws2-keenetic {start|stop|restart|reload|status}
Файл настроек расположен по пути /opt/etc/nfqws2/nfqws2.conf. Для редактирования можно воспользоваться встроенным редактором vi или установить nano.
# Интерфейс провайдера. Обычно `eth3` или `eth2.2` для проводного соединения, и `ppp0` для PPPoE
# Заполняется автоматически при установке
# Можно ввести несколько интерфейсов, например ISP_INTERFACE="eth3 nwg1"
# Для поиска интерфейса можно воспользоваться командами `route` или `ifconfig`
ISP_INTERFACE="..."
# Аргументы запуска nfqws2, сюда добавляйте ваши lua скрипты
NFQWS_BASE_ARGS="..."
# Стратегии обработки HTTPS и QUIC трафика
NFQWS_ARGS="..."
NFQWS_ARGS_QUIC="..."
# Стратегия обработки UDP трафика (не использует параметры из NFQWS_EXTRA_ARGS)
NFQWS_ARGS_UDP="..."
# Режим работы (auto, list, all)
NFQWS_EXTRA_ARGS="..."
# IP-списки
NFQWS_ARGS_IPSET="..."
# Дополнительные стратегии
NFQWS_ARGS_CUSTOM="..."
# Обрабатывать ли IPv6 соединения
IPV6_ENABLED=0|1
# TCP порты для iptables
# Оставьте пустым, если нужно отключить обработку TCP
# Добавьте порт 80 для обработки HTTP (TCP_PORTS=443,80)
TCP_PORTS=443(,80)
# UDP порты для iptables
# Оставьте пустым, если нужно отключить обработку UDP
# Удалите порт 443, если не нужно обрабатывать QUIC
UDP_PORTS=443(,50000:50099)
# Политика доступа (только для Keenetic/Netcraze)
POLICY_NAME="nfqws"
# Режим работы политики доступа
# 0 - обрабатывается трафик только для устройств в политике
# 1 - обрабатывается трафик для всех устройств, кроме добавленных в политику
POLICY_EXCLUDE=0|1
# Файл для записи дебаг-лога
LOG_DEBUG_PATH="@/opt/var/log/nfqws2-debug.log"
# Логирование в Syslog
LOG_LEVEL=0|1
Стратегии применяются ко всем доменам из user.list и auto.list, за исключением доменов из exclude.list.
В конфиге есть 3 варианта параметра NFQWS_EXTRA_ARGS - это режим работы nfqws2:
$MODE_LIST будут обрабатываться только домены из файла user.list$MODE_AUTO кроме этого будут автоматически определяться недоступные домены и добавляться в список, по которому nfqws обрабатывает трафик. Домен будет добавлен, если за 60 секунд будет 3 раза определено, что ресурс недоступен$MODE_ALL будет обрабатываться весь трафик кроме доменов из списка exclude.listТакже, есть два IP-списка: ipset.list и ipset_exclude.list.
Адреса из списков применяются в любых режимах работы.
/opt/etc/nfqws2/nfqws2.conf/opt/etc/init.d/S51nfqws2 {start|stop|restart|reload|status}/opt/etc/nfqws2/lists/user.list (один домен на строке, поддомены учитываются автоматически)/opt/etc/nfqws2/lists/auto.list/opt/var/log/nfqws2.log/opt/etc/nfqws2/lists/exclude.list (один домен на строке, поддомены учитываются автоматически)ipset.list (на каждой строчке ip или cidr ipv4, или ipv6)ipset_exclude.listiptables-save | grep nfqws
Вы должны увидеть похожие строки
-A nfqws_post -o eth3 -p tcp -m mark ! --mark 0x40000000/0x40000000 -m multiport --dports 443,2053,2083,2087,2096,8443 -m tcp --tcp-flags RST RST -j NFQUEUE --queue-num 300 --queue-bypass
Проверка доступности легко обманывает. Ниже — наблюдения, собранные при настройке пакета на домашнем маршрутизаторе (Netcraze NC-1812).
curl. Они дают противоположные результаты:
один и тот же сайт открывался в браузере при обрыве у curl, и наоборот — curl
получал 200 там, где браузер рисовал белую страницу. Причина простая: curl тянет
HTML одного адреса, а браузер идёт на десятки хостов статики, и TLS-стек у них разный.GET.ipset.listЕсли наполняете ipset.list самостоятельно, не кладите туда целые /13 и подобные
диапазоны CDN. Замер на моей сети: хосты внутри 104.16.0.0/13 и 172.64.0.0/13 дали
70,8 % неудачных TLS-рукопожатий (34 из 48 прогонов), хосты вне этих диапазонов —
0 % (0 из 69). При этом 162.158.0.0/15 не давал сбоев ни разу (9 из 9). Похоже на
bol-van/zapret#1756: при сбое пересборки
TLS оригинальный пакет уходит раньше подменённого, и вместо ожидаемого результата
получается таймаут рукопожатия.
Лечится добавлением проблемного диапазона в ipset_exclude.list. Править сам ipset.list
смысла нет — при следующем обновлении списка правка потеряется.
Если домен публикует DNS-запись HTTPS (RR тип 65) с параметром ech, клиент шифрует имя
хоста в ClientHello. nfqws2 в этом случае имя не видит и не может сопоставить соединение
со списками: профили, привязанные к user.list, exclude.list и другим хостлистам, для
такого домена не выбираются, и правки этих файлов на него не влияют.
Проверить домен можно так:
opkg install bind-dig # Entware и OpenWRT до 24.10 включительно
apk add bind-dig # OpenWRT 25.xx и Snapshot
dig +short HTTPS example.com
Если в выводе есть ech=, имя хоста шифруется. Ставить пакет на роутер не обязательно:
запрос можно выполнить с любой машины, где есть dig.
Записи различаются даже у соседних поддоменов одной зоны — проверено 17.09.2026, 3 запроса на домен:
| Домен | HTTPS RR | ech |
|---|---|---|
cloudflare.com | есть | нет |
developers.cloudflare.com | есть | нет |
research.cloudflare.com | есть | есть |
Поэтому проверять нужно тот домен, к которому реально обращается клиент, а не тот, что
виден в адресной строке: браузер и десктопное приложение одного сервиса часто ходят на
разные поддомены. Для доменов с ech настройка по имени неприменима; остаётся работа
по адресам (ipset.list) либо отключение ECH на стороне клиента, если он это позволяет.
iptables: No chain/target/match by that name
Не установлен пакет "Модули ядра подсистемы Netfilter". На Keenetic/Netcraze он появляется в списке пакетов только после установки "Протокол IPv6"can't initialize ip6tables table и/или Perhaps ip6tables or your kernel needs to be upgraded
Не установлен пакет "Протокол IPv6". Также, проблема может появляться на старых прошивках 2.xx, выключите поддержку IPv6 в конфиге NFQWS2readlink: not found, dirname: not found
Обычно возникают не на кинетиках. Решение - установить busybox: opkg install busybox или отдельно пакеты opkg install coreutils-readlink coreutils-dirnameFailed to download the package list from https://nfqws.github.io/nfqws2-keenetic/all/Packages.gz
Скорее всего не устеновлен пакет wget-ssl. Если вы уверены, что он установлен – переустановите его: opkg install --force-reinstall wget-sslМожно добавить дополнительные стратегии в опции NFQWS_ARGS_CUSTOM в конфиге и разделять их параметром --new.
Например, стратегия ниже применит опцию --dpi-desync=fake,split2 для HTTPS запросов к доменам из custom.list,
а для HTTP запросов будет использовать --dpi-desync=disorder2 --dpi-desync-fooling=md5sig,badseq:
NFQWS_ARGS_CUSTOM="--filter-tcp=443 --dpi-desync=fake,split2 --hostlist=custom.list --new --filter-tcp=80 --dpi-desync=disorder2 --dpi-desync-fooling=md5sig,badseq"
Нравится проект? Поддержи автора здесь или тут. Купи ему немного :beers: или :coffee:!