mirror of
https://github.com/bol-van/zapret2.git
synced 2026-03-19 07:45:49 +00:00
update docs
This commit is contained in:
@@ -1271,7 +1271,7 @@ ipv6 extension headers и tcp options представляются в форме
|
||||
| t_start | number | unix time первого пакета потока | включает дробную часть с высокой точностью |
|
||||
| pos | table | счетчики по различным направлениям | содержит таблицы client, server, direct, reverse |
|
||||
|
||||
Таблица track.pos содержит подтаблицы с набором [счетчиков](#внутрипрофильные-фильтры) по двум направлениям - client и server.
|
||||
Таблица track.pos содержит подтаблицы с набором счетчиков по двум направлениям - client и server.
|
||||
client означает пакеты от клиента, server - пакеты от сервера.
|
||||
direct and reverse являются просто ссылкам на client и server. Куда указывает direct и reverse зависит
|
||||
от текущего направления - `desync.outgoing` и серверного режима - `b_server`.
|
||||
@@ -3110,3 +3110,51 @@ function synack_split(ctx, desync)
|
||||
|
||||
Многие DPI ожидают стандартный ответ на SYN в виде SYN,ACK. В реальности получается, что ответ на SYN является тоже SYN, а потом клиент шлет серверу SYN,ACK. Тем самым DPI перестает понимать какая сторона является клиентом, а какая сервером, и алгоритм проверки дает сбой. Атака может сработать даже если клиент не делает ничего для обхода блокировки. Может использоваться совместно с клиентскими техниками для точечного пробития tcp.
|
||||
|
||||
|
||||
# Библиотека программ автоматизации и оркестрации zapret-auto.lua
|
||||
|
||||
Стандартный порядок применения инстансов линеен - слева направо с учетом [внутрипрофильных фильтров](#внутрипрофильные-фильтры) и [instance cutoff](#instance_cutoff). nfqws2 никаких других вариантов не предоставляет.
|
||||
|
||||
Конечно, вы можете написать свою LUA функцию, которая сделает что нужно и когда нужно. Но вам придется при этом изобрести какое-то количество велосипедов, дублировать код или того хуже - патчить стандартные функции antidpi, добавляя туда ваши хотелки, а потом это самостоятельно поддерживать.
|
||||
|
||||
Суть механизмов оркестрации в отделении управляющей логики от логики непосредственных действий, чтобы не надо было ничего патчить, а если и писать свои функции, то писать в них только сам алгоритм управления, не мешая его с алгоритмами действий.
|
||||
|
||||
Оркестрация неразрывно связана с понятием [плана выполнения (execution plan)](#execution_plan). Он включает в себя список инстансов, которые нужно вызвать последовательно с их параметрами и [фильтрами](#внутрипрофильные-фильтры). Базовый линейный оркестратор заложен в C код. Но эту роль может взять на себя и LUA функция, в которой можно запрограммировать любую логику.
|
||||
|
||||
Например, можно сделать автоматические стратегии - если одна не работает, использовать другую. C код имеет подобную логику только в механизме [автоматических хостлистов](#фильтрация-по-листам). Но она не реализует динамическую смену стратегийю.
|
||||
|
||||
## Хранилище состояний
|
||||
|
||||
Логика автоматизации как правило простирается между пакетами и опирается на conntrack. Для хранения состояния потока используются элементы desync.track.lua_state.
|
||||
|
||||
Другая часть информации простирается между соединениями и привязана к хосту. Для хранения этой информации используются глобальные таблицы, индексируемые по ключам.
|
||||
|
||||
### automate_conn_record
|
||||
|
||||
```
|
||||
function automate_conn_record(desync)
|
||||
```
|
||||
|
||||
Возвращает таблицу - хранилище состояния автоматизации, привязанное к потоку. Функции автоматизации могут использовать любые поля.
|
||||
|
||||
### standard_hostkey
|
||||
|
||||
```
|
||||
function standard_hostkey(desync)
|
||||
```
|
||||
|
||||
* arg: reqhost - требовать наличие hostname, не работать по IP
|
||||
* arg: nld - номер уровня домена, до которого отсекается hostname. если не задано - не отсекается
|
||||
|
||||
Стандартный генератор host-ключей. Функция вычисляет строку-ключ, связанный с именем хоста или IP адресом, если имя хоста отсутствует. Если не может - возвращает nil.
|
||||
|
||||
### automate_host_record
|
||||
|
||||
```
|
||||
function automate_conn_record(desync)
|
||||
```
|
||||
|
||||
* arg: key - ключ внутри глобальной таблицы autostate. если не задано, в качестве ключа используется имя текущего инстанса
|
||||
* arg: hostkey - имя функции генератора host-ключей. если не задано, используется [standard_hostkey](#standard_hostkey)
|
||||
|
||||
Возвращат таблицу - хранилище состояния автоматизации, привязанное к хосту или IP адресу. Используется 2 ключа - key и hostkey. Итоговое расположение - `autostate.key.hostkey`. Если hostkey получить не удается - возвращается nil.
|
||||
|
||||
Reference in New Issue
Block a user