Пакеты для установки nfqws на маршрутизаторы.
[!CAUTION] Проект больше не получает обновления.
Все новые возможности будут появляться в новом
nfqws2-keenetic.
[!IMPORTANT] Данный материал подготовлен в научно-технических целях. Использование предоставленных материалов в целях отличных от ознакомления может являться нарушением действующего законодательства. Автор не несет ответственности за неправомерное использование данного материала.
[!WARNING] Вы пользуетесь этой инструкцией на свой страх и риск!
Автор не несёт ответственности за порчу оборудования и программного обеспечения, проблемы с доступом и потенцией. Подразумевается, что вы понимаете, что вы делаете.
Изначально написано для роутеров Keenetic/Netcraze с установленным entware. Однако, работоспособность также была проверена на прошивках Padavan и OpenWRT (читайте ниже).
Списки проверенного оборудования собираем в отдельной теме.
Поделиться опытом можно в разделе Discussions или в чате.
nfqws - утилита для модификации TCP соединения на уровне пакетов, работает через обработчик очереди NFQUEUE и raw сокеты.
Почитать подробнее можно на странице авторов (ищите по ключевому слову nfqws).
Прочитайте инструкцию полностью, прежде, чем начать что-то делать!
Рекомендуется игнорировать предложенные провайдером адреса 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.Установите необходимые зависимости
opkg update
opkg install ca-certificates wget-ssl
opkg remove wget-nossl
Установите opkg-репозиторий в систему
mkdir -p /opt/etc/opkg
echo "src/gz nfqws-keenetic https://nfqws.github.io/nfqws-keenetic/all" > /opt/etc/opkg/nfqws-keenetic.conf
Репозиторий универсальный, поддерживаемые архитектуры: mipsel, mips, mips64, aarch64, armv7, x86, x86_64, lexra.
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 nfqws-keenetic https://nfqws.github.io/nfqws-keenetic/mips" > /opt/etc/opkg/nfqws-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 nfqws-keenetic https://nfqws.github.io/nfqws-keenetic/mipsel" > /opt/etc/opkg/nfqws-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 nfqws-keenetic https://nfqws.github.io/nfqws-keenetic/aarch64" > /opt/etc/opkg/nfqws-keenetic.conf
Установите пакет
opkg update
opkg install nfqws-keenetic
Установите веб-интерфейс (опционально)
opkg update
opkg upgrade nfqws-keenetic
opkg remove --autoremove nfqws-keenetic
opkg info nfqws-keenetic
На Keenetic/Netcraze можно создать политику доступа NFQWS (Приоритеты подключений – Политики доступа в интернет)
и после перезапуска nfqws-keenetic будет работать только для устройств из этой политики.
Не забудьте поставить галочку на интерфейсе провайдера в созданной политике.
Можно сделать политику исключения, добавив в конфиг POLICY_EXCLUDE=1. Тогда будет обрабатываться трафик для всех устройств, кроме тех, что добавлены в политику NFQWS.
Имя политики можно изменить в конфиге, параметр POLICY_NAME.
Если политика с таким именем не найдена, будет обрабатываться весь трафик.
opkgУстановите необходимые зависимости
opkg update
opkg install ca-certificates wget-ssl
opkg remove wget-nossl
Установите публичный ключ репозитория
wget -O "/tmp/nfqws-keenetic.pub" "https://nfqws.github.io/nfqws-keenetic/openwrt/nfqws-keenetic.pub"
opkg-key add /tmp/nfqws-keenetic.pub
Установите репозиторий в систему
echo "src/gz nfqws-keenetic https://nfqws.github.io/nfqws-keenetic/openwrt" > /etc/opkg/nfqws-keenetic.conf
Репозиторий универсальный, поддерживаемые архитектуры: mipsel, mips, mips64, aarch64, armv7, x86, x86_64, lexra.
Для добавления поддержки новых устройств, создайте Feature Request
Установите пакет
opkg update
opkg install nfqws-keenetic
Установите веб-интерфейс (опционально)
apkУстановите необходимые зависимости
apk --update-cache add ca-certificates wget-ssl
apk del wget-nossl
Установите публичный ключ репозитория
wget -O "/etc/apk/keys/nfqws-keenetic.pem" "https://nfqws.github.io/nfqws-keenetic/openwrt/nfqws-keenetic.pem"
Установите репозиторий в систему
echo "https://nfqws.github.io/nfqws-keenetic/openwrt/packages.adb" > /etc/apk/repositories.d/nfqws-keenetic.list
Репозиторий универсальный, поддерживаемые архитектуры: mipsel, mips, mips64, aarch64, armv7, x86, x86_64, lexra.
Для добавления поддержки новых устройств, создайте Feature Request
Установите пакет
apk --update-cache add nfqws-keenetic
Установите веб-интерфейс (опционально)
[!NOTE] NB: Все пути файлов, описанные в этой инструкции, начинающиеся с
/opt, на OpenWRT будут начинаться с корня/. Например конфиг расположен в/etc/nfqws/nfqws.confДля запуска/остановки используйте команду
service nfqws-keenetic {start|stop|restart|reload|status}
Файл настроек расположен по пути /opt/etc/nfqws/nfqws.conf. Для редактирования можно воспользоваться встроенным редактором vi или установить nano.
# Интерфейс провайдера. Обычно `eth3` или `eth2.2` для проводного соединения, и `ppp0` для PPPoE
# Заполняется автоматически при установке
# Можно ввести несколько интерфейсов, например ISP_INTERFACE="eth3 nwg1"
# Для поиска интерфейса можно воспользоваться командами `route` или `ifconfig`
ISP_INTERFACE="..."
# Стратегии обработки 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
# Логирование в Syslog
LOG_LEVEL=0|1
Стратегии применяются ко всем доменам из user.list и auto.list, за исключением доменов из exclude.list.
В конфиге есть 3 варианта параметра NFQWS_EXTRA_ARGS - это режим работы nfqws:
$MODE_LIST будут обрабатываться только домены из файла user.list$MODE_AUTO кроме этого будут автоматически определяться недоступные домены и добавляться в список, по которому nfqws обрабатывает трафик. Домен будет добавлен, если за 60 секунд будет 3 раза определено, что ресурс недоступен$MODE_ALL будет обрабатываться весь трафик кроме доменов из списка exclude.listТакже, есть два IP-списка: ipset.list и ipset_exclude.list.
Адреса из списков применяются в любых режимах работы.
/opt/etc/nfqws/nfqws.conf/opt/etc/init.d/S51nfqws {start|stop|restart|reload|status}/opt/etc/nfqws/user.list (один домен на строке, поддомены учитываются автоматически)/opt/etc/nfqws/auto.list/opt/var/log/nfqws.log/opt/etc/nfqws/exclude.list (один домен на строке, поддомены учитываются автоматически)ipset.list (на каждой строчке ip или cidr ipv4, или ipv6)ipset_exclude.listiptables-save | grep "queue-num 200"
Вы должны увидеть похожие строки
-A POSTROUTING -o eth3 -p tcp -m tcp --dport 443 -m connbytes --connbytes 1:6 --connbytes-mode packets --connbytes-dir original -m mark ! --mark 0x40000000/0x40000000 -j NFQUEUE --queue-num 200 --queue-bypass
Межсетевой экран → Домашняя сеть → Добавить правило
Включить правило: Включено
Описание: Блокировать QUIC
Действие: Запретить
Протокол: UDP
Номер порта назначения: Равен 443
Остальные параметры оставляем без изменений
iptables: No chain/target/match by that namecan't initialize ip6tables table и/или Perhaps ip6tables or your kernel needs to be upgradedreadlink: not found, dirname: not foundopkg install busybox или отдельно пакеты opkg install coreutils-readlink coreutils-dirnameFailed to download the package list from https://nfqws.github.io/nfqws-keenetic/all/Packages.gzwget-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"
Запустить скрипт и следовать его инструкциям
opkg install curl
/bin/sh -c "$(curl -fsSL https://github.com/nfqws/nfqws-keenetic/raw/master/common/strategy.sh)"
Подробнее можно почитать на исходной странице
Найденную стратегию вписать в конфиге /opt/etc/nfqws/nfqws.conf в параметр NFQWS_ARGS
Нравится проект? Поддержи автора здесь или тут. Купи ему немного 🍻 или ☕!
4 followers · starred Sep 2024
5 followers · starred Mar 2025
35 followers · starred Dec 2024
Пакеты для установки nfqws на маршрутизаторы.
[!CAUTION] Проект больше не получает обновления.
Все новые возможности будут появляться в новом
nfqws2-keenetic.
[!IMPORTANT] Данный материал подготовлен в научно-технических целях. Использование предоставленных материалов в целях отличных от ознакомления может являться нарушением действующего законодательства. Автор не несет ответственности за неправомерное использование данного материала.
[!WARNING] Вы пользуетесь этой инструкцией на свой страх и риск!
Автор не несёт ответственности за порчу оборудования и программного обеспечения, проблемы с доступом и потенцией. Подразумевается, что вы понимаете, что вы делаете.
Изначально написано для роутеров Keenetic/Netcraze с установленным entware. Однако, работоспособность также была проверена на прошивках Padavan и OpenWRT (читайте ниже).
Списки проверенного оборудования собираем в отдельной теме.
Поделиться опытом можно в разделе Discussions или в чате.
nfqws - утилита для модификации TCP соединения на уровне пакетов, работает через обработчик очереди NFQUEUE и raw сокеты.
Почитать подробнее можно на странице авторов (ищите по ключевому слову nfqws).
Прочитайте инструкцию полностью, прежде, чем начать что-то делать!
Рекомендуется игнорировать предложенные провайдером адреса 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.Установите необходимые зависимости
opkg update
opkg install ca-certificates wget-ssl
opkg remove wget-nossl
Установите opkg-репозиторий в систему
mkdir -p /opt/etc/opkg
echo "src/gz nfqws-keenetic https://nfqws.github.io/nfqws-keenetic/all" > /opt/etc/opkg/nfqws-keenetic.conf
Репозиторий универсальный, поддерживаемые архитектуры: mipsel, mips, mips64, aarch64, armv7, x86, x86_64, lexra.
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 nfqws-keenetic https://nfqws.github.io/nfqws-keenetic/mips" > /opt/etc/opkg/nfqws-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 nfqws-keenetic https://nfqws.github.io/nfqws-keenetic/mipsel" > /opt/etc/opkg/nfqws-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 nfqws-keenetic https://nfqws.github.io/nfqws-keenetic/aarch64" > /opt/etc/opkg/nfqws-keenetic.conf
Установите пакет
opkg update
opkg install nfqws-keenetic
Установите веб-интерфейс (опционально)
opkg update
opkg upgrade nfqws-keenetic
opkg remove --autoremove nfqws-keenetic
opkg info nfqws-keenetic
На Keenetic/Netcraze можно создать политику доступа NFQWS (Приоритеты подключений – Политики доступа в интернет)
и после перезапуска nfqws-keenetic будет работать только для устройств из этой политики.
Не забудьте поставить галочку на интерфейсе провайдера в созданной политике.
Можно сделать политику исключения, добавив в конфиг POLICY_EXCLUDE=1. Тогда будет обрабатываться трафик для всех устройств, кроме тех, что добавлены в политику NFQWS.
Имя политики можно изменить в конфиге, параметр POLICY_NAME.
Если политика с таким именем не найдена, будет обрабатываться весь трафик.
opkgУстановите необходимые зависимости
opkg update
opkg install ca-certificates wget-ssl
opkg remove wget-nossl
Установите публичный ключ репозитория
wget -O "/tmp/nfqws-keenetic.pub" "https://nfqws.github.io/nfqws-keenetic/openwrt/nfqws-keenetic.pub"
opkg-key add /tmp/nfqws-keenetic.pub
Установите репозиторий в систему
echo "src/gz nfqws-keenetic https://nfqws.github.io/nfqws-keenetic/openwrt" > /etc/opkg/nfqws-keenetic.conf
Репозиторий универсальный, поддерживаемые архитектуры: mipsel, mips, mips64, aarch64, armv7, x86, x86_64, lexra.
Для добавления поддержки новых устройств, создайте Feature Request
Установите пакет
opkg update
opkg install nfqws-keenetic
Установите веб-интерфейс (опционально)
apkУстановите необходимые зависимости
apk --update-cache add ca-certificates wget-ssl
apk del wget-nossl
Установите публичный ключ репозитория
wget -O "/etc/apk/keys/nfqws-keenetic.pem" "https://nfqws.github.io/nfqws-keenetic/openwrt/nfqws-keenetic.pem"
Установите репозиторий в систему
echo "https://nfqws.github.io/nfqws-keenetic/openwrt/packages.adb" > /etc/apk/repositories.d/nfqws-keenetic.list
Репозиторий универсальный, поддерживаемые архитектуры: mipsel, mips, mips64, aarch64, armv7, x86, x86_64, lexra.
Для добавления поддержки новых устройств, создайте Feature Request
Установите пакет
apk --update-cache add nfqws-keenetic
Установите веб-интерфейс (опционально)
[!NOTE] NB: Все пути файлов, описанные в этой инструкции, начинающиеся с
/opt, на OpenWRT будут начинаться с корня/. Например конфиг расположен в/etc/nfqws/nfqws.confДля запуска/остановки используйте команду
service nfqws-keenetic {start|stop|restart|reload|status}
Файл настроек расположен по пути /opt/etc/nfqws/nfqws.conf. Для редактирования можно воспользоваться встроенным редактором vi или установить nano.
# Интерфейс провайдера. Обычно `eth3` или `eth2.2` для проводного соединения, и `ppp0` для PPPoE
# Заполняется автоматически при установке
# Можно ввести несколько интерфейсов, например ISP_INTERFACE="eth3 nwg1"
# Для поиска интерфейса можно воспользоваться командами `route` или `ifconfig`
ISP_INTERFACE="..."
# Стратегии обработки 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
# Логирование в Syslog
LOG_LEVEL=0|1
Стратегии применяются ко всем доменам из user.list и auto.list, за исключением доменов из exclude.list.
В конфиге есть 3 варианта параметра NFQWS_EXTRA_ARGS - это режим работы nfqws:
$MODE_LIST будут обрабатываться только домены из файла user.list$MODE_AUTO кроме этого будут автоматически определяться недоступные домены и добавляться в список, по которому nfqws обрабатывает трафик. Домен будет добавлен, если за 60 секунд будет 3 раза определено, что ресурс недоступен$MODE_ALL будет обрабатываться весь трафик кроме доменов из списка exclude.listТакже, есть два IP-списка: ipset.list и ipset_exclude.list.
Адреса из списков применяются в любых режимах работы.
/opt/etc/nfqws/nfqws.conf/opt/etc/init.d/S51nfqws {start|stop|restart|reload|status}/opt/etc/nfqws/user.list (один домен на строке, поддомены учитываются автоматически)/opt/etc/nfqws/auto.list/opt/var/log/nfqws.log/opt/etc/nfqws/exclude.list (один домен на строке, поддомены учитываются автоматически)ipset.list (на каждой строчке ip или cidr ipv4, или ipv6)ipset_exclude.listiptables-save | grep "queue-num 200"
Вы должны увидеть похожие строки
-A POSTROUTING -o eth3 -p tcp -m tcp --dport 443 -m connbytes --connbytes 1:6 --connbytes-mode packets --connbytes-dir original -m mark ! --mark 0x40000000/0x40000000 -j NFQUEUE --queue-num 200 --queue-bypass
Межсетевой экран → Домашняя сеть → Добавить правило
Включить правило: Включено
Описание: Блокировать QUIC
Действие: Запретить
Протокол: UDP
Номер порта назначения: Равен 443
Остальные параметры оставляем без изменений
iptables: No chain/target/match by that namecan't initialize ip6tables table и/или Perhaps ip6tables or your kernel needs to be upgradedreadlink: not found, dirname: not foundopkg install busybox или отдельно пакеты opkg install coreutils-readlink coreutils-dirnameFailed to download the package list from https://nfqws.github.io/nfqws-keenetic/all/Packages.gzwget-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"
Запустить скрипт и следовать его инструкциям
opkg install curl
/bin/sh -c "$(curl -fsSL https://github.com/nfqws/nfqws-keenetic/raw/master/common/strategy.sh)"
Подробнее можно почитать на исходной странице
Найденную стратегию вписать в конфиге /opt/etc/nfqws/nfqws.conf в параметр NFQWS_ARGS
Нравится проект? Поддержи автора здесь или тут. Купи ему немного 🍻 или ☕!
4 followers · starred Sep 2024
5 followers · starred Mar 2025
35 followers · starred Dec 2024