mirror of
https://github.com/bol-van/zapret2.git
synced 2026-03-14 06:13:09 +00:00
update docs
This commit is contained in:
@@ -1,5 +1,8 @@
|
||||
# МАНУАЛ В ПРОЦЕССЕ НАПИСАНИЯ
|
||||
|
||||
Запуск или останов инстанса nfqws2. Базовые параметры приписываются автоматически. К базовым параметрам относится выбор user, fwmark и подключение стандартных скриптов LUA -
|
||||
[zapret-lib.lua](#библиотека-базовых-функций-zapret-liblua),
|
||||
[zapret-antidpi.lua](#библиотека-программ-атаки-на-dpi-zapret-antidpilua), [zapret-auto.lua](#библиотека-программ-автоматизации-и-оркестрации-zapret-autolua).
|
||||
|
||||
# Введение
|
||||
|
||||
@@ -10,27 +13,27 @@ zapret2 является пакетным манипулятором, основ
|
||||
|
||||
# Структура проекта
|
||||
|
||||
Главный компонент zapret2 - программа nfqws2 (dvtws2 на BSD, winws2 на Windows), написанная на C, которая и является пакетным манипулятором.
|
||||
Содержит функции по перехвату пакетов, базовой фильтрации, рапознавания основных протоколов и пейлоадов, поддержки хост и IP листов, автоматических хостлистов
|
||||
с распознаванием блокировок, систему множественных профилей (стратегий), возможности по отсылке raw пакетов и другие сервисные функции.
|
||||
Главный компонент zapret2 - программа [nfqws2](#nfqws2) (dvtws2 на BSD, winws2 на Windows), написанная на C, которая и является пакетным манипулятором.
|
||||
Содержит функции по перехвату пакетов, базовой фильтрации, рапознавания основных протоколов и пейлоадов, поддержки хост и IP [листов](#фильтрация-по-листам), [автоматических](#детектор-неудач-автохостлистов) хостлистов
|
||||
с распознаванием блокировок, систему множественных [профилей](#использование-множественных-профилей) (стратегий), возможности по [отсылке](прием-и-отсылка-пакетов) raw пакетов и другие сервисные функции.
|
||||
Однако, там нет никаких возможностей собственно для воздействия на трафик. Это вынесено в код на языке LUA, вызываемый из nfqws2.
|
||||
|
||||
Поэтому следующая по важности часть проекта - LUA код. В базовый комплект входит библиотека функций-хелперов `zapret-lib.lua`,
|
||||
библиотека программ автономных атак на DPI `zapret-antidpi.lua`, библиотека функций принятия динамических решений (оркестрации) `zapret-auto.lua`.
|
||||
Поэтому следующая по важности часть проекта - LUA код. В базовый комплект входит библиотека функций-хелперов [zapret-lib.lua](#библиотека-базовых-функций-zapret-liblua),
|
||||
библиотека программ автономных атак на DPI [zapret-antidpi.lua](#библиотека-программ-атаки-на-dpi-zapret-antidpilua), библиотека функций принятия динамических решений (оркестрации) [zapret-auto.lua](#библиотека-программ-автоматизации-и-оркестрации-zapret-autolua).
|
||||
Дополнительно присутствует набор тестов C функций `zapret-tests.lua`, средство обфускации wireguard протокола `zapret-wgobfs.lua` и средство записи дампа пакетов в cap файлы `zapret-pcap.lua`.
|
||||
|
||||
Функции перенаправления трафика из ядра в Linux возложены на iptables и nftables, в FreeBSD - на ipfw, в OpenBSD - на pf, в Windows - встроены в сам процесс winws2 посредством драйвера windivert.
|
||||
Схема перехвата трафика из ядра , nfqws2 и lua код составляют минимально рабочее ядро проекта. Все остальное является дополнительным, второстепенным и опциональным.
|
||||
|
||||
Из второстепенных компонент - скрипты запуска под Linux - `init.d`, `common`, `ipset`, `install_easy.sh`, `uninstall_easy.sh` и средство автоматизации тестирования стратегий `blockcheck2`.
|
||||
Из второстепенных компонент - [скрипты запуска](#скрипты-запуска) под Linux - `init.d`, `common`, `ipset`, `install_easy.sh`, `uninstall_easy.sh` и средство автоматизации тестирования стратегий [blockcheck2](#blockcheck2).
|
||||
Цель скриптов запуска - согласовать процесс поднятия таблиц и запуск инстансов nfqws2, учесть особенности интеграции в различные дистрибутивы (openwrt, systemd, openrc).
|
||||
Дополнительная функция - обеспечить поддержку и согласованное обновление различных листов и загрузку IP листов в пространство ядра - ipset.
|
||||
Все это можно сделать при желании и собственными средствами, если так удобнее или функционал скриптов запуска не подходит.
|
||||
Скрипты запуска выносят все настройки в файл config, лежащий в корне проекта. Этот конфиг относится только к ним, nfqws2 ничего о нем не знает.
|
||||
|
||||
Для обработки листов предусмотрены 2 программы, написанные на C. mdig - многопоточный ресолвер хостлистов неограниченного обьема.
|
||||
ip2net - программа для группировки отдельных IP адресов в подсети с целью сокращения их обьема.
|
||||
Эти программы используются в скриптах запуска и в blockcheck2.
|
||||
Для обработки листов предусмотрены 2 программы, написанные на C. [mdig](#mdig) - многопоточный ресолвер хостлистов неограниченного обьема.
|
||||
[ip2net](#ip2net) - программа для группировки отдельных IP адресов в подсети с целью сокращения их обьема.
|
||||
Эти программы используются в скриптах запуска и в [blockcheck2](#blockcheck2).
|
||||
|
||||
Скрипты запуска и инсталятор поддерживает установку на любые классические дистрибутивы Linux с systemd или openrc , из прошивок - на openwrt.
|
||||
Если система не удовлетворяет указанным требованиям - возможна самостоятельная "доприкрутка" к системе.
|
||||
@@ -88,7 +91,7 @@ conntrack отслеживает логическое направление п
|
||||
|
||||
Если идет перепроигрывание задержанных пакетов ([replay](#особенности-приема-многопакетных-пейлоадов)), LUA инстанс получает информацию о номере части, количестве частей исходного сообщения, позиции текущей части, [reasm](#особенности-приема-многопакетных-пейлоадов) или [decrypt](#особенности-приема-многопакетных-пейлоадов) при наличии.
|
||||
|
||||
LUA код может использовать глобальное пространство переменных для хранения данных, не относящихся к конкретному обрабатываемому пакету. Ему доступна таблица [desync.track.lua_state](#структура-таблицы-desync),
|
||||
LUA код может использовать глобальное пространство переменных для хранения данных, не относящихся к конкретному обрабатываемому пакету. Ему доступна таблица [desync.track.lua_state](#структура-track),
|
||||
в которой он может хранить любую информацию, связанную с записью conntrack. При каждом новом пакете потока в LUA выдается одна и та же таблица.
|
||||
Таблицу desync можно использовать для генерации и хранения временных данных, актуальных в цепочке обработки текущего пакета.
|
||||
Следующие LUA инстансы получают ту же таблицу desync и тем самым могут принимать данные от предыдущих инстансов.
|
||||
|
||||
Reference in New Issue
Block a user