From c68b75d4acf7eef6509ff772c909a3716873b83e Mon Sep 17 00:00:00 2001 From: bol-van Date: Mon, 4 Nov 2024 11:38:30 +0300 Subject: [PATCH] work on readme.md --- docs/readme.md | 172 ++++++++++++++++++++++++------------------------- 1 file changed, 84 insertions(+), 88 deletions(-) diff --git a/docs/readme.md b/docs/readme.md index d038bf1..15d0aad 100644 --- a/docs/readme.md +++ b/docs/readme.md @@ -6,11 +6,7 @@ [![ru](https://img.shields.io/badge/lang-ru-green.svg)](./readme.md) *** -## Все пункты -- [zapret v.67](#zapret-v67) -- [Multilanguage README](#multilanguage-readme) - - [Все пункты](#все-пункты) - [Зачем это нужно](#зачем-это-нужно) - [Быстрый старт](#быстрый-старт) - [Как это работает](#как-это-работает) @@ -726,13 +722,13 @@ L7 протокол становится известен обычно посл Нумерация профилей идет с 1 до N. Последним в цепочке создается пустой профиль с номером 0. Он используется, когда никакие условия фильтров не совпали. -> [!IMPORTANT] +> [!ВАЖНО] > Множественные стратегии создавались только для случаев, когда невозможно обьединить > имеющиеся стратегии для разных ресурсов. Копирование стратегий из blockcheck для разных сайтов > во множество профилей без понимания как они работают приведет к нагромождению параметров, которые все равно > не покроют все возможные заблокированные ресурсы. Вы только увязните в этой каше. -> [!IMPORTANT] +> [!ВАЖНО] > user-mode реализация ipset создавалась не как удобная замена *nix версии, реализованной в ядре. > Вариант в ядре работает гораздо эффективнее. Это создавалось для систем без подержки ipset в ядре. > Конкретно - Windows и ядра Linux, собранные без nftables и ipset модулей ядра. Например, в android нет ipset. @@ -743,95 +739,95 @@ tpws - это transparent proxy. ``` @|$ ; читать конфигурацию из файла. опция должна быть первой. остальные опции игнорируются. ---debug=0|1|2|syslog|@ ; 0,1,2 = логирование на косоль : 0=тихо, 1(default)=подробно, 2=отладка. ---debug-level=0|1|2 ; указать уровень логирования для syslog и @ ---daemon ; демонизировать прогу ---pidfile= ; сохранить PID в файл ---user= ; менять uid процесса ---uid=uid[:gid] ; менять uid процесса ---bind-addr ; на каком адресе слушать. может быть ipv4 или ipv6 адрес -; если указан ipv6 link local, то требуется указать с какого он интерфейса : fe80::1%br-lan +--debug=0|1|2|syslog|@ ; 0,1,2 = логирование на косоль : 0=тихо, 1(default)=подробно, 2=отладка. +--debug-level=0|1|2 ; указать уровень логирования для syslog и @ +--daemon ; демонизировать прогу +--pidfile= ; сохранить PID в файл +--user= ; менять uid процесса +--uid=uid[:gid] ; менять uid процесса +--bind-addr ; на каком адресе слушать. может быть ipv4 или ipv6 адрес + ; если указан ipv6 link local, то требуется указать с какого он интерфейса : fe80::1%br-lan --bind-linklocal=no|unwanted|prefer|force -; no : биндаться только на global ipv6 -; unwanted (default) : предпочтительно global, если нет - LL -; prefer : предпочтительно LL, если нет - global -; force : биндаться только на LL ---bind-iface4= ; слушать на первом ipv4 интерфейса iface ---bind-iface6= ; слушать на первом ipv6 интерфейса iface ---bind-wait-ifup= ; ждать до N секунд появления и поднятия интерфейса ---bind-wait-ip= ; ждать до N секунд получения IP адреса (если задан --bind-wait-ifup - время идет после поднятия интерфейса) + ; no : биндаться только на global ipv6 + ; unwanted (default) : предпочтительно global, если нет - LL + ; prefer : предпочтительно LL, если нет - global + ; force : биндаться только на LL +--bind-iface4= ; слушать на первом ipv4 интерфейса iface +--bind-iface6= ; слушать на первом ipv6 интерфейса iface +--bind-wait-ifup= ; ждать до N секунд получения IP адреса (если задан --bind-wait-ifup - время идет после поднятия интерфейса) --bind-wait-ip-linklocal= ; имеет смысл только при задании --bind-wait-ip -; --bind-linklocal=unwanted : согласиться на LL после N секунд -; --bind-linklocal=prefer : согласиться на global address после N секунд ---bind-wait-only ; подождать все бинды и выйти. результат 0 в случае успеха, иначе не 0. ---connect-bind-addr ; с какого адреса подключаться во внешнюю сеть. может быть ipv4 или ipv6 адрес -; если указан ipv6 link local, то требуется указать с какого он интерфейса : fe80::1%br-lan -; опция может повторяться для v4 и v6 адресов -; опция не отменяет правил маршрутизации ! выбор интерфейса определяется лишь правилами маршрутизации, кроме случая v6 link local. ---socks ; вместо прозрачного прокси реализовать socks4/5 proxy ---no-resolve ; запретить ресолвинг имен через socks5 ---resolve-threads ; количество потоков ресолвера ---port= ; на каком порту слушать ---maxconn= ; максимальное количество соединений от клиентов к прокси ---maxfiles= ; макс количество файловых дескрипторов (setrlimit). мин требование (X*connections+16), где X=6 в tcp proxy mode, X=4 в режиме тамперинга. -; стоит сделать запас с коэффициентом как минимум 1.5. по умолчанию maxfiles (X*connections)*1.5+16 ---max-orphan-time=; если вы запускаете через tpws торрент-клиент с множеством раздач, он пытается установить очень много исходящих соединений, -; большая часть из которых отваливается по таймауту (юзера сидят за NAT, firewall, ...) -; установление соединения в linux может длиться очень долго. локальный конец отвалился, перед этим послав блок данных, -; tpws ждет подключения удаленного конца, чтобы отослать ему этот блок, и зависает надолго. -; настройка позволяет сбрасывать такие подключения через N секунд, теряя блок данных. по умолчанию 5 сек. 0 означает отключить функцию -; эта функция не действует на успешно подключенные ранее соединения +; --bind-linklocal=unwanted : согласиться на LL после N секунд +; --bind-linklocal=prefer : согласиться на global address после N секунд +--bind-wait-only ; подождать все бинды и выйти. результат 0 в случае успеха, иначе не 0. +--connect-bind-addr ; с какого адреса подключаться во внешнюю сеть. может быть ipv4 или ipv6 адрес + ; если указан ipv6 link local, то требуется указать с какого он интерфейса : fe80::1%br-lan + ; опция может повторяться для v4 и v6 адресов + ; опция не отменяет правил маршрутизации ! выбор интерфейса определяется лишь правилами маршрутизации, кроме случая v6 link local. +--socks ; вместо прозрачного прокси реализовать socks4/5 proxy +--no-resolve ; запретить ресолвинг имен через socks5 +--resolve-threads ; количество потоков ресолвера +--port= ; на каком порту слушать +--maxconn= ; максимальное количество соединений от клиентов к прокси +--maxfiles= ; макс количество файловых дескрипторов (setrlimit). мин требование (X*connections+16), где X=6 в tcp proxy mode, X=4 в режиме тамперинга. + ; стоит сделать запас с коэффициентом как минимум 1.5. по умолчанию maxfiles (X*connections)*1.5+16 +--max-orphan-time= ; если вы запускаете через tpws торрент-клиент с множеством раздач, он пытается установить очень много исходящих соединений, + ; большая часть из которых отваливается по таймауту (юзера сидят за NAT, firewall, ...) + ; установление соединения в linux может длиться очень долго. локальный конец отвалился, перед этим послав блок данных, + ; tpws ждет подключения удаленного конца, чтобы отослать ему этот блок, и зависает надолго. + ; настройка позволяет сбрасывать такие подключения через N секунд, теряя блок данных. по умолчанию 5 сек. 0 означает отключить функцию + ; эта функция не действует на успешно подключенные ранее соединения ---local-rcvbuf= ; SO_RCVBUF для соединений client-proxy ---local-sndbuf= ; SO_SNDBUF для соединений client-proxy ---remote-rcvbuf= ; SO_RCVBUF для соединений proxy-target ---remote-sndbuf= ; SO_SNDBUF для соединений proxy-target ---nosplice ; не использовать splice на linux системах ---skip-nodelay ; не устанавливать в исходящих соединения TCP_NODELAY. несовместимо со split. +--local-rcvbuf= ; SO_RCVBUF для соединений client-proxy +--local-sndbuf= ; SO_SNDBUF для соединений client-proxy +--remote-rcvbuf= ; SO_RCVBUF для соединений proxy-target +--remote-sndbuf= ; SO_SNDBUF для соединений proxy-target +--nosplice ; не использовать splice на linux системах +--skip-nodelay ; не устанавливать в исходящих соединения TCP_NODELAY. несовместимо со split. --local-tcp-user-timeout= ; таймаут соединений client-proxy (по умолчанию : 10 сек, 0 = оставить системное значение) --remote-tcp-user-timeout= ; таймаут соединений proxy-target (по умолчанию : 20 сек, 0 = оставить системное значение) --split-http-req=method|host ; способ разделения http запросов на сегменты : около метода (GET,POST) или около заголовка Host ---split-pos= ; делить все посылы на сегменты в указанной позиции. единственная опция, работающая на не-http. при указании split-http-req он имеет преимущество на http. ---split-any-protocol ; применять split-pos к любым пакетам. по умолчанию - только к http и TLS ClientHello ---disorder[=http|tls] ; путем манипуляций с сокетом вынуждает отправлять первым второй сегмент разделенного запроса ---oob[=http|tls] ; отправить байт out-of-band data (OOB) в конце первой части сплита ---oob-data=|0xHEX ; переопределить байт OOB. по умолчанию 0x00. ---hostcase ; менять регистр заголовка "Host:". по умолчанию на "host:". ---hostspell=HoST ; точное написание заголовка Host (можно "HOST" или "HoSt"). автоматом включает --hostcase ---hostdot ; добавление точки после имени хоста : "Host: kinozal.tv." ---hosttab ; добавление табуляции после имени хоста : "Host: kinozal.tv\t" ---hostnospace ; убрать пробел после "Host:" ---hostpad= ; добавить паддинг-хедеров общей длиной перед Host: ---domcase ; домен после Host: сделать таким : TeSt.cOm ---methodspace ; добавить пробел после метода : "GET /" => "GET /" ---methodeol ; добавить перевод строки перед методом : "GET /" => "\r\nGET /" ---unixeol ; конвертировать 0D0A в 0A и использовать везде 0A ---tlsrec=sni|sniext ; разбивка TLS ClientHello на 2 TLS records. режем между 1 и 2 символами hostname в SNI или между байтами длины SNI extension. Если SNI нет - отмена. ---tlsrec-pos= ; разбивка TLS ClientHello на 2 TLS records. режем на указанной позиции, если длина слишком мелкая - на позиции 1. ---mss= ; установить MSS для клиента. может заставить сервер разбивать ответы, но существенно снижает скорость ---mss-pf=[~]port1[-port2] ; применять MSS только к портам назначения, подпадающим под фильтр. ~ означает инверсию ---tamper-start=[n] ; начинать дурение только с указанной байтовой позиции или номера блока исходяшего потока (считается позиция начала принятого блока) ---tamper-cutoff=[n] ; закончить дурение на указанной байтовой позиции или номере блока исходящего потока (считается позиция начала принятого блока) ---hostlist= ; действовать только над доменами, входящими в список из filename. поддомены автоматически учитываются. -; в файле должен быть хост на каждой строке. -; список читается при старте и хранится в памяти в виде иерархической структуры для быстрого поиска. -; при изменении времени модификации файла он перечитывается автоматически по необходимости -; список может быть запакован в gzip. формат автоматически распознается и разжимается -; списков может быть множество. пустой общий лист = его отсутствие -; хосты извлекаются из Host: хедера обычных http запросов и из SNI в TLS ClientHello. ---hostlist-exclude= ; не применять дурение к доменам из листа. может быть множество листов. схема аналогична include листам. ---hostlist-auto= ; обнаруживать автоматически блокировки и заполнять автоматический hostlist (требует перенаправления входящего трафика) ---hostlist-auto-fail-threshold= ; сколько раз нужно обнаружить ситуацию, похожую на блокировку, чтобы добавить хост в лист (по умолчанию: 3) ---hostlist-auto-fail-time= ; все эти ситуации должны быть в пределах указанного количества секунд (по умолчанию: 60) ---hostlist-auto-debug= ; лог положительных решений по autohostlist. позволяет разобраться почему там появляются хосты. ---new ; начало новой стратегии ---filter-l3=ipv4|ipv6 ; фильтр версии ip для текущей стратегии ---filter-tcp=[~]port1[-port2]|* ; фильтр портов tcp для текущей стратегии. ~ означает инверсию. поддерживается список через запятую. +--split-pos= ; делить все посылы на сегменты в указанной позиции. единственная опция, работающая на не-http. при указании split-http-req он имеет преимущество на http. +--split-any-protocol ; применять split-pos к любым пакетам. по умолчанию - только к http и TLS ClientHello +--disorder[=http|tls] ; путем манипуляций с сокетом вынуждает отправлять первым второй сегмент разделенного запроса +--oob[=http|tls] ; отправить байт out-of-band data (OOB) в конце первой части сплита +--oob-data=|0xHEX ; переопределить байт OOB. по умолчанию 0x00. +--hostcase ; менять регистр заголовка "Host:". по умолчанию на "host:". +--hostspell=HoST ; точное написание заголовка Host (можно "HOST" или "HoSt"). автоматом включает --hostcase +--hostdot ; добавление точки после имени хоста : "Host: kinozal.tv." +--hosttab ; добавление табуляции после имени хоста : "Host: kinozal.tv\t" +--hostnospace ; убрать пробел после "Host:" +--hostpad= ; добавить паддинг-хедеров общей длиной перед Host: +--domcase ; домен после Host: сделать таким : TeSt.cOm +--methodspace ; добавить пробел после метода : "GET /" => "GET /" +--methodeol ; добавить перевод строки перед методом : "GET /" => "\r\nGET /" +--unixeol ; конвертировать 0D0A в 0A и использовать везде 0A +--tlsrec=sni|sniext ; разбивка TLS ClientHello на 2 TLS records. режем между 1 и 2 символами hostname в SNI или между байтами длины SNI extension. Если SNI нет - отмена. +--tlsrec-pos= ; разбивка TLS ClientHello на 2 TLS records. режем на указанной позиции, если длина слишком мелкая - на позиции 1. +--mss= ; установить MSS для клиента. может заставить сервер разбивать ответы, но существенно снижает скорость +--mss-pf=[~]port1[-port2] ; применять MSS только к портам назначения, подпадающим под фильтр. ~ означает инверсию +--tamper-start=[n] ; начинать дурение только с указанной байтовой позиции или номера блока исходяшего потока (считается позиция начала принятого блока) +--tamper-cutoff=[n] ; закончить дурение на указанной байтовой позиции или номере блока исходящего потока (считается позиция начала принятого блока) +--hostlist= ; действовать только над доменами, входящими в список из filename. поддомены автоматически учитываются. + ; в файле должен быть хост на каждой строке. + ; список читается при старте и хранится в памяти в виде иерархической структуры для быстрого поиска. + ; при изменении времени модификации файла он перечитывается автоматически по необходимости + ; список может быть запакован в gzip. формат автоматически распознается и разжимается + ; списков может быть множество. пустой общий лист = его отсутствие + ; хосты извлекаются из Host: хедера обычных http запросов и из SNI в TLS ClientHello. +--hostlist-exclude= ; не применять дурение к доменам из листа. может быть множество листов. схема аналогична include листам. +--hostlist-auto= ; обнаруживать автоматически блокировки и заполнять автоматический hostlist (требует перенаправления входящего трафика) +--hostlist-auto-fail-threshold= ; сколько раз нужно обнаружить ситуацию, похожую на блокировку, чтобы добавить хост в лист (по умолчанию: 3) +--hostlist-auto-fail-time= ; все эти ситуации должны быть в пределах указанного количества секунд (по умолчанию: 60) +--hostlist-auto-debug= ; лог положительных решений по autohostlist. позволяет разобраться почему там появляются хосты. +--new ; начало новой стратегии +--filter-l3=ipv4|ipv6 ; фильтр версии ip для текущей стратегии +--filter-tcp=[~]port1[-port2]|* ; фильтр портов tcp для текущей стратегии. ~ означает инверсию. поддерживается список через запятую. --filter-l7=[http|tls|quic|wireguard|dht|unknown] ; фильтр протокола L6-L7. поддерживается несколько значений через запятую. ---ipset= ; включающий ip list. на каждой строчке ip или cidr ipv4 или ipv6. поддерживается множество листов и gzip. перечитка автоматическая. ---ipset-exclude= ; исключающий ip list. на каждой строчке ip или cidr ipv4 или ipv6. поддерживается множество листов и gzip. перечитка автоматическая. +--ipset= ; включающий ip list. на каждой строчке ip или cidr ipv4 или ipv6. поддерживается множество листов и gzip. перечитка автоматическая. +--ipset-exclude= ; исключающий ip list. на каждой строчке ip или cidr ipv4 или ipv6. поддерживается множество листов и gzip. перечитка автоматическая. ``` `--debug` позволяет выводить подробный лог действий на консоль, в syslog или в файл. @@ -1677,7 +1673,7 @@ IFACE_WAN6="henet ipsec0" Несколько интерфейсов могут быть вписаны через пробел. Если IFACE_WAN6 не задан, то берется значение IFACE_WAN. -> [!IMPORTANT] +> [!ВАЖНО] > Настройка маршрутизации, маскарада и т.д. не входит в задачу zapret. > Включаются только режимы, обеспечивающие перехват транзитного трафика. > Возможно определить несколько интерфейсов следующим образом: @@ -2177,4 +2173,4 @@ VPS можно прибрести в множестве мест. Существ [Реквизиты](https://github.com/bol-van/zapret/issues/590): USDT USDT 0x3d52Ce15B7Be734c53fc9526ECbAB8267b63d66E -USDT BTC bc1qhqew3mrvp47uk2vevt5sctp7p2x9m7m5kkchve \ No newline at end of file +USDT BTC bc1qhqew3mrvp47uk2vevt5sctp7p2x9m7m5kkchve