Предыдущая версия справа и слева Предыдущая версия Следующая версия | Предыдущая версия |
nfqws [2025/02/02 23:20] – mirocow | nfqws [2025/02/04 23:19] (текущий) – mirocow |
---|
====== NFQWS ====== | ====== nfqws - Эта программа - модификатор пакетов и обработчик очереди NFQUEUE ====== |
| |
https://github.com/bol-van/zapret | Эта программа - модификатор пакетов и обработчик очереди NFQUEUE. |
| |
<code bash> | Для BSD систем существует адаптированный вариант - dvtws, собираемый из тех же исходников. |
$ ./install_easy.sh | |
</code> | |
| |
{{:network:7e86e3fac7f44f9d13c3a737d882a845.jpg?600|}} | |
| |
Выбираем имя внутреннего сетевого интерфейса (LAN), br0 - обычно в роутере: | |
| |
{{:network:7e777b8bf042462347c3d9ff20170beb.jpg?600|}} | |
| |
Но заворот трафика на nfqws происходит всегда после маршрутизации, поэтому к нему применима только фильтрация по WAN, так что LAN в этом режиме работы неважен. | |
| |
<note tip>Важно: выбираем режим фильтрации трафика (none, ipset, hostlist, autohostlist).</note> | |
| |
* none - фильтрация отключена, весь трафик обрабатывается утилитой. Простейший вариант. Рекомендую его использовать, если не хотите заморачиваться настройкой списков адресов, а хотите просто, чтобы быстро и просто все работало. | |
* ipset - фильтрация трафика с помощью ipset. Сложный режим, как работает читаем в инструкции. | |
* hostlist - фильтрация списком хостов из файлов: /opt/zapret/ipset/zapret-hosts-user.txt - прописывайте свои домены, которые нужно обрабатывать или в файле/opt/zapret/ipset/zapret-hosts-user-exclude.txt - домены, которые нужно исключить из обработки. Пишется по одному доменному имени или IP-адресу на строчку. То что там изначально написано в файлах - удаляем. Рекомендую это режим использовать, если хотите обрабатывать только определенные адреса или наоборот если хотите исключить из обработки некоторые адреса. | |
* autohostlist -режим hostlist + распознавание блокировок и ведение автоматического листа. | |
| |
Режим фильтра также можно потом менять через параметр MODE_FILTER в /opt/zapret/config. | |
| |
nano /opt/zapret/ipset/zapret-hosts-user.txt | |
<code> | <code> |
www.youtube.com | --debug=0|1 ; 1=выводить отладочные сообщения |
youtube.com | --daemon ; демонизировать прогу |
| --pidfile=<file> ; сохранить PID в файл |
| --user=<username> ; менять uid процесса |
| --uid=uid[:gid] ; менять uid процесса |
| --qnum=N ; номер очереди N |
| --bind-fix4 ; пытаться решить проблему неверного выбора исходящего интерфейса для сгенерированных ipv4 пакетов |
| --bind-fix6 ; пытаться решить проблему неверного выбора исходящего интерфейса для сгенерированных ipv6 пакетов |
| --wsize=<winsize>[:<scale_factor>] ; менять tcp window size на указанный размер в SYN,ACK. если не задан scale_factor, то он не меняется (устарело !) |
| --wssize=<winsize>[:<scale_factor>] ; менять tcp window size на указанный размер в исходящих пакетах. scale_factor по умолчанию 0. (см. conntrack !) |
| --wssize-cutoff=[n|d|s]N ; изменять server window size в исходящих пакетах (n), пакетах данных (d), относительных sequence (s) по номеру меньше N |
| --ctrack-timeouts=S:E:F[:U] ; таймауты внутреннего conntrack в состояниях SYN, ESTABLISHED, FIN, таймаут udp. по умолчанию 60:300:60:60 |
| --hostcase ; менять регистр заголовка "Host:" по умолчанию на "host:". |
| --hostnospace ; убрать пробел после "Host:" и переместить его в конец значения "User-Agent:" для сохранения длины пакета |
| --hostspell=HoST ; точное написание заголовка Host (можно "HOST" или "HoSt"). автоматом включает --hostcase |
| --domcase ; домен после Host: сделать таким : TeSt.cOm |
| --dpi-desync=[<mode0>,]<mode>[,<mode2] ; атака по десинхронизации DPI. mode : synack fake fakeknown rst rstack hopbyhop destopt ipfrag1 disorder disorder2 split split2 ipfrag2 udplen tamper |
| --dpi-desync-fwmark=<int|0xHEX> ; бит fwmark для пометки десинхронизирующих пакетов, чтобы они повторно не падали в очередь. default = 0x40000000 |
| --dpi-desync-ttl=<int> ; установить ttl для десинхронизирующих пакетов |
| --dpi-desync-ttl6=<int> ; установить ipv6 hop limit для десинхронизирующих пакетов. если не указано, используется значение ttl |
| --dpi-desync-fooling=<fooling> ; дополнительные методики как сделать, чтобы фейковый пакет не дошел до сервера. none md5sig badseq badsum hopbyhop hopbyhop2 |
| --dpi-desync-retrans=0|1 ; (только для fake,rst,rstack) 0(default)=отправлять оригинал следом за фейком 1=дропать оригинал, заставляя ОС выполнять ретрансмиссию через 0.2 сек |
| --dpi-desync-repeats=<N> ; посылать каждый генерируемый в nfqws пакет N раз (не влияет на остальные пакеты) |
| --dpi-desync-skip-nosni=0| 1 ; 1(default)=не применять dpi desync для запросов без hostname в SNI, в частности для ESNI |
| --dpi-desync-split-pos=<1..1500> ; (только для split*, disorder*) разбивать пакет на указанной позиции |
| --dpi-desync-badseq-increment=<int|0xHEX> ; инкремент sequence number для badseq. по умолчанию -10000 |
| --dpi-desync-badack-increment=<int|0xHEX> ; инкремент ack sequence number для badseq. по умолчанию -66000 |
| --dpi-desync-any-protocol=0|1 ; 0(default)=работать только по http request и tls clienthello 1=по всем непустым пакетам данных |
| --dpi-desync-fake-http=<filename>|0xHEX ; файл, содержащий фейковый http запрос для dpi-desync=fake, на замену стандартному w3.org |
| --dpi-desync-fake-tls=<filename>|0xHEX ; файл, содержащий фейковый tls clienthello для dpi-desync=fake, на замену стандартному w3.org |
| --dpi-desync-fake-unknown=<filename>|0xHEX ; файл, содержащий фейковый пейлоад неизвестного протокола для dpi-desync=fake, на замену стандартным нулям 256 байт |
| --dpi-desync-fake-quic=<filename>|0xHEX ; файл, содержащий фейковый QUIC Initial |
| --dpi-desync-fake-dht=<filename>|0xHEX ; файл, содержащий фейковый пейлоад DHT протокола для dpi-desync=fake, на замену стандартным нулям 64 байт |
| --dpi-desync-fake-unknown-udp=<filename>|0xHEX ; файл, содержащий фейковый пейлоад неизвестного udp протокола для dpi-desync=fake, на замену стандартным нулям 64 байт |
| --dpi-desync-udplen-increment=<int> ; насколько увеличивать длину udp пейлоада в режиме udplen |
| --dpi-desync-udplen-pattern=<filename>|0xHEX ; чем добивать udp пакет в режиме udplen. по умолчанию - нули |
| --dpi-desync-cutoff=[n|d|s]N ; применять dpi desync только в исходящих пакетах (n), пакетах данных (d), относительных sequence (s) по номеру меньше N |
| --hostlist=<filename> ; применять дурение только к хостам из листа. может быть множество листов, они обьединяются. пустой обший лист = его отсутствие |
| --hostlist-exclude=<filename> ; не применять дурение к хостам из листа. может быть множество листов, они обьединяютс |
</code> | </code> |