mirror of
https://github.com/bol-van/zapret2.git
synced 2026-03-20 00:05:48 +00:00
update docs
This commit is contained in:
771
docs/manual.md
771
docs/manual.md
@@ -1,3 +1,252 @@
|
||||
- [Введение](#введение)
|
||||
- [Структура проекта](#структура-проекта)
|
||||
- [Схема обработки трафика](#схема-обработки-трафика)
|
||||
- [Перехват трафика из ядра ОС](#перехват-трафика-из-ядра-ос)
|
||||
- [Перехват трафика в ядре Linux](#перехват-трафика-в-ядре-linux)
|
||||
- [Перехват трафика с помощью nftables](#перехват-трафика-с-помощью-nftables)
|
||||
- [Перехват трафика с помощью iptables](#перехват-трафика-с-помощью-iptables)
|
||||
- [Перехват трафика в ядре FreeBSD](#перехват-трафика-в-ядре-freebsd)
|
||||
- [Перехват трафика в ядре OpenBSD](#перехват-трафика-в-ядре-openbsd)
|
||||
- [Перехват трафика в ядре Windows](#перехват-трафика-в-ядре-windows)
|
||||
- [nfqws2](#nfqws2)
|
||||
- [Общие принципы задания параметров](#общие-принципы-задания-параметров)
|
||||
- [Полный список опций](#полный-список-опций)
|
||||
- [Использование множественных профилей](#использование-множественных-профилей)
|
||||
- [Шаблоны профилей](#шаблоны-профилей)
|
||||
- [Фильтрация по листам](#фильтрация-по-листам)
|
||||
- [Детектор неудач автохостлистов](#детектор-неудач-автохостлистов)
|
||||
- [Фильтр по наличию сетей](#фильтр-по-наличию-сетей)
|
||||
- [Серверный режим](#серверный-режим)
|
||||
- [Кэш IP](#кэш-ip)
|
||||
- [Сигналы](#сигналы)
|
||||
- [Отладка](#отладка)
|
||||
- [Виртуальные машины](#виртуальные-машины)
|
||||
- [Песочница](#песочница)
|
||||
- [Вызов LUA кода](#вызов-lua-кода)
|
||||
- [Передача блобов](#передача-блобов)
|
||||
- [Внутрипрофильные фильтры](#внутрипрофильные-фильтры)
|
||||
- [Типичная схема вызова инстансов внутри профиля](#типичная-схема-вызова-инстансов-внутри-профиля)
|
||||
- [Прототип LUA функции](#прототип-lua-функции)
|
||||
- [Структура таблицы desync](#структура-таблицы-desync)
|
||||
- [Структура диссекта](#структура-диссекта)
|
||||
- [Особенности приема многопакетных пейлоадов](#особенности-приема-многопакетных-пейлоадов)
|
||||
- [Структура track](#структура-track)
|
||||
- [С интерфейс nfqws2](#с-интерфейс-nfqws2)
|
||||
- [Базовые константы](#базовые-константы)
|
||||
- [Стандартные блобы](#стандартные-блобы)
|
||||
- [C функции](#c-функции)
|
||||
- [Логгинг](#логгинг)
|
||||
- [Конвертация IP](#конвертация-ip)
|
||||
- [Битовые операции](#битовые-операции)
|
||||
- [Операции с беззнаковыми числами](#операции-с-беззнаковыми-числами)
|
||||
- [uX](#ux)
|
||||
- [buX](#bux)
|
||||
- [swapX](#swapx)
|
||||
- [uXadd](#uxadd)
|
||||
- [Целочисленное деление](#целочисленное-деление)
|
||||
- [divint](#divint)
|
||||
- [Генерация случайных данных](#генерация-случайных-данных)
|
||||
- [brandom](#brandom)
|
||||
- [Парсинг](#парсинг)
|
||||
- [parse\_hex](#parse_hex)
|
||||
- [Криптография](#криптография)
|
||||
- [bcryptorandom](#bcryptorandom)
|
||||
- [hash](#hash)
|
||||
- [aes](#aes)
|
||||
- [aes\_gcm](#aes_gcm)
|
||||
- [aes\_ctr](#aes_ctr)
|
||||
- [hkdf](#hkdf)
|
||||
- [Системные функции](#системные-функции)
|
||||
- [uname](#uname)
|
||||
- [clock\_gettime](#clock_gettime)
|
||||
- [getpid](#getpid)
|
||||
- [Опции по работе с пакетами](#опции-по-работе-с-пакетами)
|
||||
- [standard reconstruct](#standard-reconstruct)
|
||||
- [standard rawsend](#standard-rawsend)
|
||||
- [Диссекция и реконструкция](#диссекция-и-реконструкция)
|
||||
- [dissect](#dissect)
|
||||
- [reconstruct\_dissect](#reconstruct_dissect)
|
||||
- [reconstruct\_hdr](#reconstruct_hdr)
|
||||
- [csum\_fix](#csum_fix)
|
||||
- [Прием и отсылка пакетов](#прием-и-отсылка-пакетов)
|
||||
- [rawsend](#rawsend)
|
||||
- [raw\_packet](#raw_packet)
|
||||
- [Работа с пейлоадами](#работа-с-пейлоадами)
|
||||
- [маркеры](#маркеры)
|
||||
- [resolve\_pos](#resolve_pos)
|
||||
- [Управление выполнением инстансов](#управление-выполнением-инстансов)
|
||||
- [instance\_cutoff](#instance_cutoff)
|
||||
- [lua\_cutoff](#lua_cutoff)
|
||||
- [execution\_plan](#execution_plan)
|
||||
- [execution\_plan\_cancel](#execution_plan_cancel)
|
||||
- [Библиотека базовых функций zapret-lib.lua](#библиотека-базовых-функций-zapret-liblua)
|
||||
- [Базовые desync функции](#базовые-desync-функции)
|
||||
- [luaexec](#luaexec)
|
||||
- [pass](#pass)
|
||||
- [pktdebug](#pktdebug)
|
||||
- [argdebug](#argdebug)
|
||||
- [posdebug](#posdebug)
|
||||
- [detect\_payload\_str](#detect_payload_str)
|
||||
- [desync\_orchestrator\_example](#desync_orchestrator_example)
|
||||
- [Служебные функции](#служебные-функции)
|
||||
- [var\_debug](#var_debug)
|
||||
- [deepcopy](#deepcopy)
|
||||
- [logical\_xor](#logical_xor)
|
||||
- [Работа со строками](#работа-со-строками)
|
||||
- [in\_list](#in_list)
|
||||
- [find\_next\_line](#find_next_line)
|
||||
- [Обслуживание raw string](#обслуживание-raw-string)
|
||||
- [hex](#hex)
|
||||
- [pattern](#pattern)
|
||||
- [blob](#blob)
|
||||
- [Обслуживание tcp sequence numbers](#обслуживание-tcp-sequence-numbers)
|
||||
- [Обслуживание позиций](#обслуживание-позиций)
|
||||
- [Диссекция](#диссекция)
|
||||
- [dissect\_url](#dissect_url)
|
||||
- [dissect\_nld](#dissect_nld)
|
||||
- [dissect\_http](#dissect_http)
|
||||
- [Работа с элементами L3 и L4 протоколов](#работа-с-элементами-l3-и-l4-протоколов)
|
||||
- [find\_tcp\_options](#find_tcp_options)
|
||||
- [ip6hdr](#ip6hdr)
|
||||
- [packet\_len](#packet_len)
|
||||
- [Работа с именами хостов](#работа-с-именами-хостов)
|
||||
- [genhost](#genhost)
|
||||
- [host\_ip](#host_ip)
|
||||
- [Операции с именами файлов и путями](#операции-с-именами-файлов-и-путями)
|
||||
- [autottl](#autottl)
|
||||
- [Операции с диссектами](#операции-с-диссектами)
|
||||
- [standard ipid](#standard-ipid)
|
||||
- [standard fooling](#standard-fooling)
|
||||
- [standard ipfrag](#standard-ipfrag)
|
||||
- [apply\_ip\_id](#apply_ip_id)
|
||||
- [apply\_fooling](#apply_fooling)
|
||||
- [ipfrag2](#ipfrag2)
|
||||
- [wssize\_rewrite](#wssize_rewrite)
|
||||
- [dis\_reverse](#dis_reverse)
|
||||
- [Отсылка](#отсылка)
|
||||
- [rawsend\_dissect\_ipfrag](#rawsend_dissect_ipfrag)
|
||||
- [rawsend\_dissect\_segmented](#rawsend_dissect_segmented)
|
||||
- [rawsend\_payload\_segmented](#rawsend_payload_segmented)
|
||||
- [Стандартные фильтры direction и payload](#стандартные-фильтры-direction-и-payload)
|
||||
- [Работа с многопакетными пейлоадам](#работа-с-многопакетными-пейлоадам)
|
||||
- [Оркестрация](#оркестрация)
|
||||
- [instance\_cutoff\_shim](#instance_cutoff_shim)
|
||||
- [cutoff\_shim\_check](#cutoff_shim_check)
|
||||
- [apply\_arg\_prefix](#apply_arg_prefix)
|
||||
- [apply\_execution\_plan](#apply_execution_plan)
|
||||
- [verdict\_aggregate](#verdict_aggregate)
|
||||
- [plan\_instance\_execute](#plan_instance_execute)
|
||||
- [plan\_instance\_pop](#plan_instance_pop)
|
||||
- [plan\_clear](#plan_clear)
|
||||
- [orchestrate](#orchestrate)
|
||||
- [replay\_execution\_plan](#replay_execution_plan)
|
||||
- [Библиотека программ атаки на DPI zapret-antidpi.lua](#библиотека-программ-атаки-на-dpi-zapret-antidpilua)
|
||||
- [Стандартные наборы параметров](#стандартные-наборы-параметров)
|
||||
- [standard direction](#standard-direction)
|
||||
- [standard payload](#standard-payload)
|
||||
- [Базовые функции](#базовые-функции)
|
||||
- [drop](#drop)
|
||||
- [send](#send)
|
||||
- [pktmod](#pktmod)
|
||||
- [Дурение http](#дурение-http)
|
||||
- [http\_hostcase](#http_hostcase)
|
||||
- [http\_domcase](#http_domcase)
|
||||
- [http\_methodeol](#http_methodeol)
|
||||
- [Замена window size](#замена-window-size)
|
||||
- [wsize](#wsize)
|
||||
- [wssize](#wssize)
|
||||
- [Фейки](#фейки)
|
||||
- [syndata](#syndata)
|
||||
- [fake](#fake)
|
||||
- [rst](#rst)
|
||||
- [TCP сегментация](#tcp-сегментация)
|
||||
- [multisplit](#multisplit)
|
||||
- [multidisorder](#multidisorder)
|
||||
- [multidisorder\_legacy](#multidisorder_legacy)
|
||||
- [fakedsplit](#fakedsplit)
|
||||
- [fakeddisorder](#fakeddisorder)
|
||||
- [hostfakesplit](#hostfakesplit)
|
||||
- [tcpseg](#tcpseg)
|
||||
- [Дурение udp](#дурение-udp)
|
||||
- [udplen](#udplen)
|
||||
- [dht\_dn](#dht_dn)
|
||||
- [Другие функции](#другие-функции)
|
||||
- [synack](#synack)
|
||||
- [synack\_split](#synack_split)
|
||||
- [Библиотека программ автоматизации и оркестрации zapret-auto.lua](#библиотека-программ-автоматизации-и-оркестрации-zapret-autolua)
|
||||
- [Хранилище состояний](#хранилище-состояний)
|
||||
- [automate\_conn\_record](#automate_conn_record)
|
||||
- [standard\_hostkey](#standard_hostkey)
|
||||
- [automate\_host\_record](#automate_host_record)
|
||||
- [Обслуживание удач и неудач](#обслуживание-удач-и-неудач)
|
||||
- [automate\_failure\_counter](#automate_failure_counter)
|
||||
- [automate\_failure\_counter\_reset](#automate_failure_counter_reset)
|
||||
- [Детекция удач и неудач](#детекция-удач-и-неудач)
|
||||
- [automate\_failure\_check](#automate_failure_check)
|
||||
- [standard\_success\_detector](#standard_success_detector)
|
||||
- [standard\_failure\_detector](#standard_failure_detector)
|
||||
- [Оркестраторы](#оркестраторы)
|
||||
- [circular](#circular)
|
||||
- [repeater](#repeater)
|
||||
- [condition](#condition)
|
||||
- [stopif](#stopif)
|
||||
- [iff функции](#iff-функции)
|
||||
- [cond\_true](#cond_true)
|
||||
- [cond\_false](#cond_false)
|
||||
- [cond\_random](#cond_random)
|
||||
- [cond\_payload\_str](#cond_payload_str)
|
||||
- [Вспомогательные программы](#вспомогательные-программы)
|
||||
- [ip2net](#ip2net)
|
||||
- [mdig](#mdig)
|
||||
- [blockcheck2](#blockcheck2)
|
||||
- [Проверка DNS](#проверка-dns)
|
||||
- [Основные режимы тестирования](#основные-режимы-тестирования)
|
||||
- [Множественные попытки](#множественные-попытки)
|
||||
- [Уровни сканирования](#уровни-сканирования)
|
||||
- [Поддерживаемые протоколы](#поддерживаемые-протоколы)
|
||||
- [Проверка блока по IP](#проверка-блока-по-ip)
|
||||
- [Примеры блокировки только по домену без блока по IP](#примеры-блокировки-только-по-домену-без-блока-по-ip)
|
||||
- [Пример полного IP блока или блока TCP порта при отсутствии блока по домену](#пример-полного-ip-блока-или-блока-tcp-порта-при-отсутствии-блока-по-домену)
|
||||
- [Стандартные тесты](#стандартные-тесты)
|
||||
- [Тест standard](#тест-standard)
|
||||
- [Тест custom](#тест-custom)
|
||||
- [Summary](#summary)
|
||||
- [Shell переменные](#shell-переменные)
|
||||
- [Скрипты запуска](#скрипты-запуска)
|
||||
- [Файл config](#файл-config)
|
||||
- [Система ведения листов](#система-ведения-листов)
|
||||
- [Стандартные файлы листов](#стандартные-файлы-листов)
|
||||
- [Скрипты ipset](#скрипты-ipset)
|
||||
- [clear\_lists.sh](#clear_listssh)
|
||||
- [create\_ipset.sh](#create_ipsetsh)
|
||||
- [get\_config.sh](#get_configsh)
|
||||
- [get\_user.sh](#get_usersh)
|
||||
- [get\_ipban.sh](#get_ipbansh)
|
||||
- [get\_exclude.sh](#get_excludesh)
|
||||
- [get\_antifilter\_\*.sh](#get_antifilter_sh)
|
||||
- [get\_antizapret\_domains.sh](#get_antizapret_domainssh)
|
||||
- [get\_refilter\_\*.sh](#get_refilter_sh)
|
||||
- [get\_reestr\_\*.sh](#get_reestr_sh)
|
||||
- [Стартовые скрипты](#стартовые-скрипты)
|
||||
- [Интеграция с firewall](#интеграция-с-firewall)
|
||||
- [Интеграция с OpenWRT firewall](#интеграция-с-openwrt-firewall)
|
||||
- [custom скрипты](#custom-скрипты)
|
||||
- [custom хелперы](#custom-хелперы)
|
||||
- [Получение динамических номеров](#получение-динамических-номеров)
|
||||
- [Работа с демонами](#работа-с-демонами)
|
||||
- [Работа с iptables](#работа-с-iptables)
|
||||
- [Работа с nftables](#работа-с-nftables)
|
||||
- [Дополнительные функции](#дополнительные-функции)
|
||||
- [Инсталлятор](#инсталлятор)
|
||||
- [Принципы интеграции с OpenWRT](#принципы-интеграции-с-openwrt)
|
||||
- [Шпаргалка OpenWRT](#шпаргалка-openwrt)
|
||||
- [Принципы интеграции с systemd](#принципы-интеграции-с-systemd)
|
||||
- [Шпаргалка systemd](#шпаргалка-systemd)
|
||||
- [Принципы интеграции с openrc](#принципы-интеграции-с-openrc)
|
||||
- [Шпаргалка openrc](#шпаргалка-openrc)
|
||||
- [Альтернативная установка на systemd](#альтернативная-установка-на-systemd)
|
||||
|
||||
|
||||
# Введение
|
||||
|
||||
zapret2 является пакетным манипулятором, основная задача которого - совершение различных автономных атак на DPI в реальном времени
|
||||
@@ -1120,34 +1369,34 @@ desync:
|
||||
</details>
|
||||
|
||||
desync
|
||||
| Поле | Тип | Содержание | Примечание |
|
||||
|:------|:-----|:-------------|:-----------|
|
||||
| func | string | имя desync функции | |
|
||||
| func_n | number | номер инстанса внутри профиля | |
|
||||
| func_instance | string | название инстанса | производная имени функции, номера инстанса и номера профиля |
|
||||
| profile_n | number | номер профиля | |
|
||||
| profile_name | string | название профиля | может отсутствовать |
|
||||
| template_n | number | номер шаблона, на базе которого создан профиль | может отсутствовать |
|
||||
| template_name | string | название шаблона, на базе которого создан профиль | может отсутствовать |
|
||||
| cookie | string | значение параметра nfqws2 --cookie для профиля | может отсутствовать |
|
||||
| outgoing | bool | true , если направление исходящее | |
|
||||
| ifin | string | имя входящего интерфейса | может отсутствовать |
|
||||
| ifout | string | имя исходящего интерфейса | может отсутствовать |
|
||||
| fwmark | number | fwmark текущего пакета | только в Linux |
|
||||
| target | table | таблица, включающая ip адрес и порт, на базе которых проверяются ipset-ы и фильтры по портам | |
|
||||
| replay | bool | проигрывание задержанного пакета (replay) | |
|
||||
| replay_piece | number | номер проигрываемой части | нумерация с 1 |
|
||||
| replay_piece_count | number | количество проигрываемых частей| |
|
||||
| replay_piece_last | bool | последняя проигрываемая часть | |
|
||||
| l7payload | string | тип пейлоада текущего пакета или группы пакетов. список возможных в help тексте nfqws2 | если неизвестно - unknown |
|
||||
| l7proto | string | тип протокола потока | если неизвестно - unknown |
|
||||
| reasm_data | string | результат сборки многопакетного сообщения, либо сам пейлоад, если сборки не было | пока применяется только для tcp |
|
||||
| reasm_offset | string | смещение текущего переигрываемого пакета в сборке | пока применяется только для tcp |
|
||||
| decrypt_data | string | результат сборки и дешифровки пейлоада или пейлоадов нескольких пакетов | применяется для quic |
|
||||
| tcp_mss | number | MSS противоположного конца tcp соединения | присутствует всегда, только для tcp |
|
||||
| track | table | данные, привязанные к записи conntrack | только если есть conntrack, может не быть |
|
||||
| arg | table | все аргументы инстанса и их значения | подстановки % и # уже замещены |
|
||||
| dis | table | диссект текущего пакета | |
|
||||
| Поле | Тип | Содержание | Примечание |
|
||||
| :----------------- | :----- | :------------------------------------------------------------------------------------------- | :---------------------------------------------------------- |
|
||||
| func | string | имя desync функции | |
|
||||
| func_n | number | номер инстанса внутри профиля | |
|
||||
| func_instance | string | название инстанса | производная имени функции, номера инстанса и номера профиля |
|
||||
| profile_n | number | номер профиля | |
|
||||
| profile_name | string | название профиля | может отсутствовать |
|
||||
| template_n | number | номер шаблона, на базе которого создан профиль | может отсутствовать |
|
||||
| template_name | string | название шаблона, на базе которого создан профиль | может отсутствовать |
|
||||
| cookie | string | значение параметра nfqws2 --cookie для профиля | может отсутствовать |
|
||||
| outgoing | bool | true , если направление исходящее | |
|
||||
| ifin | string | имя входящего интерфейса | может отсутствовать |
|
||||
| ifout | string | имя исходящего интерфейса | может отсутствовать |
|
||||
| fwmark | number | fwmark текущего пакета | только в Linux |
|
||||
| target | table | таблица, включающая ip адрес и порт, на базе которых проверяются ipset-ы и фильтры по портам | |
|
||||
| replay | bool | проигрывание задержанного пакета (replay) | |
|
||||
| replay_piece | number | номер проигрываемой части | нумерация с 1 |
|
||||
| replay_piece_count | number | количество проигрываемых частей | |
|
||||
| replay_piece_last | bool | последняя проигрываемая часть | |
|
||||
| l7payload | string | тип пейлоада текущего пакета или группы пакетов. список возможных в help тексте nfqws2 | если неизвестно - unknown |
|
||||
| l7proto | string | тип протокола потока | если неизвестно - unknown |
|
||||
| reasm_data | string | результат сборки многопакетного сообщения, либо сам пейлоад, если сборки не было | пока применяется только для tcp |
|
||||
| reasm_offset | string | смещение текущего переигрываемого пакета в сборке | пока применяется только для tcp |
|
||||
| decrypt_data | string | результат сборки и дешифровки пейлоада или пейлоадов нескольких пакетов | применяется для quic |
|
||||
| tcp_mss | number | MSS противоположного конца tcp соединения | присутствует всегда, только для tcp |
|
||||
| track | table | данные, привязанные к записи conntrack | только если есть conntrack, может не быть |
|
||||
| arg | table | все аргументы инстанса и их значения | подстановки % и # уже замещены |
|
||||
| dis | table | диссект текущего пакета | |
|
||||
|
||||
### Структура диссекта
|
||||
|
||||
@@ -1164,80 +1413,80 @@ ipv6 extension headers и tcp options представляются в форме
|
||||
Все числовые многобайтовые значения автоматически переведены из network byte order в machine byte order.
|
||||
|
||||
**dissect**
|
||||
| Поле | Тип | Описание |
|
||||
|:------|:----|:---------|
|
||||
| ip | table | заголовок ipv4 |
|
||||
| ip6 | table | заголовок ipv6 |
|
||||
| tcp | table | заголовок tcp |
|
||||
| udp | table | заголовок udp |
|
||||
| l4proto | number | IPPROTO_TCP или IPPROTO_UDP |
|
||||
| transport_len | number | длина пакета без L3 заголовков |
|
||||
| l3_len | number | длина L3 заголовков, включая ip options и ipv6 extension headers |
|
||||
| l4_len | number | длина L4 заголовка, включая tcp options |
|
||||
| payload | string | L4 пейлоад |
|
||||
| Поле | Тип | Описание |
|
||||
| :------------ | :----- | :--------------------------------------------------------------- |
|
||||
| ip | table | заголовок ipv4 |
|
||||
| ip6 | table | заголовок ipv6 |
|
||||
| tcp | table | заголовок tcp |
|
||||
| udp | table | заголовок udp |
|
||||
| l4proto | number | IPPROTO_TCP или IPPROTO_UDP |
|
||||
| transport_len | number | длина пакета без L3 заголовков |
|
||||
| l3_len | number | длина L3 заголовков, включая ip options и ipv6 extension headers |
|
||||
| l4_len | number | длина L4 заголовка, включая tcp options |
|
||||
| payload | string | L4 пейлоад |
|
||||
|
||||
**ip**
|
||||
| Поле | Описание |
|
||||
|:------|:---------|
|
||||
| ip_v | версия ip - 4 |
|
||||
| ip_hl | длина ip заголовка в блоках по 4 байта. 5 без ip options. |
|
||||
| ip_tos | type of service. содержит DSCP |
|
||||
| ip_len | полная длина ip пакета вместе со всеми заголовками и пейлоадом |
|
||||
| ip_id | идентификация пакета для сборки из фрагментов |
|
||||
| ip_off | offset фрагмента, флаги MF (more fragments) и DF (dont fragment) |
|
||||
| ip_ttl | time to live - максимальное количество хопов |
|
||||
| ip_p | [номер ip протокола](https://www.iana.org/assignments/protocol-numbers/protocol-numbers.xhtml). как правило IPPROTO_TCP или IPPROTO_UDP |
|
||||
| ip_sum | чексумма ip хедера |
|
||||
| ip_src | ip источника |
|
||||
| ip_src | ip назначения |
|
||||
| options | бинарный блок ip options (практически не используется, режется всеми) |
|
||||
| Поле | Описание |
|
||||
| :------ | :-------------------------------------------------------------------------------------------------------------------------------------- |
|
||||
| ip_v | версия ip - 4 |
|
||||
| ip_hl | длина ip заголовка в блоках по 4 байта. 5 без ip options. |
|
||||
| ip_tos | type of service. содержит DSCP |
|
||||
| ip_len | полная длина ip пакета вместе со всеми заголовками и пейлоадом |
|
||||
| ip_id | идентификация пакета для сборки из фрагментов |
|
||||
| ip_off | offset фрагмента, флаги MF (more fragments) и DF (dont fragment) |
|
||||
| ip_ttl | time to live - максимальное количество хопов |
|
||||
| ip_p | [номер ip протокола](https://www.iana.org/assignments/protocol-numbers/protocol-numbers.xhtml). как правило IPPROTO_TCP или IPPROTO_UDP |
|
||||
| ip_sum | чексумма ip хедера |
|
||||
| ip_src | ip источника |
|
||||
| ip_src | ip назначения |
|
||||
| options | бинарный блок ip options (практически не используется, режется всеми) |
|
||||
|
||||
**ip6**
|
||||
| Поле | Описание |
|
||||
|:------|:---------|
|
||||
| ip6_flow | первые 4 байта ipv6 header : version (6), traffic class, flow label |
|
||||
| ip6_plen | длина пакета за вычетом базового хедера ipv6 - IP6_BASE_LEN (40) байт |
|
||||
| ip6_nxt | [следующий протокол](https://www.iana.org/assignments/protocol-numbers/protocol-numbers.xhtml). если нет exthdr - IPPROTO_TCP (6) или IPPROTO_UDP (17) |
|
||||
| ip6_hlim | hop limit. имеет тот же смысл, что и TTL в ipv4 |
|
||||
| ip6_src | ipv6 адрес источника |
|
||||
| ip6_dst | ipv6 адрес приемника |
|
||||
| exthdr | массив таблиц расширенных хедеров (индекс от 1) |
|
||||
| Поле | Описание |
|
||||
| :------- | :----------------------------------------------------------------------------------------------------------------------------------------------------- |
|
||||
| ip6_flow | первые 4 байта ipv6 header : version (6), traffic class, flow label |
|
||||
| ip6_plen | длина пакета за вычетом базового хедера ipv6 - IP6_BASE_LEN (40) байт |
|
||||
| ip6_nxt | [следующий протокол](https://www.iana.org/assignments/protocol-numbers/protocol-numbers.xhtml). если нет exthdr - IPPROTO_TCP (6) или IPPROTO_UDP (17) |
|
||||
| ip6_hlim | hop limit. имеет тот же смысл, что и TTL в ipv4 |
|
||||
| ip6_src | ipv6 адрес источника |
|
||||
| ip6_dst | ipv6 адрес приемника |
|
||||
| exthdr | массив таблиц расширенных хедеров (индекс от 1) |
|
||||
|
||||
**ip6 exthdr**
|
||||
| Поле | Описание |
|
||||
|:------|:---------|
|
||||
| Поле | Описание |
|
||||
| :--- | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
||||
| type | [тип хедера](https://www.iana.org/assignments/protocol-numbers/protocol-numbers.xhtml) : IPPROTO_HOPOPTS, IPPROTO_ROUTING, IPPROTO_DSTOPTS, IPPROTO_MH, IPPROTO_HIP, IPPROTO_SHIM6, IPPROTO_FRAGMENT, IPPROTO_AH |
|
||||
| next | тип следующего хедера. аналогично type. для последнего хедера может быть IPPROTO_TCP или IPPROTO_UDP |
|
||||
| data | данные без первых двух байтов - типа и длины |
|
||||
| next | тип следующего хедера. аналогично type. для последнего хедера может быть IPPROTO_TCP или IPPROTO_UDP |
|
||||
| data | данные без первых двух байтов - типа и длины |
|
||||
|
||||
**udp**
|
||||
| Поле | Описание |
|
||||
|:------|:---------|
|
||||
| uh_sport | порт источника |
|
||||
| uh_dport | порт приемника |
|
||||
| uh_ulen | длина udp - header UDP_BASE_LEN (8) + длина пейлоада |
|
||||
| uh_sum | чексумма udp |
|
||||
| Поле | Описание |
|
||||
| :------- | :--------------------------------------------------- |
|
||||
| uh_sport | порт источника |
|
||||
| uh_dport | порт приемника |
|
||||
| uh_ulen | длина udp - header UDP_BASE_LEN (8) + длина пейлоада |
|
||||
| uh_sum | чексумма udp |
|
||||
|
||||
**tcp**
|
||||
| Поле | Описание |
|
||||
|:------|:---------|
|
||||
| th_sport | порт источника |
|
||||
| th_dport | порт приемника |
|
||||
| th_x2 | зарезервированное поле. используется для расширенных tcp flags |
|
||||
| th_off | размер tcp хедера в блоках по 4 байта |
|
||||
| th_flags | tcp флаги : TH_FIN,TH_SYN,TH_RST,TH_PUSH,TH_ACK,TH_FIN,TH_URG,TH_ECE,TH_CWR |
|
||||
| th_seq | sequence number |
|
||||
| th_ack | acknowledgement number |
|
||||
| th_win | размер tcp окна |
|
||||
| th_sum | чексумма tcp |
|
||||
| th_urp | urgent pointer |
|
||||
| options | массив таблиц [tcp опций](https://www.iana.org/assignments/tcp-parameters/tcp-parameters.xhtml) (индекс от 1) |
|
||||
| Поле | Описание |
|
||||
| :------- | :------------------------------------------------------------------------------------------------------------ |
|
||||
| th_sport | порт источника |
|
||||
| th_dport | порт приемника |
|
||||
| th_x2 | зарезервированное поле. используется для расширенных tcp flags |
|
||||
| th_off | размер tcp хедера в блоках по 4 байта |
|
||||
| th_flags | tcp флаги : TH_FIN,TH_SYN,TH_RST,TH_PUSH,TH_ACK,TH_FIN,TH_URG,TH_ECE,TH_CWR |
|
||||
| th_seq | sequence number |
|
||||
| th_ack | acknowledgement number |
|
||||
| th_win | размер tcp окна |
|
||||
| th_sum | чексумма tcp |
|
||||
| th_urp | urgent pointer |
|
||||
| options | массив таблиц [tcp опций](https://www.iana.org/assignments/tcp-parameters/tcp-parameters.xhtml) (индекс от 1) |
|
||||
|
||||
**tcp options**
|
||||
| Поле | Описание |
|
||||
|:------|:---------|
|
||||
| Поле | Описание |
|
||||
| :--- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
|
||||
| kind | [тип опции](https://www.iana.org/assignments/tcp-parameters/tcp-parameters.xhtml) : TCP_KIND_END, TCP_KIND_NOOP, TCP_KIND_MSS, TCP_KIND_SCALE, TCP_KIND_SACK_PERM, TCP_KIND_SACK, TCP_KIND_TS, TCP_KIND_MD5, TCP_KIND_AO, TCP_KIND_FASTOPEN |
|
||||
| data | блок данных опции без kind и length. отсутствует для TCP_KIND_END и TCP_KIND_NOOP |
|
||||
| data | блок данных опции без kind и length. отсутствует для TCP_KIND_END и TCP_KIND_NOOP |
|
||||
|
||||
### Особенности приема многопакетных пейлоадов
|
||||
|
||||
@@ -1265,17 +1514,17 @@ ipv6 extension headers и tcp options представляются в форме
|
||||
То же самое верно для опциональных полей track. Проверяйте ваш код с `--ctrack-disable` и на разных протоколах - tcp, udp.
|
||||
|
||||
**track**
|
||||
| Поле | Тип | Описание | Примечание |
|
||||
|:------|:-----|:---------|:-----------|
|
||||
| incoming_ttl | number | ttl/hl первого входящего пакета по потоку | может не быть, если не определено |
|
||||
| l7proto | string | протокол потока. список возможных доступен в help тексте nfqws2 | есть всегда. если неизвестно - unknown |
|
||||
| hostname | string | имя хоста. определяется на основе анализа L6/L7 протоколов | появляется только после определения |
|
||||
| hostname_is_ip | bool | является ли hostname ip адресом | только если есть hostname |
|
||||
| lua_state | table | таблица для хранения состояния, привязанного к потоку | есть всегда, передается с каждым пакетом потока |
|
||||
| lua_in_cutoff | bool | отсечение LUA от входящего направления | только для чтения |
|
||||
| lua_out_cutoff | bool | отсечение LUA от исходящего направления | только для чтения |
|
||||
| t_start | number | unix time первого пакета потока | включает дробную часть с высокой точностью |
|
||||
| pos | table | счетчики по различным направлениям | содержит таблицы client, server, direct, reverse |
|
||||
| Поле | Тип | Описание | Примечание |
|
||||
| :------------- | :----- | :-------------------------------------------------------------- | :----------------------------------------------- |
|
||||
| incoming_ttl | number | ttl/hl первого входящего пакета по потоку | может не быть, если не определено |
|
||||
| l7proto | string | протокол потока. список возможных доступен в help тексте nfqws2 | есть всегда. если неизвестно - unknown |
|
||||
| hostname | string | имя хоста. определяется на основе анализа L6/L7 протоколов | появляется только после определения |
|
||||
| hostname_is_ip | bool | является ли hostname ip адресом | только если есть hostname |
|
||||
| lua_state | table | таблица для хранения состояния, привязанного к потоку | есть всегда, передается с каждым пакетом потока |
|
||||
| lua_in_cutoff | bool | отсечение LUA от входящего направления | только для чтения |
|
||||
| lua_out_cutoff | bool | отсечение LUA от исходящего направления | только для чтения |
|
||||
| t_start | number | unix time первого пакета потока | включает дробную часть с высокой точностью |
|
||||
| pos | table | счетчики по различным направлениям | содержит таблицы client, server, direct, reverse |
|
||||
|
||||
Таблица track.pos содержит подтаблицы с набором счетчиков по двум направлениям - client и server.
|
||||
client означает пакеты от клиента, server - пакеты от сервера.
|
||||
@@ -1288,23 +1537,23 @@ track.pos содержит еще одно поле - `dt`. Время полу
|
||||
|
||||
Список полей таблицы счетчиков приведен ниже. Подтаблица tcp присутствует только для tcp протокола.
|
||||
|
||||
| Поле | Описание | Примечание |
|
||||
|:------|:---------|:-----------|
|
||||
| pcounter | счетчик пакетов | |
|
||||
| pdcounter | счетчик пакетов с данными | пакеты, у которых размер L4 пейлоада не равен 0 |
|
||||
| pbcounter | счетчик переданных байт | считаются только размеры пейлоада L4, заголовки - нет |
|
||||
| ip6_flow | последнее поле ip6.ip6_flow | отсутствует, если неизвестно или ip протокол - не ipv6 |
|
||||
| tcp.seq0 | начальный sequence соединения | |
|
||||
| tcp.seq | sequence текущего пакета | |
|
||||
| tcp.rseq | relative sequence текущего пакета | вычисляется как seq-seq0 |
|
||||
| tcp.rseq_over_2G | был переход rseq за границу 2 GB | s и p позиции больше нельзя учитывать |
|
||||
| tcp.pos | relative sequence верхней границы текущего пакета | вычисляется как rseq+payload_size |
|
||||
| tcp.uppos | максимальный pos в соединении | |
|
||||
| tcp.uppos_prev | uppos в предыдущем пакете с данными | полезно для определения ретрансмиссий |
|
||||
| tcp.winsize | последнее поле th_win | без коррекции по scale |
|
||||
| tcp.scale | последнее значение tcp опции scale | |
|
||||
| tcp.winsize_calc | коррекция winsize с учетом scale | эффективное значение tcp window size |
|
||||
| tcp.mss | последнее значение tcp опции mss | |
|
||||
| Поле | Описание | Примечание |
|
||||
| :--------------- | :------------------------------------------------ | :----------------------------------------------------- |
|
||||
| pcounter | счетчик пакетов | |
|
||||
| pdcounter | счетчик пакетов с данными | пакеты, у которых размер L4 пейлоада не равен 0 |
|
||||
| pbcounter | счетчик переданных байт | считаются только размеры пейлоада L4, заголовки - нет |
|
||||
| ip6_flow | последнее поле ip6.ip6_flow | отсутствует, если неизвестно или ip протокол - не ipv6 |
|
||||
| tcp.seq0 | начальный sequence соединения | |
|
||||
| tcp.seq | sequence текущего пакета | |
|
||||
| tcp.rseq | relative sequence текущего пакета | вычисляется как seq-seq0 |
|
||||
| tcp.rseq_over_2G | был переход rseq за границу 2 GB | s и p позиции больше нельзя учитывать |
|
||||
| tcp.pos | relative sequence верхней границы текущего пакета | вычисляется как rseq+payload_size |
|
||||
| tcp.uppos | максимальный pos в соединении | |
|
||||
| tcp.uppos_prev | uppos в предыдущем пакете с данными | полезно для определения ретрансмиссий |
|
||||
| tcp.winsize | последнее поле th_win | без коррекции по scale |
|
||||
| tcp.scale | последнее значение tcp опции scale | |
|
||||
| tcp.winsize_calc | коррекция winsize с учетом scale | эффективное значение tcp window size |
|
||||
| tcp.mss | последнее значение tcp опции mss | |
|
||||
|
||||
mss, winsize, scale передаются от одной стороны соединения другой стороне, чтобы она знала о допустимых параметрах партнера.
|
||||
При использовани этих полей важно не перепутать сторону.
|
||||
@@ -1328,42 +1577,42 @@ mss дублируется в поле `desync.tcp_mss` независимо о
|
||||
|
||||
## Базовые константы
|
||||
|
||||
| Поле | Тип | Описание | Примечание |
|
||||
|:------|:-----|:---------|:-----------|
|
||||
| qnum | number | номер очереди NFQUEUE | только в Linux |
|
||||
| divert_port | number | номер порта divert | только в BSD |
|
||||
| desync_fwmark | number | fwmark для Linux, sockarg для BSD, 0 в Windows | |
|
||||
| NFQWS2_VER | string | версия nfqws2 | строка, выводимая по --version |
|
||||
| NFQWS2_COMPAT_VER | number | порядковый номер несовместимых изменений интерфейса с nfqws2 | увеличивается на 1 после каждого изменения |
|
||||
| b_debug | bool | включен --debug | вывод отладочных сообщений |
|
||||
| b_daemon | bool | включен --daemon | демонизация процесса, отвязка от tty |
|
||||
| b_server | bool | включен --server | серверный режим |
|
||||
| b_ipcache_hostname | bool | включен --ipcache-hostname | кэширование имен хостов, соответствующих IP адресам |
|
||||
| b_ctrack_disable | bool | включен --ctrack-disable | отключен conntrack |
|
||||
| VERDICT_PASS<br>VERDICT_MODIFY<br>VERDICT_DROP | number | код вердикта desync функции | |
|
||||
| DEFAULT_MSS | number | значение MSS по умолчанию | 1220 |
|
||||
| IP_BASE_LEN | number | базовый размер ipv4 хедера | 20 |
|
||||
| IP6_BASE_LEN | number | базовый размер ipv6 хедера | 40 |
|
||||
| TCP_BASE_LEN | number | базовый размер tcp хедера | 20 |
|
||||
| UDP_BASE_LEN | number | размер udp хедера | 8 |
|
||||
| TCP_KIND_END<br>TCP_KIND_NOOP<br>TCP_KIND_MSS<br>TCP_KIND_SCALE<br>TCP_KIND_SACK_PERM<br>TCP_KIND_SACK<br>TCP_KIND_TS<br>TCP_KIND_MD5<br>TCP_KIND_AO<br>TCP_KIND_FASTOPEN | number | коды типов tcp опций (kinds) | |
|
||||
| TH_FIN<br>TH_SYN<br>TH_RST<br>TH_PUSH<br>TH_ACK<br>TH_FIN<br>TH_URG<br>TH_ECE<br>TH_CWR | number | tcp флаги | можно складывать через + |
|
||||
| IP_MF | number | флаг IP "more fragments" | 0x8000, часть поля ip_off |
|
||||
| IP_DF | number | флаг IP "dont fragment" | 0x4000, часть поля ip_off |
|
||||
| IP_RF | number | флаг IP "reserved" | 0x2000, часть поля ip_off |
|
||||
| IP_OFFMASK | number | битовая маска поля ip_off, соответствующая fragment offset | 0x1FFF |
|
||||
| IP_FLAGMASK | number | битовая маска поля ip_off, соответствующая IP флагам | 0xE000 |
|
||||
| IPTOS_ECN_MASK | number | битовая маска поля ip_tos, соответствующая ECN | 0x03 |
|
||||
| IPTOS_ECN_NOT_ECT | number | Not ECN-Capable Transport | 0x00 |
|
||||
| IPTOS_ECN_ECT1 | number | ECN Capable Transport(1) | 0x01 |
|
||||
| IPTOS_ECN_ECT1 | number | ECN Capable Transport(0) | 0x02 |
|
||||
| IPTOS_ECN_CE1 | number | Congestion Experienced | 0x03 |
|
||||
| IPTOS_DSCP_MASK | number | битовая маска поля ip_tos, соответствующая DSCP | 0xFC |
|
||||
| IP6F_MORE_FRAG | number | бит "More fragment" поля ip6f_offlg из ipv6 fragment header | 0x0001 |
|
||||
| IP6 | number | бит "More fragment" поля ip6f_offlg из ipv6 fragment header | 0x0001 |
|
||||
| IPV6_FLOWLABEL_MASK | number | flow label в ip6_flow | 0x000FFFFF |
|
||||
| IPV6_FLOWINFO_MASK | number | flow label, traffic class в ip6_flow | 0x0FFFFFFF |
|
||||
| IPPROTO_IP<br>IPPROTO_IPV6<br>IPPROTO_ICMP<br>IPPROTO_TCP<br>IPPROTO_UDP<br>IPPROTO_ICMPV6<br>IPPROTO_HOPOPTS<br>IPPROTO_ROUTING<br>IPPROTO_FRAGMENT<br>IPPROTO_AH<br>IPPROTO_ESP<br>IPPROTO_DSTOPTS<br>IPPROTO_MH<br>IPPROTO_HIP<br>IPPROTO_SHIM6<br>IPPROTO_NONE | number | [номера IP протоколов](https://www.iana.org/assignments/protocol-numbers/protocol-numbers.xhtml) | используются в ipv4 и ipv6 |
|
||||
| Поле | Тип | Описание | Примечание |
|
||||
| :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :----- | :----------------------------------------------------------------------------------------------- | :-------------------------------------------------- |
|
||||
| qnum | number | номер очереди NFQUEUE | только в Linux |
|
||||
| divert_port | number | номер порта divert | только в BSD |
|
||||
| desync_fwmark | number | fwmark для Linux, sockarg для BSD, 0 в Windows | |
|
||||
| NFQWS2_VER | string | версия nfqws2 | строка, выводимая по --version |
|
||||
| NFQWS2_COMPAT_VER | number | порядковый номер несовместимых изменений интерфейса с nfqws2 | увеличивается на 1 после каждого изменения |
|
||||
| b_debug | bool | включен --debug | вывод отладочных сообщений |
|
||||
| b_daemon | bool | включен --daemon | демонизация процесса, отвязка от tty |
|
||||
| b_server | bool | включен --server | серверный режим |
|
||||
| b_ipcache_hostname | bool | включен --ipcache-hostname | кэширование имен хостов, соответствующих IP адресам |
|
||||
| b_ctrack_disable | bool | включен --ctrack-disable | отключен conntrack |
|
||||
| VERDICT_PASS<br>VERDICT_MODIFY<br>VERDICT_DROP | number | код вердикта desync функции | |
|
||||
| DEFAULT_MSS | number | значение MSS по умолчанию | 1220 |
|
||||
| IP_BASE_LEN | number | базовый размер ipv4 хедера | 20 |
|
||||
| IP6_BASE_LEN | number | базовый размер ipv6 хедера | 40 |
|
||||
| TCP_BASE_LEN | number | базовый размер tcp хедера | 20 |
|
||||
| UDP_BASE_LEN | number | размер udp хедера | 8 |
|
||||
| TCP_KIND_END<br>TCP_KIND_NOOP<br>TCP_KIND_MSS<br>TCP_KIND_SCALE<br>TCP_KIND_SACK_PERM<br>TCP_KIND_SACK<br>TCP_KIND_TS<br>TCP_KIND_MD5<br>TCP_KIND_AO<br>TCP_KIND_FASTOPEN | number | коды типов tcp опций (kinds) | |
|
||||
| TH_FIN<br>TH_SYN<br>TH_RST<br>TH_PUSH<br>TH_ACK<br>TH_FIN<br>TH_URG<br>TH_ECE<br>TH_CWR | number | tcp флаги | можно складывать через + |
|
||||
| IP_MF | number | флаг IP "more fragments" | 0x8000, часть поля ip_off |
|
||||
| IP_DF | number | флаг IP "dont fragment" | 0x4000, часть поля ip_off |
|
||||
| IP_RF | number | флаг IP "reserved" | 0x2000, часть поля ip_off |
|
||||
| IP_OFFMASK | number | битовая маска поля ip_off, соответствующая fragment offset | 0x1FFF |
|
||||
| IP_FLAGMASK | number | битовая маска поля ip_off, соответствующая IP флагам | 0xE000 |
|
||||
| IPTOS_ECN_MASK | number | битовая маска поля ip_tos, соответствующая ECN | 0x03 |
|
||||
| IPTOS_ECN_NOT_ECT | number | Not ECN-Capable Transport | 0x00 |
|
||||
| IPTOS_ECN_ECT1 | number | ECN Capable Transport(1) | 0x01 |
|
||||
| IPTOS_ECN_ECT1 | number | ECN Capable Transport(0) | 0x02 |
|
||||
| IPTOS_ECN_CE1 | number | Congestion Experienced | 0x03 |
|
||||
| IPTOS_DSCP_MASK | number | битовая маска поля ip_tos, соответствующая DSCP | 0xFC |
|
||||
| IP6F_MORE_FRAG | number | бит "More fragment" поля ip6f_offlg из ipv6 fragment header | 0x0001 |
|
||||
| IP6 | number | бит "More fragment" поля ip6f_offlg из ipv6 fragment header | 0x0001 |
|
||||
| IPV6_FLOWLABEL_MASK | number | flow label в ip6_flow | 0x000FFFFF |
|
||||
| IPV6_FLOWINFO_MASK | number | flow label, traffic class в ip6_flow | 0x0FFFFFFF |
|
||||
| IPPROTO_IP<br>IPPROTO_IPV6<br>IPPROTO_ICMP<br>IPPROTO_TCP<br>IPPROTO_UDP<br>IPPROTO_ICMPV6<br>IPPROTO_HOPOPTS<br>IPPROTO_ROUTING<br>IPPROTO_FRAGMENT<br>IPPROTO_AH<br>IPPROTO_ESP<br>IPPROTO_DSTOPTS<br>IPPROTO_MH<br>IPPROTO_HIP<br>IPPROTO_SHIM6<br>IPPROTO_NONE | number | [номера IP протоколов](https://www.iana.org/assignments/protocol-numbers/protocol-numbers.xhtml) | используются в ipv4 и ipv6 |
|
||||
|
||||
### Стандартные блобы
|
||||
|
||||
@@ -1648,11 +1897,11 @@ function gettid()
|
||||
#### standard reconstruct
|
||||
|
||||
Опции реконструкции диссектов - reconstruct_opts. Реконструкция - это сборка raw пакета из диссекта.
|
||||
| Поле | Тип | Описание |
|
||||
|:------|:----|:---------|
|
||||
| badsum | bool | испортить L4 checksum. посчитать чексумму и сделать xor со случайным значением от 1 до 0xFFFF |
|
||||
| ip6_preserve_next | bool | использовать значения "next" из ip6.exthdr |
|
||||
| ip6_last_proto | number | если ip6_preserve_next=true, IP протокол последнего exthdr |
|
||||
| Поле | Тип | Описание |
|
||||
| :---------------- | :----- | :-------------------------------------------------------------------------------------------- |
|
||||
| badsum | bool | испортить L4 checksum. посчитать чексумму и сделать xor со случайным значением от 1 до 0xFFFF |
|
||||
| ip6_preserve_next | bool | использовать значения "next" из ip6.exthdr |
|
||||
| ip6_last_proto | number | если ip6_preserve_next=true, IP протокол последнего exthdr |
|
||||
|
||||
При сборке ipv6 по умолчанию цепочка ip протоколов в exthdr собирается автоматически.
|
||||
У каждого exthdr есть поле type, поэтому понятно что вписывать в предыдущий exthdr,
|
||||
@@ -1673,11 +1922,11 @@ badsum вынесен в реконструкцию, поскольку чекс
|
||||
#### standard rawsend
|
||||
|
||||
Опции отсылки raw пакетов - rawsend_opts
|
||||
| Поле | Тип | Описание |
|
||||
|:------|:----|:---------|
|
||||
| repeats | number | количество повторов отсылки одного и того же пакета |
|
||||
| fwmark | number | fwmark исходящего пакета. только для linux. по умолчанию 0. бит desync_mark устанавливается принудительно |
|
||||
| ifout | string | исходящий интерфейс. может использоваться или не использоваться в разных ситуациях |
|
||||
| Поле | Тип | Описание |
|
||||
| :------ | :----- | :-------------------------------------------------------------------------------------------------------- |
|
||||
| repeats | number | количество повторов отсылки одного и того же пакета |
|
||||
| fwmark | number | fwmark исходящего пакета. только для linux. по умолчанию 0. бит desync_mark устанавливается принудительно |
|
||||
| ifout | string | исходящий интерфейс. может использоваться или не использоваться в разных ситуациях |
|
||||
|
||||
ifout всегда следует передавать таким, каким он пришел в диссекте.
|
||||
Для windows правильный ifout обязателен. На BSD он не используется.
|
||||
@@ -1858,26 +2107,26 @@ function execution_plan(ctx)
|
||||
их внутрипрофильных фильтрах и аргументах.
|
||||
|
||||
**Элемент plan**
|
||||
| Поле | Тип | Описание |
|
||||
|:------|:----|:---------|
|
||||
| func | string | имя desync функции |
|
||||
| func_n | number | номер инстанса внутри профиля |
|
||||
| func_instance | string | название инстанса | производная имени функции, номера инстанса и номера профиля |
|
||||
| range | table | эффективный диапазон [счетчиков](#внутрипрофильные-фильтры) `--in-range` или `--out-range` в зависимости от текущего направления |
|
||||
| payload_filter | string | эффективный `--payload-filter` . список названий пейлоадов через запятую |
|
||||
| Поле | Тип | Описание |
|
||||
| :------------- | :----- | :------------------------------------------------------------------------------------------------------------------------------- |
|
||||
| func | string | имя desync функции |
|
||||
| func_n | number | номер инстанса внутри профиля |
|
||||
| func_instance | string | название инстанса | производная имени функции, номера инстанса и номера профиля |
|
||||
| range | table | эффективный диапазон [счетчиков](#внутрипрофильные-фильтры) `--in-range` или `--out-range` в зависимости от текущего направления |
|
||||
| payload_filter | string | эффективный `--payload-filter` . список названий пейлоадов через запятую |
|
||||
|
||||
**range**
|
||||
| Поле | Тип | Описание |
|
||||
|:------|:------|:---------|
|
||||
| from | table | позиция нижней границы |
|
||||
| to | table | позиция верхней границы |
|
||||
| upper_cutoff | bool | true = верхняя граница невключительна, false = включительна |
|
||||
| Поле | Тип | Описание |
|
||||
| :----------- | :---- | :---------------------------------------------------------- |
|
||||
| from | table | позиция нижней границы |
|
||||
| to | table | позиция верхней границы |
|
||||
| upper_cutoff | bool | true = верхняя граница невключительна, false = включительна |
|
||||
|
||||
**pos - from,to**
|
||||
| Поле | Тип | Описание |
|
||||
|:------|:-------|:---------|
|
||||
| mode | string | режим счетчика - a, x, n, d, b, s, p |
|
||||
| pos | number | значение счетчика |
|
||||
| Поле | Тип | Описание |
|
||||
| :--- | :----- | :----------------------------------- |
|
||||
| mode | string | режим счетчика - a, x, n, d, b, s, p |
|
||||
| pos | number | значение счетчика |
|
||||
|
||||
#### execution_plan_cancel
|
||||
|
||||
@@ -2351,10 +2600,10 @@ delta - это положительная или отрицательная ра
|
||||
### standard ipid
|
||||
|
||||
**ipid_options**
|
||||
| Поле | Описание |
|
||||
|:------|:---------|
|
||||
| ip_id | режим назначения ip_id : seq, rnd, zero, none<br>seq - последовательное<br>rnd - случайное<br>zero - ноль<br>none - не менять |
|
||||
| ip_id_conn | запоминать последнее сгенерированное значение seq и начинать с него в следующем пакете. не работает без desync.track |
|
||||
| Поле | Описание |
|
||||
| :--------- | :---------------------------------------------------------------------------------------------------------------------------- |
|
||||
| ip_id | режим назначения ip_id : seq, rnd, zero, none<br>seq - последовательное<br>rnd - случайное<br>zero - ноль<br>none - не менять |
|
||||
| ip_id_conn | запоминать последнее сгенерированное значение seq и начинать с него в следующем пакете. не работает без desync.track |
|
||||
|
||||
Из seq далеко не всегда получится ожидаемая и преемлемая последовательность.
|
||||
ip_id применяется только в ряде функций, оно не применяется ко всем проходящим пакетам автоматически.
|
||||
@@ -2366,26 +2615,26 @@ Windows заменяет нулевые ip_id на собственную пос
|
||||
### standard fooling
|
||||
|
||||
**fooling_options**
|
||||
| Поле | Описание |
|
||||
|:------|:---------|
|
||||
| ip_ttl | изменить TTL в ipv4 заголовке на указанный |
|
||||
| ip6_ttl | изменить TTL (HL) в ipv6 заголовке на указанный |
|
||||
| ip_autottl | изменить TTL в ipv4 заголовке на автоматически определяемый по шаблону autottl `delta,min-max`. При невозможности определения TTL берется ip_ttl, если есть. Иначе TTL не меняется. |
|
||||
| ip6_autottl | изменить HL в ipv6 заголовке на автоматически определяемый по шаблону autottl `delta,min-max`. При невозможности определения HL берется ip6_ttl, если есть. Иначе HL не меняется. |
|
||||
| ip6_hopbyhop | вставить extension header "hop-by-hop options". по умолчанию данные - 6 нулей, но можно задать hex строку с данными. длина должна быть 6+N*8 |
|
||||
| ip6_hopbyhop2 | вставить второй extension header "hop-by-hop options" |
|
||||
| ip6_destopt | вставить extension header "destination options". по умолчанию данные - 6 нулей, но можно задать hex строку с данными. длина должна быть 6+N*8 |
|
||||
| ip6_destopt2 | вставить второй extension header "destination options" |
|
||||
| ip6_routing | вставить extension header "routing options". по умолчанию данные - 6 нулей, но можно задать hex строку с данными. длина должна быть 6+N*8 |
|
||||
| ip6_ah | вставить extension header "authentication header". по умолчанию данные - 2 нуля и 4 случайных байта, но можно задать hex строку с данными. длина должна быть 6+N*4 |
|
||||
| tcp_seq | положительное или отрицательное смещение sequence |
|
||||
| tcp_ack | положительное или отрицательное смещение ack sequence |
|
||||
| tcp_ts | положительное или отрицательное смещение timestamp. работает только если уже есть timestamp option |
|
||||
| tcp_md5 | добавить MD5 header, если его еще нет. по умолчанию - случайные байты, но можно задать hex string длиной 16 байт |
|
||||
| tcp_flags_set | установить флаги TCP. флаги представлены списком через зяпятую : FIN,SYN,RST,PUSH,ACK,FIN,URG,ECE,CWR |
|
||||
| tcp_flags_unset | снять флаги TCP. аналогично tcp_flags_set |
|
||||
| tcp_ts_up | поднять tcp timestamp опцию в самое начало, если она есть |
|
||||
| fool | имя кастомной функции фулинга. она берет диссект и таблицу fooling_options |
|
||||
| Поле | Описание |
|
||||
| :-------------- | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
||||
| ip_ttl | изменить TTL в ipv4 заголовке на указанный |
|
||||
| ip6_ttl | изменить TTL (HL) в ipv6 заголовке на указанный |
|
||||
| ip_autottl | изменить TTL в ipv4 заголовке на автоматически определяемый по шаблону autottl `delta,min-max`. При невозможности определения TTL берется ip_ttl, если есть. Иначе TTL не меняется. |
|
||||
| ip6_autottl | изменить HL в ipv6 заголовке на автоматически определяемый по шаблону autottl `delta,min-max`. При невозможности определения HL берется ip6_ttl, если есть. Иначе HL не меняется. |
|
||||
| ip6_hopbyhop | вставить extension header "hop-by-hop options". по умолчанию данные - 6 нулей, но можно задать hex строку с данными. длина должна быть 6+N*8 |
|
||||
| ip6_hopbyhop2 | вставить второй extension header "hop-by-hop options" |
|
||||
| ip6_destopt | вставить extension header "destination options". по умолчанию данные - 6 нулей, но можно задать hex строку с данными. длина должна быть 6+N*8 |
|
||||
| ip6_destopt2 | вставить второй extension header "destination options" |
|
||||
| ip6_routing | вставить extension header "routing options". по умолчанию данные - 6 нулей, но можно задать hex строку с данными. длина должна быть 6+N*8 |
|
||||
| ip6_ah | вставить extension header "authentication header". по умолчанию данные - 2 нуля и 4 случайных байта, но можно задать hex строку с данными. длина должна быть 6+N*4 |
|
||||
| tcp_seq | положительное или отрицательное смещение sequence |
|
||||
| tcp_ack | положительное или отрицательное смещение ack sequence |
|
||||
| tcp_ts | положительное или отрицательное смещение timestamp. работает только если уже есть timestamp option |
|
||||
| tcp_md5 | добавить MD5 header, если его еще нет. по умолчанию - случайные байты, но можно задать hex string длиной 16 байт |
|
||||
| tcp_flags_set | установить флаги TCP. флаги представлены списком через зяпятую : FIN,SYN,RST,PUSH,ACK,FIN,URG,ECE,CWR |
|
||||
| tcp_flags_unset | снять флаги TCP. аналогично tcp_flags_set |
|
||||
| tcp_ts_up | поднять tcp timestamp опцию в самое начало, если она есть |
|
||||
| fool | имя кастомной функции фулинга. она берет диссект и таблицу fooling_options |
|
||||
|
||||
ipv6 extension headers добавляются в следующем порядке:
|
||||
|
||||
@@ -2408,13 +2657,13 @@ tcp_ts_up дублирует старое поведение - двигает ti
|
||||
для которых существуют свои специфические опции.
|
||||
|
||||
**ipfrag_options**
|
||||
| Поле | Описание |
|
||||
|:------|:---------|
|
||||
| ipfrag | имя функции фрагментатора. если нет, использовать ipfrag2. фрагментатор возвращает массив диссектов - фрагментов |
|
||||
| ipfrag_disorder | отправить фрагменты в обратном порядке |
|
||||
| ipfrag_pos_udp | (фрагментатор ipfrag2) позиция фрагментации udp. должна быть кратна 8, по умолчанию 8 |
|
||||
| ipfrag_pos_tcp | (фрагментатор ipfrag2) позиция фрагментации tcp. должна быть кратна 8, по умолчанию 32 |
|
||||
| ipfrag_next | (фрагментатор ipfrag2) тип следующего протокола в "fragment" extension header второго фрагмента |
|
||||
| Поле | Описание |
|
||||
| :-------------- | :--------------------------------------------------------------------------------------------------------------- |
|
||||
| ipfrag | имя функции фрагментатора. если нет, использовать ipfrag2. фрагментатор возвращает массив диссектов - фрагментов |
|
||||
| ipfrag_disorder | отправить фрагменты в обратном порядке |
|
||||
| ipfrag_pos_udp | (фрагментатор ipfrag2) позиция фрагментации udp. должна быть кратна 8, по умолчанию 8 |
|
||||
| ipfrag_pos_tcp | (фрагментатор ipfrag2) позиция фрагментации tcp. должна быть кратна 8, по умолчанию 32 |
|
||||
| ipfrag_next | (фрагментатор ipfrag2) тип следующего протокола в "fragment" extension header второго фрагмента |
|
||||
|
||||
### apply_ip_id
|
||||
|
||||
@@ -2677,18 +2926,18 @@ nfqws2 ничего не знает о том, что нужно `--lua-desync`
|
||||
Фильтр по направлению. В большинстве функций, использующих фильтр по направлению, значение по умолчанию - "out", но есть и те, где по умолчанию "any". Фильтр по направлению можно реализовать и средствами C кода [`--in-range` и `--out-range`](#внутрипрофильные-фильтры).
|
||||
|
||||
**standard direction**
|
||||
| Поле | Описание |
|
||||
|:------|:---------|
|
||||
| dir | in - входящее направление<br> out - исходящее направление<br>any - любое направление |
|
||||
| Поле | Описание |
|
||||
| :--- | :----------------------------------------------------------------------------------- |
|
||||
| dir | in - входящее направление<br> out - исходящее направление<br>any - любое направление |
|
||||
|
||||
### standard payload
|
||||
|
||||
Фильтр по пейлоаду берет список типов пейлоада. Список известных типов пейлоада можно получить из help текста nfqws2. Все пустые пакеты имеют пейлоад empty, неизвестные - unknown. Особые значения - all и known. all означает любой пейлоад, known - не unknown и не empty.
|
||||
|
||||
**standard payload**
|
||||
| Поле | Описание |
|
||||
|:------|:---------|
|
||||
| payload | список допустимых пейлоадов через запятую. ~ в начале означает инверсию |
|
||||
| Поле | Описание |
|
||||
| :------ | :---------------------------------------------------------------------- |
|
||||
| payload | список допустимых пейлоадов через запятую. ~ в начале означает инверсию |
|
||||
|
||||
|
||||
## Базовые функции
|
||||
@@ -3789,37 +4038,37 @@ nfqws2 может работать и самостоятельно без скр
|
||||
|
||||
Сам nfqws2 ничего не знает о скриптах запуска и файле config, не принимает ссылку на него в командной строке.
|
||||
|
||||
| Параметр | Назначение |
|
||||
|:---------|:-----------|
|
||||
| TMPDIR | временная директория вместо /tmp . полезно, если на устройстве мало памяти и tmpfs в /tmp не хватает |
|
||||
| WS_USER | пользователь, под которым запускается nfqws2. по умолчанию используется автоматическое значение в зависимости от ОС |
|
||||
| FWTYPE | тип фаервола - iptables, nftables, ipfw. по умолчанию определяется автоматически |
|
||||
| SET_MAXELEM | максимальное количество записей в создаваемых ipset-ах |
|
||||
| IPSET_OPT | опции ipset от iptables |
|
||||
| IPSET_HOOK | скрипт, который получает имя ipset в $1, выдает в stdout список ip, и они добавляются в ipset |
|
||||
| IP2NET_OPT4<br>IP2NET_OPT6 | настройки ip2net для скриптов получения ip листов |
|
||||
| MDIG_THREADS | количество потоков mdig. используется при ресолвинге хостлистов |
|
||||
| AUTOHOSTLIST_INCOMING_MAXSEQ<br>AUTOHOSTLIST_RETRANS_MAXSEQ<br>AUTOHOSTLIST_RETRANS_THRESHOLD<br>AUTOHOSTLIST_RETRANS_RESET<br>AUTOHOSTLIST_FAIL_THRESHOLD<br>AUTOHOSTLIST_FAIL_TIME<br>AUTOHOSTLIST_UDP_IN<br>AUTOHOSTLIST_UDP_OUT | параметры [автохостлистов](#детектор-неудач-автохостлистов) |
|
||||
| AUTOHOSTLIST_DEBUGLOG | включение autohostlist debug log. лог пишется в `ipset/zapret-hosts-auto-debug.log` |
|
||||
| GZIP_LISTS | применять ли сжатие gzip для генерируемых хост и ip листов |
|
||||
| DESYNC_MARK | марк-бит для предотвращения зацикливания |
|
||||
| DESYNC_MARK_POSTNAT | марк-бит для пометки потоков, идущих по схеме POSTNAT |
|
||||
| FILTER_MARK | если задан, перехватывает пакеты только с этим битом mark. Полезно для организации особых фильтров, например, по ip источника локальной сети. |
|
||||
| POSTNAT | использовать режим перехвата после NAT на nftables. По умолчанию - 1. На iptables перехват всегда до NAT. |
|
||||
| NFQWS2_ENABLE | включение стандартного режима nfqws2 |
|
||||
| NFQWS2_PORTS_TCP<br>NFQWS2_PORTS_UDP | порты перехвата для стандартного режима nfqws2 |
|
||||
| NFQWS2_TCP_PKT_OUT<br>NFQWS2_TCP_PKT_IN<br>NFQWS2_UDP_PKT_OUT<br>NFQWS2_UDP_PKT_IN | ограничители connbytes по tcp/udp и направлению для стандартного режима nfqws2 |
|
||||
| NFQWS2_PORTS_TCP_KEEPALIVE<br>NFQWS2_PORTS_UDP_KEEPALIVE | список портов tcp/udp, для которых выключается ограничитель connbytes по исходящему направлению для стандартного режима nfqws2 |
|
||||
| NFQWS2_OPT | параметры командной строки стандартного режима nfqws2 |
|
||||
| MODE_FILTER | режим фильтрации : none,ipset,hostlist,autohostlist |
|
||||
| FLOWOFFLOAD | режим offload : donttouch,none,software,hardware |
|
||||
| OPENWRT_LAN<br>OPENWRT_WAN4<br>OPENWRT_WAN6 | список через пробел lan и wan интерфейсов для ipv4 и ipv6 в OpenWRT. НЕ ИНТЕРФЕЙСЫ Linux, ИНТЕРФЕЙСЫ netifd ! по умолчанию "lan" и "wan" |
|
||||
| IFACE_LAN<br>IFACE_WAN<br>IFACE_WAN6 | список через проблем lan и wan интерфейсов для ipv4 и ipv6 в классическом Linux. ИНТЕРФЕЙСЫ Linux ! |
|
||||
| INIT_APPLY_FW | должны ли применять [стартовые скрипты](#стартовые-скрипты) правила firewall |
|
||||
| INIT_FW_PRE_UP_HOOK<br>INIT_FW_POST_UP_HOOK<br>INIT_FW_PRE_DOWN_HOOK<br>INIT_FW_POST_DOWN_HOOK | хук-скрипты, вызываемые до, после поднятия и до, после опускания firewall |
|
||||
| DISABLE_IPV4<br>DISABLE_IPV6<br> | отключить версии ip протокола |
|
||||
| FILTER_TTL_EXPIRED_ICMP | фильтровать "time exceeded" в ответ на пакеты, принадлежащие потокам, прошедшим через zapret |
|
||||
| GETLIST | [скрипт внутри ipset](#система-ведения-листов), вызываемый из `ipset/get_config.sh` . если не указано - `ipset/get_ipban.sh` |
|
||||
| Параметр | Назначение |
|
||||
| :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :-------------------------------------------------------------------------------------------------------------------------------------------- |
|
||||
| TMPDIR | временная директория вместо /tmp . полезно, если на устройстве мало памяти и tmpfs в /tmp не хватает |
|
||||
| WS_USER | пользователь, под которым запускается nfqws2. по умолчанию используется автоматическое значение в зависимости от ОС |
|
||||
| FWTYPE | тип фаервола - iptables, nftables, ipfw. по умолчанию определяется автоматически |
|
||||
| SET_MAXELEM | максимальное количество записей в создаваемых ipset-ах |
|
||||
| IPSET_OPT | опции ipset от iptables |
|
||||
| IPSET_HOOK | скрипт, который получает имя ipset в $1, выдает в stdout список ip, и они добавляются в ipset |
|
||||
| IP2NET_OPT4<br>IP2NET_OPT6 | настройки ip2net для скриптов получения ip листов |
|
||||
| MDIG_THREADS | количество потоков mdig. используется при ресолвинге хостлистов |
|
||||
| AUTOHOSTLIST_INCOMING_MAXSEQ<br>AUTOHOSTLIST_RETRANS_MAXSEQ<br>AUTOHOSTLIST_RETRANS_THRESHOLD<br>AUTOHOSTLIST_RETRANS_RESET<br>AUTOHOSTLIST_FAIL_THRESHOLD<br>AUTOHOSTLIST_FAIL_TIME<br>AUTOHOSTLIST_UDP_IN<br>AUTOHOSTLIST_UDP_OUT | параметры [автохостлистов](#детектор-неудач-автохостлистов) |
|
||||
| AUTOHOSTLIST_DEBUGLOG | включение autohostlist debug log. лог пишется в `ipset/zapret-hosts-auto-debug.log` |
|
||||
| GZIP_LISTS | применять ли сжатие gzip для генерируемых хост и ip листов |
|
||||
| DESYNC_MARK | марк-бит для предотвращения зацикливания |
|
||||
| DESYNC_MARK_POSTNAT | марк-бит для пометки потоков, идущих по схеме POSTNAT |
|
||||
| FILTER_MARK | если задан, перехватывает пакеты только с этим битом mark. Полезно для организации особых фильтров, например, по ip источника локальной сети. |
|
||||
| POSTNAT | использовать режим перехвата после NAT на nftables. По умолчанию - 1. На iptables перехват всегда до NAT. |
|
||||
| NFQWS2_ENABLE | включение стандартного режима nfqws2 |
|
||||
| NFQWS2_PORTS_TCP<br>NFQWS2_PORTS_UDP | порты перехвата для стандартного режима nfqws2 |
|
||||
| NFQWS2_TCP_PKT_OUT<br>NFQWS2_TCP_PKT_IN<br>NFQWS2_UDP_PKT_OUT<br>NFQWS2_UDP_PKT_IN | ограничители connbytes по tcp/udp и направлению для стандартного режима nfqws2 |
|
||||
| NFQWS2_PORTS_TCP_KEEPALIVE<br>NFQWS2_PORTS_UDP_KEEPALIVE | список портов tcp/udp, для которых выключается ограничитель connbytes по исходящему направлению для стандартного режима nfqws2 |
|
||||
| NFQWS2_OPT | параметры командной строки стандартного режима nfqws2 |
|
||||
| MODE_FILTER | режим фильтрации : none,ipset,hostlist,autohostlist |
|
||||
| FLOWOFFLOAD | режим offload : donttouch,none,software,hardware |
|
||||
| OPENWRT_LAN<br>OPENWRT_WAN4<br>OPENWRT_WAN6 | список через пробел lan и wan интерфейсов для ipv4 и ipv6 в OpenWRT. НЕ ИНТЕРФЕЙСЫ Linux, ИНТЕРФЕЙСЫ netifd ! по умолчанию "lan" и "wan" |
|
||||
| IFACE_LAN<br>IFACE_WAN<br>IFACE_WAN6 | список через проблем lan и wan интерфейсов для ipv4 и ipv6 в классическом Linux. ИНТЕРФЕЙСЫ Linux ! |
|
||||
| INIT_APPLY_FW | должны ли применять [стартовые скрипты](#стартовые-скрипты) правила firewall |
|
||||
| INIT_FW_PRE_UP_HOOK<br>INIT_FW_POST_UP_HOOK<br>INIT_FW_PRE_DOWN_HOOK<br>INIT_FW_POST_DOWN_HOOK | хук-скрипты, вызываемые до, после поднятия и до, после опускания firewall |
|
||||
| DISABLE_IPV4<br>DISABLE_IPV6<br> | отключить версии ip протокола |
|
||||
| FILTER_TTL_EXPIRED_ICMP | фильтровать "time exceeded" в ответ на пакеты, принадлежащие потокам, прошедшим через zapret |
|
||||
| GETLIST | [скрипт внутри ipset](#система-ведения-листов), вызываемый из `ipset/get_config.sh` . если не указано - `ipset/get_ipban.sh` |
|
||||
|
||||
* По стандартным режимом nfqws2 понимается то, что запускается с параметрами `NFQWS2_OPT` при включении `NFQWS2_ENABLE`. В противовес [custom скриптам](#custom-скрипты), откуда могут запускаться нестандартные, кастомные, инстансы nfqws2.
|
||||
* netifd интерфейсы - это то, что видно в `/etc/config/network` или в Luci, и что берет команда ifstatus. Не являются интерфейсами Linux. Интерфейсы Linux указываются в параметре device в определении интерфейса и видны по команде `ip link`. Например, интерфейс netifd - "lan", интерфейс Linux - "br-lan". В OPENWRT_LAN надо вписывать "lan", а не "br-lan", иначе это работать не будет.
|
||||
@@ -3846,13 +4095,13 @@ ip листы разделяются на ipv4 и ipv6. ipv6 листы имею
|
||||
|
||||
В зависимости от режима хостлисты могут ресолвиться в ip листы через [mdig](#mdig) или применяться как есть. Если хостлисты применяются как есть в nfqws2, учитываются только имена доменов, а IP адреса и подсети - нет.
|
||||
|
||||
| Хостлист | Тип | Назначение | ip листы |
|
||||
|:---------|:-----|:-----------|:--------|
|
||||
| zapret-hosts-user.txt | пользовательский | включающий | zapret-ip-user.txt<br>zapret-ip-user6.txt |
|
||||
| zapret-hosts-user-exclude.txt | пользовательский | исключающий | zapret-ip-exclude.txt<br>zapret-ip-exclude6.txt |
|
||||
| zapret-hosts-user-ipban.txt | пользовательский | заворот трафика | zapret-ip-user-ipban.txt<br>zapret-ip-user-ipban6.txt |
|
||||
| -- | генерируемый | заворот трафика | zapret-ip-ipban.txt<br>zapret-ip-ipban6.txt |
|
||||
| zapret-hosts.txt | генерируемый | включающий | zapret-ip.txt<br>zapret-ip6.txt |
|
||||
| Хостлист | Тип | Назначение | ip листы |
|
||||
| :---------------------------- | :--------------- | :-------------- | :---------------------------------------------------- |
|
||||
| zapret-hosts-user.txt | пользовательский | включающий | zapret-ip-user.txt<br>zapret-ip-user6.txt |
|
||||
| zapret-hosts-user-exclude.txt | пользовательский | исключающий | zapret-ip-exclude.txt<br>zapret-ip-exclude6.txt |
|
||||
| zapret-hosts-user-ipban.txt | пользовательский | заворот трафика | zapret-ip-user-ipban.txt<br>zapret-ip-user-ipban6.txt |
|
||||
| -- | генерируемый | заворот трафика | zapret-ip-ipban.txt<br>zapret-ip-ipban6.txt |
|
||||
| zapret-hosts.txt | генерируемый | включающий | zapret-ip.txt<br>zapret-ip6.txt |
|
||||
|
||||
### Скрипты ipset
|
||||
|
||||
@@ -3930,14 +4179,14 @@ IP листы содержат как ipv4, так и ipv6.
|
||||
|
||||
Имеются только для Linux и OpenWRT. Вариант для Linux - в `init.d/sysv`, для OpenWRT - в `init.d/openwrt`. Основной исполняемый файл - `zapret2`. Требуемое действие передается в аргументе `$1`. Процедура запуска разделена на запуск демонов - процессов nfqws2, и запуск firewall - выставление правил ip/nf tables.
|
||||
|
||||
| Команда ($1) | Действие |
|
||||
|:-------------|:---------|
|
||||
| start<br>stop<br>restart | запуск/останов/перезапуск демонов и firewall. firewall не запускается, если [INIT_APPLY_FW](#файл-config) не равно 1. На openwrt с fw3 (iptables) firewall запускается отдельно, команды работают только с демонами и не трогают firewall |
|
||||
| start_daemons<br>stop_daemons<br>restart_daemons | запуск/останов/перезапуск демонов |
|
||||
| start_fw<br>stop_fw<br>restart_fw | запуск/останов/перезапуск firewall. На openwrt с fw3 (iptables) команды работают, но firewall запускается отдельно через firewall include в `/etc/config/firewall`. Отдельные операции не рекомендованы. |
|
||||
| reload_ifsets | (только для nftables) перезагрузка сетов wanif и wanif6 |
|
||||
| list_ifsets | (только для nftables) показ wanif, wanif6 и flowtable |
|
||||
| list_table | (только для nftables) показ таблицы zapret2 |
|
||||
| Команда ($1) | Действие |
|
||||
| :----------------------------------------------- | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
||||
| start<br>stop<br>restart | запуск/останов/перезапуск демонов и firewall. firewall не запускается, если [INIT_APPLY_FW](#файл-config) не равно 1. На openwrt с fw3 (iptables) firewall запускается отдельно, команды работают только с демонами и не трогают firewall |
|
||||
| start_daemons<br>stop_daemons<br>restart_daemons | запуск/останов/перезапуск демонов |
|
||||
| start_fw<br>stop_fw<br>restart_fw | запуск/останов/перезапуск firewall. На openwrt с fw3 (iptables) команды работают, но firewall запускается отдельно через firewall include в `/etc/config/firewall`. Отдельные операции не рекомендованы. |
|
||||
| reload_ifsets | (только для nftables) перезагрузка сетов wanif и wanif6 |
|
||||
| list_ifsets | (только для nftables) показ wanif, wanif6 и flowtable |
|
||||
| list_table | (только для nftables) показ таблицы zapret2 |
|
||||
|
||||
sysv вариант предназначен для любых Linux, не являющихся OpenWRT. На системах с различными системами запуска все равно работает sysv скрипт, а прикрутка к системам запуска представляет собой лишь адаптер, его запускающий. На системах с неподдерживаемыми системами запуска и на прошивках вы сами должны знать куда прикрутить "zapret2 start" и "zapret2 stop", чтобы работал автостарт и останов в рамках вашей системы запуска.
|
||||
|
||||
|
||||
Reference in New Issue
Block a user