bol-van / zapret

DPI bypass multi platform
7.81k stars 602 forks source link

Zapret перестал работать на WiFi клиентах #317

Closed pavloooha closed 2 months ago

pavloooha commented 2 months ago

Здравствуйте, очень внезапно перестал работать запрет на всех устройствах, подключенных по wifi - смартфонах, ноутбуках и пк. На пк, подключенном кабелем, все работает нормально. Роутер Xiaomi Mi Router 4A, OpenWrt 23.05.4, провайдер Dom.ru.

/zapret/config:

FWTYPE=nftables
MODE_FILTER=hostlist
MODE=nfqws
MODE_HTTP=1
MODE_HTTP_KEEPALIVE=0
MODE_HTTPS=1
MODE_QUIC=0
MODE_FILTER=none
NFQWS_OPT_DESYNC="--dpi-desync=fake,split --dpi-desync-ttl=3 --dpi-desync-fooling=md5sig"

В exclude файл добавлены домены Госуслуг. Include файл удален. Пробовал поиграть с параметрами dpi-desync и desync-ttl - не помогло. Заблокированные сайты падают с ошибкой ERR_SSL_PROTOCOL_ERROR или на заглушку Ertelecom. Дополнительно на роутере установлен open-vpn сервер.

Что можно попробовать предпринять? Заранее спасибо.

bol-van commented 2 months ago

Остановить nfqws процесс. запустить его с теми же параметрами и --debug в консоли. Смотреть на его действия В стандартной конфигурации у openwrt wifi и ethernet локалки в мосту, так что разницы быть не должно Может быть тупая причина типа перескочило на другую точку доступа

pavloooha commented 2 months ago

Остановить nfqws процесс. запустить его с теми же параметрами и --debug в консоли. Смотреть на его действия В стандартной конфигурации у openwrt wifi и ethernet локалки в мосту, так что разницы быть не должно Может быть тупая причина типа перескочило на другую точку доступа

Перезапустил процесс и вот что он мне выдал:

initializing conntrack with timeouts tcp=60:300:60 udp=60
opening library handle
unbinding existing nf_queue handler for AF_INET (if any)
binding nfnetlink_queue as nf_queue handler for AF_INET
binding this socket to queue '1'
setting copy_packet mode
initializing raw sockets bind-fix4=0 bind-fix6=0
set_socket_buffers fd=4 rcvbuf=2048 sndbuf=32768
fd=4 SO_RCVBUF=4096
fd=4 SO_SNDBUF=65536
set_socket_buffers fd=5 rcvbuf=2048 sndbuf=32768
fd=5 SO_RCVBUF=4096
fd=5 SO_SNDBUF=65536
Running as UID=2147483647 GID=2147483647
set_socket_buffers fd=3 rcvbuf=65536 sndbuf=32768
fd=3 SO_RCVBUF=131072
fd=3 SO_SNDBUF=65536

Так и должно быть или я что-то не так делаю?

bol-van commented 2 months ago

Если номер очереди верный и --debug указан, то значит на nfqws ничего не приходит

pavloooha commented 2 months ago

Если номер очереди верный и --debug указан, то значит на nfqws ничего не приходит

Значит я что-то делаю не так. Как правильно указать номер очереди?

bol-van commented 2 months ago

/etc/init.d/zapret restart_daemons /etc/init.d/zapret stop_daemons скопировать строку запуска, добавить --debug и запустить в консоли

pavloooha commented 2 months ago

/etc/init.d/zapret restart_daemons /etc/init.d/zapret stop_daemons скопировать строку запуска, добавить --debug и запустить в консоли

Спасибо, сейчас запустилось и появился лог. Пробовал открывать рутрекер со смартфона: nfqws.txt

bol-van commented 2 months ago

nfqws получает только handshake tcp, пакеты данных не идут без zapret вообще инет работает ? может перезагрузить роутер ?

pavloooha commented 2 months ago

nfqws получает только handshake tcp, пакеты данных не идут без zapret вообще инет работает ? может перезагрузить роутер ?

без zapret интернет работает (на заблокированные, естественно, не пускает) роутер был перезагружен в первую же очередь, сейчас контрольно еще раз ребутнул - эффекта нет

bol-van commented 2 months ago

аппаратное ускорение не включено ?

нужен результат nft list table inet zapret

pavloooha commented 2 months ago

аппаратное ускорение не включено ?

нужен результат nft list table inet zapret

Охренеть, действительно, в файерволе был включен Software flow offloading Отключил его и все заработало на всех девайсах...

bol-van commented 2 months ago

Если нужен sfo/hfo, его надо включать средствами zapret. Только так он будет работать, если выборочно управляется им

pavloooha commented 2 months ago

Если нужен sfo/hfo, его надо включать средствами zapret. Только так он будет работать, если выборочно управляется им

видимо, я по дурости прочитал какую-то статью, включил sfo и забыл про него спасибо вам большое за помощь

bol-van commented 2 months ago

flow offload уводит основную часть трафика из netfilter, и zapret ее не получает скрипты zapret могут задерживать включение offload до момента, когда соединение можно отпустить в свободные полет получается работает и zapret, и ускорение

