nfqws-keenetic
Пакеты для установки nfqws на маршрутизаторы.
Important
Данный материал подготовлен в научно-технических целях. Использование предоставленных материалов в целях отличных от ознакомления может являться нарушением действующего законодательства. Автор не несет ответственности за неправомерное использование данного материала.
Warning
Вы пользуетесь этой инструкцией на свой страх и риск!
Автор не несёт ответственности за порчу оборудования и программного обеспечения, проблемы с доступом и потенцией. Подразумевается, что вы понимаете, что вы делаете.
Изначально написано для роутеров Keenetic/Netcraze с установленным entware. Однако, работоспособность также была проверена на прошивках Padavan и OpenWRT (читайте ниже).
Списки проверенного оборудования собираем в отдельной теме.
Собранный список моделей из темы
Поделиться опытом можно в разделе Discussions или в чате.
Что это?
nfqws - утилита для модификации TCP соединения на уровне пакетов, работает через обработчик очереди NFQUEUE и raw сокеты.
Почитать подробнее можно на странице авторов (ищите по ключевому слову nfqws).
Подготовка Keenetic/Netcraze
Прочитайте инструкцию полностью, прежде, чем начать что-то делать!
Рекомендуется игнорировать предложенные провайдером адреса DNS-серверов. Для этого в интерфейсе роутера отметьте пункты "игнорировать DNS от провайдера" в настройках IPv4 и IPv6.
Вместе с этим рекомендуется настроить использование DoT/DoH.
Установить entware на маршрутизатор по инструкции на встроенную память роутера или на USB-накопитель.
Через web-интерфейс Keenetic/Netcraze установить пакеты Протокол IPv6 (Network functions > IPv6) и Модули ядра подсистемы Netfilter (OPKG > Kernel modules for Netfilter - не путать с "Netflow"). Обратите внимание, что второй компонент отобразится в списке пакетов только после того, как вы отметите к установке первый.
В разделе "Интернет-фильтры" отключить все сторонние фильтры (NextDNS, SkyDNS, Яндекс DNS и другие).
Все дальнейшие команды выполняются не в cli роутера, а в среде entware. Подключиться в неё можно несколькими способами:
- Через telnet: в терминале выполнить
telnet 192.168.1.1, а потомexec sh. - Или же подключиться напрямую через SSH (логин -
root, пароль по умолчанию -keenetic, порт - 222 или 22). Для этого в терминале написатьssh 192.168.1.1 -l root -p 222. Установка на Keenetic/Netcraze и другие системы с Entware
Установите необходимые зависимости
opkg update opkg install ca-certificates wget-ssl opkg remove wget-nossl
Установите opkg-репозиторий в системуmkdir -p /opt/etc/opkg echo "src/gz nfqws-keenetic https://anonym-tsk.github.io/nfqws-keenetic/all" > /opt/etc/opkg/nfqws-keenetic.confРепозиторий универсальный, поддерживаемые архитектуры:
mipsel,mips,mips64,aarch64,armv7,x86,x86_64,lexra.Или можете выбрать репозиторий под конкретную архитектуру
Установите пакет
opkg update opkg install nfqws-keenetic
Установите веб-интерфейс (опционально)opkg install nfqws-keenetic-webNote
Адрес веб-интерфейса
http://<router_ip>:90(например http://192.168.1.1:90)
Для авторизации введите имя пользователя и пароль пользователя entware (по умолчанию root и keenetic если не меняли при установке)Tip
По-умолчанию php использует только 8Мб памяти. Из-за этого ограничения, могут не загружаться большие списки файлов. Вы можете изменить конфигурацию php самостоятельно:
Откройте файл/opt/etc/php.iniи измените следующие значенияmemory_limit = 32M post_max_size = 32M upload_max_filesize = 16MОбновление
opkg update opkg upgrade nfqws-keenetic opkg upgrade nfqws-keenetic-webУдаление
opkg remove --autoremove nfqws-keenetic-web nfqws-keeneticИнформация об установленной версии
opkg info nfqws-keenetic opkg info nfqws-keenetic-webПолитики доступа на Keenetic/Netcraze
На Keenetic/Netcraze можно создать политику доступа NFQWS (Приоритеты подключений – Политики доступа в интернет) и после перезапуска nfqws-keenetic будет работать только для устройств из этой политики.
Не забудьте поставить галочку на интерфейсе провайдера в созданной политике.
Можно сделать политику исключения, добавив в конфигPOLICY_EXCLUDE=1. Тогда будет обрабатываться трафик для всех устройств, кроме тех, что добавлены в политикуNFQWS.
Имя политики можно изменить в конфиге, параметрPOLICY_NAME.
Если политика с таким именем не найдена, будет обрабатываться весь трафик.
- Через telnet: в терминале выполнить
Настройки
Файл настроек расположен по пути
/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(один домен на строке, поддомены учитываются автоматически) - IP-список для обработки
ipset.list(на каждой строчке ip или cidr ipv4, или ipv6) - IP-список для исключения
ipset_exclude.list - Проверить, что нужные правила добавлены в таблицу маршрутизации
iptables-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
Если ничего не работает...
- Если ваше устройство поддерживает аппаратное ускорение (flow offloading, hardware nat, hardware acceleration), то iptables могут не работать. При включенном offloading пакет не проходит по обычному пути netfilter. Необходимо или его отключить, или выборочно им управлять.
- На Keenetic/Netcraze можно попробовать выключить или наоборот включить сетевой ускоритель
- Возможно, стоит выключить службу классификации трафика IntelliQOS.
- Можно попробовать отключить IPv6 на сетевом интерфейсе провайдера через веб-интерфейс маршрутизатора.
- Можно попробовать запретить весь UDP трафик на 443 порт для отключения QUIC:
Межсетевой экран → Домашняя сеть → Добавить правило
Включить правило: Включено
Описание: Блокировать QUIC
Действие: Запретить
Протокол: UDP
Номер порта назначения: Равен 443
Остальные параметры оставляем без изменений
Частые проблемы
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 в конфиге NFQWS- Ошибки вида
readlink: not found,dirname: not found
Обычно возникают не на кинетиках. Решение - установить busybox:opkg install busyboxили отдельно пакетыopkg install coreutils-readlink coreutils-dirname Failed to download the package list from https://anonym-tsk.github.io/nfqws-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"
Как подобрать рабочую стратегию NFQWS
Запустить скрипт и следовать его инструкциям
opkg install curl /bin/sh -c "$(curl -fsSL https://github.com/Anonym-tsk/nfqws-keenetic/raw/master/common/strategy.sh)"Подробнее можно почитать на исходной странице
Найденную стратегию вписать в конфиге
/opt/etc/nfqws/nfqws.confв параметрNFQWS_ARGS