Скрипты для установки nfqws на маршрутизаторы с поддержкой opkg.
Вы пользуетесь этой инструкцией на свой страх и риск!
Автор не несёт ответственности за порчу оборудования и программного обеспечения, проблемы с доступом и потенцией. Подразумевается, что вы понимаете, что вы делаете.
Предназначено для роутеров Keenetic с установленным на них entware, а так же для любой системы с opkg пакетами, у которых система расположена в каталоге /opt/.
Проверено на маршрутизаторах:
- Keenetic Giga (KN-1011)
- Keenetic Ultra (KN-1811)
- Keenetic Ultra (KN-1810)
- Keenetic Extra (KN-1710)
- Keenetic Hopper (KN-3810)
- Keenetic Viva (KN-1910)
- Keenetic Omni (KN-1410)
- Keenetic Giant (KN-2610)
Списки проверенного оборудования собираем в отдельной теме.
Поделиться опытом можно в разделе Discussions или в чате.
Если nfqws работает как-то не так, можете попробовать tpws.
nfqws - утилита для модификации TCP соединения на уровне пакетов, работает через обработчик очереди NFQUEUE и raw сокеты.
Почитать подробнее можно на странице авторов (ищите по ключевому слову nfqws).
-
Рекомендуется игнорировать предложенные провайдером адреса DNS-серверов. Для этого в интерфейсе роутера отметьте пункты "игнорировать DNS от провайдера" в настройках IPv4 и IPv6.
-
Вместе с этим рекомендуется настроить использование DoT/DoH.
-
Установить entware на маршрутизатор по инструкции на встроенную память роутера или на USB-накопитель.
-
Через web-интерфейс Keenetic установить пакеты Протокол IPv6 (Network functions > IPv6) и Модули ядра подсистемы Netfilter (OPKG > Kernel modules for Netfilter - не путать с "Netflow"). Обратите внимание, что второй компонент отобразится в списке пакетов только после того, как вы отметите к установке первый.
-
В разделе "Интернет-фильтры" отключить все сторонние фильтры (NextDNS, SkyDNS, Яндекс DNS и другие).
-
Все дальнейшие команды выполняются не в cli роутера, а в среде entware. Переключиться в неё из cli можно командой
exec sh; или же подключиться напрямую через SSH (логин -root, пароль по умолчанию -keenetic, порт - 222). -
Установите необходимые зависимости:
opkg update opkg install curl ca-certificates iptables busybox
Важно!! Миграция с версии 1.x.x на 2.x.x:
Если не уверены, выполните команду
opkg info nfqws-keenetic- она работает только на версиях 2.x.x и возвращает информацию о пакете. Если ничего не вернула, вам нужно удалить старую версию.Только если у вас установлена версия 1.x.x:
Выполните удаление старой версии скриптом
/bin/sh -c "$(curl -fsSL https://github.com/Anonym-tsk/nfqws-keenetic/raw/master/netuninstall.sh)"Только после этого устанавливайте новую версию по инструкции ниже
-
Скачайте установочный пакет для вашей архитектуры
-
Giga (KN-1010/1011), Ultra (KN-1810), Viva (KN-1910/1912), Hero 4G (KN-2310), Hero 4G+ (KN-2311), Giant (KN-2610), Skipper 4G (KN-2910), Hopper (KN-3810) с архитектурой
mipsel:curl -SL# https://github.com/Anonym-tsk/nfqws-keenetic/releases/latest/download/nfqws-keenetic_mipsel.ipk -o /tmp/nfqws-keenetic.ipk -
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) с архитектурой
mips:curl -SL# https://github.com/Anonym-tsk/nfqws-keenetic/releases/latest/download/nfqws-keenetic_mips.ipk -o /tmp/nfqws-keenetic.ipk -
Peak (KN-2710), Ultra (KN-1811), Hopper SE (KN-3812) с архитектурой
aarch64:curl -SL# https://github.com/Anonym-tsk/nfqws-keenetic/releases/latest/download/nfqws-keenetic_aarch64.ipk -o /tmp/nfqws-keenetic.ipk -
Другие устройства с архитектурой
arm:curl -SL# https://github.com/Anonym-tsk/nfqws-keenetic/releases/latest/download/nfqws-keenetic_armv7.ipk -o /tmp/nfqws-keenetic.ipk
-
-
Установите скачанный пакет
opkg install /tmp/nfqws-keenetic.ipk -
Во время установки следуйте инструкции установщика
-
Введите сетевой интерфейс провайдера, обычно это
eth3. Если ваш провайдер использует PPPoE, ваш интерфейс, скорее всего,ppp0.Можно указать несколько интерфейсов через пробел (
eth3 nwg1), например, если вы подключены к нескольким провайдерам -
Выберите режим работы
auto,listилиallВ режиме
listбудут обрабатываться только домены из файла/opt/etc/nfqws/user.list(один домен на строку)В режиме
autoкроме этого будут автоматически определяться недоступные домены и добавляться в список, по которомуnfqwsобрабатывает трафик. Домен будет добавлен, если за 60 секунд будет 3 раза определено, что ресурс недоступенВ режиме
allбудет обрабатываться весь трафик кроме доменов из списка/opt/etc/nfqws/exclude.list -
Укажите, нужна ли поддержка IPv6
Если не уверены, лучше не отключайте и оставьте как есть
-
-
Удалите скачанный файл (опционально)
rm -f /tmp/nfqws-keenetic.ipk
Просто скачайте нужный пакет и установите его поверх старого.
opkg remove nfqws-keenetic
opkg info nfqws-keenetic
opkg install git git-http curl
git clone https://github.com/Anonym-tsk/nfqws-keenetic.git --depth 1
chmod +x ./nfqws-keenetic/*.sh
./nfqws-keenetic/install.sh
cd nfqws-keenetic
git pull --depth=1
./install.sh
./nfqws-keenetic/uninstall.sh
- Конфиг-файл
/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(один домен на строке, поддомены учитываются автоматически) - Проверить, что нужные правила добавлены в таблицу маршрутизации
iptables-save | grep "queue-num 200"
Вы должны увидеть похожие строки (по 2 на каждый выбранный сетевой интерфейс)
-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 можно попробовать выключить или наоборот включить сетевой ускоритель
- Возможно, стоит выключить службу классификации трафика IntelliQOS.
- Можно попробовать отключить IPv6 на сетевом интерфейсе провайдера через веб-интерфейс маршрутизатора.
- Можно попробовать запретить весь UDP трафик на 443 порт для отключения QUIC:
iptables -I FORWARD -i br0 -p udp --dport 443 -j DROP
- Попробовать разные варианты аргументов nfqws. Для этого в конфиге
/opt/etc/nfqws/nfqws.confесть несколько заготовокNFQWS_ARGS.
-
iptables: No chain/target/match by that nameНе установлен пакет "Модули ядра подсистемы Netfilter". На Keenetic он появляется в списке пакетов только после установки "Протокол 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
Нравится проект? Поддержи автора! Купи ему немного 🍻 или ☕!