WinterWind777 commented 2 weeks ago

@bol-van Добрый день! Имею такую же проблему, на OpenWRT блокируемые сайты открывает, но на клиентах нет. До этого тоже не работало. Сам OpenWRT на ноуте с одним ethernet-портом. Вот логи nfqws: nfqws-logs.txt

zapret-config.txt

Software flow offloading отключен: uci-show-firewall-defaults.txt

nft-list-table-inet-zapret.txt

Не знаю, что делать, 3 дня пытаюсь решить, прошу помочь)

bol-van commented 2 weeks ago

Выглядит все так, как будто оффлоадинг работает. Виден только SYN, и больше ничего. Может есть другие таблицы, которые его включают ? nft list ruleset iptables не установлены ? Клиенты через WLAN идут ?

bol-van commented 2 weeks ago

Вот это мне не нравится

    set lanif {
        type ifname
        elements = { "br-lan" }
    }

    set wanif {
        type ifname
        elements = { "br-lan" }
    }

Девайс работает как точка доступа с мостом ? просто так эта конфигурация не заработает

https://github.com/bol-van/zapret/discussions/262

WinterWind777 commented 2 weeks ago

Выглядит все так, как будто оффлоадинг работает. Виден только SYN, и больше ничего. Может есть другие таблицы, которые его включают ? nft list ruleset iptables не установлены ? Клиенты через WLAN идут ?

nft list ruleset: nft-list-ruleset.txt

iptables есть, могу с ними попробовать.

Да, через wlan

Заметил, что если в /etc/config/network в секции lan делать disabled 0, то на клиентах интернет пропадает, любые сайты не открывает. Если disabled 1, то работает. Если дизейблить, то в nfqws логах не очень густо после ручного запуска. nfsws.txt

bol-van commented 2 weeks ago

Да, скорее всего тут настроен мост и точка доступа, так что см описание Валдика по ссылке

WinterWind777 commented 2 weeks ago

Спасибо за анализ.

вводил, сработали без ошибок.

opkg install kmod-br-netfilter
sysctl net.bridge.bridge-nf-call-iptables=1

Логов в nfqws нет, кроме fd=3 ....

То же самое с iptables.

Проблема не решилась. Видимо, не вариант

bol-van commented 2 weeks ago

Есть еще с гарантией вариант сделать не мост, а обычный роутер

WinterWind777 commented 2 weeks ago

был бы благодарен, если показали как это сделать, или кинули ссылкой, где про это написано)

WinterWind777 commented 2 weeks ago

или вы тут имели в виду, ethernet-кабель провайдера подключить напрямую к OpenWRT и не делать через dhcp, а через PPPOE?

bol-van commented 2 weeks ago

Я имел в виду подключить ethernet к основному роутеру и сделать из этого WAN, а из WLAN сделать LAN. И это будет работать в стандартном сетапе. По желанию можно отказаться от NAT, если есть возможность на инет шлюзе прописать статический маршрут до этого ноута. Получится routed, а не bridged точка доступа

WinterWind777 commented 2 weeks ago

Я имел в виду подключить ethernet к основному роутеру и сделать из этого WAN, а из WLAN сделать LAN. И это будет работать в стандартном сетапе. По желанию можно отказаться от NAT, если есть возможность на инет шлюзе прописать статический маршрут до этого ноута. Получится routed, а не bridged точка доступа

Спасибо большое за помощь и за программу, с первым способом сработало. Только некоторые видео вообще не грузит на ютубе, с остальными норм

bol-van commented 2 weeks ago

Только некоторые видео вообще не грузит на ютубе, с остальными норм

Надо смотреть в броузере по F12 на каких *.googlevideo.com идет затык. С ними разбираться через блокчек отдельно. Часто вопрос решается для TLS через добавление : --dpi-desync-fake-tls=/opt/zapret/files/fake/tls_clienthello_www_google_com.bin --dpi-desync-repeats=2 Для QUIC : --dpi-desync-fake-quic=/opt/zapret/files/fake/quic_initial_www_google_com.bin --dpi-desync-repeats=2

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

У меня, например, так (НЕ ТАБЛЕТКА, КОПИРОВАНИЕ БЕСПОЛЕЗНО) :


NFQWS_OPT_DESYNC="--hostlist=/opt/zapret-misc/list-youtube.txt --dpi-desync=fake,split2 --dpi-desync-repeats=8 --dpi-desync-fooling=datanoack --dpi-desync-fake-tls=/opt/zapret/files/fake/tls_clienthello_www_google_com.bin --new --dpi-desync=fake,split2 --dpi-desync-fooling=datanoack"

NFQWS_OPT_DESYNC_QUIC="--hostlist=/opt/zapret-misc/list-youtube.txt --dpi-desync=fake --dpi-desync-repeats=3 --dpi-desync-fake-quic=/opt/zapret/files/fake/quic_initial_www_google_com.bin --new --dpi-desync=fake --dpi-desync-repeats=3"
WinterWind777 commented 2 weeks ago

Спасибо за подробный ответ, попробую