doc works

This commit is contained in:
bol-van
2025-06-12 09:06:06 +03:00
parent 0be4cbf8a4
commit 54dd06056e
4 changed files with 86 additions and 34 deletions

View File

@@ -1,4 +1,4 @@
# zapret v71
# zapret v71.1
# ВНИМАНИЕ, остерегайтесь мошенников
@@ -39,6 +39,7 @@ zapret является свободным и open source.
- [ПОДДЕРЖКА UDP](#поддержка-udp)
- [IP ФРАГМЕНТАЦИЯ](#ip-фрагментация)
- [МНОЖЕСТВЕННЫЕ СТРАТЕГИИ](#множественные-стратегии)
- [ФИЛЬТРАЦИЯ ПО WIFI](#фильтрация-по-wifi)
- [IPTABLES ДЛЯ NFQWS](#iptables-для-nfqws)
- [NFTABLES ДЛЯ NFQWS](#nftables-для-nfqws)
- [FLOW OFFLOADING](#flow-offloading)
@@ -256,6 +257,7 @@ dvtws, собираемый из тех же исходников (см. [док
--filter-tcp=[~]port1[-port2]|* ; фильтр портов tcp для текущей стратегии. ~ означает инверсию. установка фильтра tcp и неустановка фильтра udp запрещает udp. поддерживается список через запятую.
--filter-udp=[~]port1[-port2]|* ; фильтр портов udp для текущей стратегии. ~ означает инверсию. установка фильтра udp и неустановка фильтра tcp запрещает tcp. поддерживается список через запятую.
--filter-l7=<proto> ; фильтр протокола L6-L7. поддерживается несколько значений через запятую. proto : http tls quic wireguard dht discord stun unknown
--filter-ssid=ssid1[,ssid2,ssid3,...] ; фильтр по имени wifi сети (только для linux)
--ipset=<filename> ; включающий ip list. на каждой строчке ip или cidr ipv4 или ipv6. поддерживается множество листов и gzip. перечитка автоматическая.
--ipset-ip=<ip_list> ; фиксированный список подсетей через запятую. можно использовать # в начале для комментирования отдельных подсетей.
--ipset-exclude=<filename> ; исключающий ip list. на каждой строчке ip или cidr ipv4 или ipv6. поддерживается множество листов и gzip. перечитка автоматическая.
@@ -772,6 +774,33 @@ L7 протокол становится известен обычно посл
> Вариант в ядре работает гораздо эффективнее. Это создавалось для систем без подд3ержки ipset в ядре.
> Конкретно - Windows и ядра Linux, собранные без nftables и ipset модулей ядра. Например, в android нет ipset.
### ФИЛЬТРАЦИЯ ПО WIFI
Имя wifi сети никак не связано с сетевым интерфейсом адаптера wifi.
Интерфейс один, подключиться можно к любой сети. Для разных сетей разные стратегии.
Стратегия от сети A не работает или ломает сеть B. Что делать ?
Можно вручную запускать и снимать инстансы nfqws. Но можно поступить иначе.
В windows версии winws есть глобальный фильтр `--ssid-filter`.
Он включает или отключает инстанс winws в зависимости от подключенности любого адаптера к конкретной wifi сети.
При этом не учитывается маршрутизация. Такой подход возможен потому, что к windivert можно прицепить несколько инстансов winws на пересекающихся фильтрах.
При смене wifi сети одни будут включаться, другие выключаться.
Для linux применяется иное решение. Фильтр `--filter-ssid` относится к конкретному профилю.
Невозможно повесить несколько инстансов nfqws на одну и ту же очередь или направить один и тот же трафик на несколько очередей.
Подключение и отключение от очереди разных инстансов сопряжено со сложностями синхронизации между ними.
Поэтому обрабатывать трафик должен один инстанс, и он должен уметь работать с разными wifi сетями.
Это и реализовано в параметре `--filter-ssid`. Он берет список имен wifi сетей (SSID) через запятую аналогично `--ssid-filter` для winws.
Но при выборе профиля имеет значение куда идет конкретный обрабатываемый пакет. На какой интерфейс. Или с какого интерфейса пакет пришел, если он считается входящим.
Поэтому даже если у вас часть трафика идет на одну сеть, часть на другую, а часть вообще не идет по wifi, то все это можно настроить.
Информация о подключенных сетях берется способом, используемым командой `iw dev <ifname> info`.
Как показывает опыт, не всегда возвращается SSID. Пока не выяснено с чем это связано.
Перед использованием `--filter-ssid` удостоверьтесь, что iw возвращает имя сети. Иначе работать не будет.
Сканируются все wifi интерфейсы, составляется список interface->SSID. Он обновляется по мере поступления
пакетов, но не чаще 1 раза в секунду.
### IPTABLES ДЛЯ NFQWS
iptables для задействования атаки на первые пакеты данных в tcp соединении :
@@ -2287,7 +2316,7 @@ chcon u:object_r:system_file:s0 /data/local/tmp/zapret/tpws
Если компа нет, то развертка chroot - единственный вариант, хотя и неудобный.
Подойдет что-то легковесное, например, alpine или даже OpenWrt.
Если это не эмулятор android, то универсальная архитектура - arm (любой вариант).
Если вы точно знаете, что ОС у вас 64-разрядная, то лучше вместо arm - aarch64.
Если вы точно знаете, что ОС у вас 64-разрядная, то лучше вместо arm - arm64.
Выяснить архитектуру можно командой `uname -a`.
```