diff --git a/docs/manual.md b/docs/manual.md index 930d64e..298fd1a 100644 --- a/docs/manual.md +++ b/docs/manual.md @@ -375,3 +375,89 @@ winws2 может принимать полные raw фильтры - вы пи как минимум в SYN пакете, а желательно еще и FIN, RST. Если нужна фильтрация по сообщениям , занимающим более одного tcp сегмента, такое отфильтровать средствами windivert невозможно - требуется полный перехват порта по направлению. + +# nfqws2 + +## Общие принципы задания параметров + +Все параметры nfqws2 передаются в командной строке, либо загружаются из файла в том же самом формате. +nfqws2 использует стандартный парсер getopt_long_only. +Опции имеют формат `--name[=value]`. Некоторые опции не требуют параметров, другие требуют, а третьи могут их брать опционально. +Парсер getopt позволяет задавать значение через знак `=` или через пробел. Лишние значения через пробел могут игнорироваться, +поэтому казалось бы ошибочные параметры могут не вызвать ошибку. Лучше всегда писать значения через знак `=`. + +Чтение параметров из файла реализовано через задание единственной опции `@config_file`. +Все остальные параметры командной строки будут проигнорированы. +Опции будут прочитаны из файла, как будто бы вы ввели его содержимое в командой строке. +Возможность не поддерживается в Android и OpenBSD версиях. + +## Полный список опций + + +``` + @ ; чтение опций командной строки из файла. все остальные опции из командной строки игнорируются. + + --debug=0|1|syslog|android|@ ; писать дебаг лог. 0 - нет , 1 - на консоль, syslog - в unix syslog, android - системный log android, @ - в файл + --version ; вывести версию и выйти + --dry-run ; проверить валидность параметров командной строки и наличие файлов. не проверяет корректность скриптов LUA ! + --comment=any_text ; любой текст. игнорируется + --qnum= ; номер очереди NFQUEUE в Linux + --port= ; номер divert порта в BSD + --daemon ; отключиться от консоли (демонизироваться) + --pidfile= ; запись PID в файл + --user= ; сменить uid/gid на те, что связаны с указанным именем пользователя + --uid=uid[:gid1,gid2,...] ; сменить uid/gid на указанные числовые значения + --bind-fix4 ; лечение проблемы ухода генерированных пакетов на Linux с неверного интерфейса при использовании PBR (ipv4) + --bind-fix6 ; аналогично для ipv6 + --fwmark= ; бит в mark для предотвращения зацикливания. default = 0x40000000 + --ctrack-timeouts=S:E:F[:U] ; таймауты conntrack для стадий tcp SYN, ESTABLISHED, FIN и для udp + --ctrack-disable=[0|1] ; 1 отключает conntrack + --server=[0|1] ; серверный режим. для обслуживания listener-ов меняются многие аспекты выбора направления и ip/port источника/приемника + --ipcache-lifetime= ; время жизни записей кэша IP в секундах. 0 - без ограничений. + --ipcache-hostname=[0|1] ; 1 или отсутствие аргумента включают кэширование имен хостов для применения в стратегиях нулевой фазы + --reasm-disable=[proto[,proto]] ; отключить сборку фрагментов для списка пейлоадов : tls_client_hello quic_initial . без аргумента - отключить reasm для всего. + +DESYNC ENGINE INIT: + --writeable[=] ; создать директорию для LUA с разрешением записи и поместить путь к ней в переменную env "WRITEABLE" (только одна директория) + --blob=:[+ofs]@|0xHEX ; загрузить бинарный файл или hex строку в переменную LUA . +ofs задает смещение от начала файла + --lua-init=@| ; однократно при старте выполнить LUA код из строки или из файла + --lua-gc= ; интервал вызова сборщика мусора LUA в секундах. 0 отключает периодический вызов. + +MULTI-STRATEGY: + --new ; начало нового профиля + --skip ; игнорировать профиль + --name= ; установить имя профиля + --template[=] ; использовать профиль как шаблон, задать имя + --cookie[=] ; установить значение LUA переменной "desync.cookie", передаваемое каждому инстансу данного профиля + --import= ; копировать настройки из шаблона в текущий профиль с полным замещением + --filter-l3=ipv4|ipv6 ; фильтр профиля : версия ip протокола + --filter-tcp=[~]port1[-port2]|* ; фильтр профиля : порты tcp + --filter-udp=[~]port1[-port2]|* ; фильтр профиля : порты udp + --filter-l7=proto[,proto] ; фильтр профиля : список протоколов сеанса. полный список доступен в help тексте программы. + --filter-ssid=ssid1[,ssid2,ssid3,...] ; фильтр профиля : имя wifi сети + --ipset= ; фильтр профиля : включающий список ip адресов или подсетей из файла. может быть смешанным ipv4+ipv6. + --ipset-ip= ; фильтр профиля : включающий фиксированный список ip адресов или подсетей через запятую + --ipset-exclude= ; фильтр профиля : исключающий список ip адресов или подсетей из файла. может быть смешанным ipv4+ipv6. + --ipset-exclude-ip= ; фильтр профиля : исключающий фиксированный список ip адресов или подсетей через запятую + --hostlist= ; фильтр профиля : включающий список доменов из файла + --hostlist-domains= ; фильтр профиля : включающий фиксированный список доменов из файла + --hostlist-exclude= ; фильтр профиля : исключающий список доменов из файла + --hostlist-exclude-domains= ; фильтр профиля : исключающий фиксированный список доменов из файла + --hostlist-auto= ; фильтр профиля : автоматически пополняемый по обратной связи включающий фильтр доменов + --hostlist-auto-fail-threshold= ; параметр автолиста : количество неудач подряд для занесения в лист. по умолчанию 3 + --hostlist-auto-fail-time= ; параметр автолиста : максимальное время между неудачами без сброса счетчика. по умолчанию 60 секунд + --hostlist-auto-retrans-threshold= ; параметр автолиста : количество tcp ретрансмиссий в одном сеансе для фиксации неудачи. по умолчанию 3 + --hostlist-auto-retrans-maxseq= ; параметр автолиста : исходящий relative sequence, после которого детект неудачи прекращается. по умолчанию 65536 + --hostlist-auto-incoming-maxseq= ; параметр автолиста : входящий relative sequence, после которого детект неудачи прекращается. по умолчанию 4096 + --hostlist-auto-udp-out= ; параметр автолиста : условие неудачи udp : количество исходящих пакетов больше или равно значению. по умолчанию 4 + --hostlist-auto-udp-in= ; параметр автолиста : условие неудачи udp : количество входящих пакетов меньше или равно значению. по умолчанию 1 + --hostlist-auto-debug= ; дебаг лог автолиста + +LUA PACKET PASS MODE: + --payload=type[,type] ; внутрипрофильный фильтр : фильтр пейлоада для последующих инстансов внутри профиля. список пейлоадов доступен в help тексте программы. + --out-range=[(n|a|d|s|p)](-|<)[(n|a|d|s|p)] ; внутрипрофильный фильтр : диапазон счетчиков conntrack для последующих инстансов внутри профиля - исходящее направление + --in-range=[(n|a|d|s|p)](-|<)[(n|a|d|s|p)] ; внутрипрофильный фильтр : диапазон счетчиков conntrack для последующих инстансов внутри профиля - входящее направление + +LUA DESYNC ACTION: + --lua-desync=[:param1=val1[:param2=val2]] ; при обработке профиля вызвать LUA инстанс с указанными параметрами, если соблюдены условия внутрипрофильных фильтров +```