mirror of
https://github.com/bol-van/zapret.git
synced 2026-03-09 06:45:24 +00:00
major config re-think and re-write
This commit is contained in:
183
docs/readme.txt
183
docs/readme.txt
@@ -1,4 +1,4 @@
|
||||
zapret v.65
|
||||
zapret v.66
|
||||
|
||||
English
|
||||
-------
|
||||
@@ -952,6 +952,7 @@ TCP_USER_TIMEOUT. Под таймаутом подразумевается вр
|
||||
Используйте `curl --socks5` и `curl --socks5-hostname` для проверки вашей стратегии.
|
||||
Смотрите вывод --debug, чтобы убедиться в правильности настроек.
|
||||
|
||||
|
||||
Способы получения списка заблокированных IP
|
||||
-------------------------------------------
|
||||
|
||||
@@ -1007,7 +1008,7 @@ Cкрипты с названием get_antifilter_* оперируют спис
|
||||
Или вы можете узнать о проблеме лишь когда у вас начнет постоянно пропадать wifi, и вам придется
|
||||
его перезагружать каждые 2 часа (метод кувалды).
|
||||
|
||||
Самые щадящие варианты по RAM - get_antifilter_allyouneed.sh, get_antifilter_ipsum.sh.
|
||||
Самые щадящие варианты по RAM - get_antifilter_allyouneed.sh, get_antifilter_ipsum.sh, get_refilter_*.sh.
|
||||
|
||||
Листы zapret-ip.txt и zapret-ipban.txt сохраняются в сжатом виде в файлы .gz.
|
||||
Это позволяет снизить их размер во много раз и сэкономить место на роутере.
|
||||
@@ -1364,86 +1365,95 @@ curl: (28) Connection timed out after 2002 milliseconds
|
||||
|
||||
FWTYPE=iptables
|
||||
|
||||
Основной режим :
|
||||
tpws - tpws в режиме transparent
|
||||
tpws-socks - tpws в режиме socks
|
||||
вешается на localhost и LAN интерфейс (если задан IFACE_LAN или если система - OpenWRT). порт 988
|
||||
nfqws - nfqws
|
||||
filter - только заполнить ipset или загрузить hostlist
|
||||
custom - нужно самому запрограммировать запуск демонов в init скрипте и правила iptables
|
||||
На nftables можно отключить стандартную схему перехвата трафика после NAT и перейти на перехват до NAT.
|
||||
Это сделает невозможным применение некоторых методов дурения на проходящем трафике как в случае с iptables.
|
||||
nfqws начнет получать адреса пакетов из локальной сети и отображать их в логах.
|
||||
#POSTNAT=0
|
||||
|
||||
MODE=tpws
|
||||
Существует 3 стандартных опции запуска, настраиваемых раздельно и независимо : tpws-socks, tpws, nfqws.
|
||||
Их можно использовать как по отдельности, так и вместе. Например, вам надо сделать комбинацию
|
||||
из методов, доступных только в tpws и только в nfqws. Их можно задействовать вместе.
|
||||
tpws будет прозрачно локализовывать трафик на системе и применять свое дурение, nfqws будет дурить трафик,
|
||||
исходящий с самой системы после обработки на tpws.
|
||||
А можно на эту же систему повесить без параметров socks proxy, чтобы получать доступ к обходу блокировок через прокси.
|
||||
Таким образом, все 3 режима вполне могут задействоваться вместе.
|
||||
Так же безусловно и независимо, в добавок к стандартным оцпиям, применяются все custom скрипты в init.d/{sysv,openwrt,macos}/custom.d.
|
||||
|
||||
Применять ли дурение к HTTP :
|
||||
tpws-socks требует настройки параметров tpws, но не требует перехвата трафика.
|
||||
Остальные оцпии требуют раздельно настройки перехвата трафика и опции самих демонов.
|
||||
Каждая опция предполагет запуск одного инстанса соответствующего демона. Все различия методов дурения
|
||||
для http, https, quic и т.д. должны быть отражены через схему мультистратегий.
|
||||
В этом смысле настройка похожа на вариант winws на Windows, а перенос конфигов не должен представлять больших сложностей.
|
||||
Основное правило настройки перехвата - перехватывайте только необходимый минимум.
|
||||
Любой перехват лишнего - это бессмысленная нагрузка на вашу систему.
|
||||
Опции демонов "--ipset" использовать запрещено. Это сделано намеренно и искусственно, чтобы не поощрать простой и
|
||||
работающий, но неэффективный метод на *nix системах. Используйте ipset-ы режима ядра.
|
||||
При необходимости пишите и задействуйте custom scripts.
|
||||
Настройки демонов можно для удобства писать на нескольких строках, используя двойные или одинарные кавычки.
|
||||
Чтобы задействовать стандартные обновляемые хост-листы из ipset, используйте маркер <HOSTLIST>.
|
||||
Он будет заменен на параметры, соответствующие режиму MODE_FILTER, и будут подставлены реально существующие файлы.
|
||||
Если MODE_FILTER не предполагает стандартного хостлиста, <HOSTLIST> будет заменен на пустую строку.
|
||||
Стандартные хостлисты следует вставлять в финальных стратегиях (стратегиях по умолчанию), закрывающих цепочки по
|
||||
группе параметров фильтра. Таких мест может быть несколько.
|
||||
Не нужно использовать <HOSTLIST> в узких специализациях и в тех профилях, по которым точно не будет проходить
|
||||
трафик с известными протоколами, откуда поддерживается извлечение имени хоста (http, tls, quic).
|
||||
|
||||
MODE_HTTP=1
|
||||
# включение стандартной опции tpws в режиме socks
|
||||
TPWS_SOCKS_ENABLE=0
|
||||
# на каком порту будет слушать tpws socks. прослушивается только localhost и LAN.
|
||||
TPPORT_SOCKS=987
|
||||
# параметры tpws для режима socks
|
||||
TPWS_SOCKS_OPT="
|
||||
--filter-tcp=80 --methodeol <HOSTLIST> --new
|
||||
--filter-tcp=443 --split-tls=sni --disorder <HOSTLIST>
|
||||
"
|
||||
|
||||
Применять ли дурение к последовательным http запросам в одном tcp соединении (http keeaplive).
|
||||
Относится только к nfqws. Выключение данной функции способно сэкономить загрузку процессора.
|
||||
tpws всегда работает с http keepalive
|
||||
# включение стандартной опции tpws в прозрачном режиме
|
||||
TPWS_ENABLE=0
|
||||
# какие tcp порты следует перенаправлять на tpws
|
||||
TPWS_PORTS=80,443
|
||||
# параметры tpws для прозрачного режима
|
||||
TPWS_OPT="
|
||||
--filter-tcp=80 --methodeol <HOSTLIST> --new
|
||||
--filter-tcp=443 --split-tls=sni --disorder <HOSTLIST>
|
||||
"
|
||||
|
||||
MODE_HTTP_KEEPALIVE=0
|
||||
# включение стандартной опции nfqws
|
||||
NFQWS_ENABLE=0
|
||||
# какие tcp и udp порты следует перенаправлять на nfqws с использованием connbytes ограничителя
|
||||
# connbytes позволяет из каждого соединения перенаправить только заданное количество начальных пакетов по каждому направлению - на вход и на выход
|
||||
# это более эффективная kernel-mode замена параметра nfqws --dpi-desync-cutoff=nX
|
||||
NFQWS_PORTS_TCP=80,443
|
||||
NFQWS_PORTS_UDP=443
|
||||
# сколько начальных входящих и исходящих пакетов нужно перенаправлять на nfqws по каждому направлению
|
||||
NFQWS_TCP_PKT_OUT=$((6+$AUTOHOSTLIST_RETRANS_THRESHOLD))
|
||||
NFQWS_TCP_PKT_IN=3
|
||||
NFQWS_UDP_PKT_OUT=$((6+$AUTOHOSTLIST_RETRANS_THRESHOLD))
|
||||
NFQWS_UDP_PKT_IN=0
|
||||
# есть трафик, исходящий сеанс для которого необходимо перенаправлять весь без ограничителей
|
||||
# типичное применение - поддержка http keepalives на stateless DPI
|
||||
# это существенно нагружает процессор. использовать только если понимаете зачем. чаще всего это не нужно.
|
||||
# входящий трафик ограничивается по connbytes через параметры PKT_IN
|
||||
# задать порты для перенаправления на nfqws без connbytes ограничителя
|
||||
# если указываете здесь какие-то порты, желательно их убрать из версии с connbytes ограничителем
|
||||
#NFQWS_PORTS_TCP_KEEPALIVE=80
|
||||
#NFQWS_PORTS_UDP_KEEPALIVE=
|
||||
# параметры nfqws
|
||||
NFQWS_OPT="
|
||||
--filter-tcp=80 --dpi-desync=fake,split2 --dpi-desync-fooling=md5sig <HOSTLIST> --new
|
||||
--filter-tcp=443 --dpi-desync=fake,disorder2 --dpi-desync-fooling=md5sig <HOSTLIST> --new
|
||||
--filter-udp=443 --dpi-desync=fake --dpi-desync-repeats=6 <HOSTLIST>
|
||||
"
|
||||
|
||||
Применять ли дурение к HTTPS :
|
||||
|
||||
MODE_HTTPS=1
|
||||
|
||||
Применять ли дурение к QUIC :
|
||||
|
||||
MODE_QUIC=0
|
||||
|
||||
Режим фильтрации хостов :
|
||||
none - применять дурение ко всем хостам
|
||||
ipset - ограничить дурение ipset-ом zapret/zapret6
|
||||
hostlist - ограничить дурение списком хостов из файла
|
||||
autohostlist - режим hostlist + распознавание блокировок и ведения автоматического листа
|
||||
autohostlist - режим hostlist + распознавание блокировок и ведение автоматического листа
|
||||
|
||||
MODE_FILTER=none
|
||||
|
||||
Опции tpws :
|
||||
|
||||
TPWS_OPT="--hostspell=HOST --split-http-req=method --split-pos=3"
|
||||
|
||||
Дополнительный низкоприоритетный профиль десинхронизации для режимов с MODE_FILTER=hostlist.
|
||||
После реализации поддержки множественных профилей режимы нулевой фазы десинхронизации больше не применяются с хостлистом !
|
||||
Для их применения требуется дополнительный профиль без хостлист фильтра.
|
||||
|
||||
#TPWS_OPT_SUFFIX="--mss 88"
|
||||
|
||||
Опции nfqws для атаки десинхронизации DPI :
|
||||
|
||||
DESYNC_MARK=0x40000000
|
||||
DESYNC_MARK_POSTNAT=0x20000000
|
||||
NFQWS_OPT_DESYNC="--dpi-desync=fake --dpi-desync-ttl=0 --dpi-desync-fooling=badsum"
|
||||
|
||||
Задание раздельных опций nfqws для http и https и для версий ip протоколов 4,6 :
|
||||
|
||||
NFQWS_OPT_DESYNC_HTTP="--dpi-desync=split --dpi-desync-ttl=0 --dpi-desync-fooling=badsum"
|
||||
NFQWS_OPT_DESYNC_HTTPS="--wssize=1:6 --dpi-desync=split --dpi-desync-ttl=0 --dpi-desync-fooling=badsum"
|
||||
NFQWS_OPT_DESYNC_HTTP6="--dpi-desync=split --dpi-desync-ttl=5 --dpi-desync-fooling=none"
|
||||
NFQWS_OPT_DESYNC_HTTPS6="--wssize=1:6 --dpi-desync=split --dpi-desync-ttl=5 --dpi-desync-fooling=none"
|
||||
|
||||
Если какая-то из переменных NFQWS_OPT_DESYNC_HTTP/NFQWS_OPT_DESYNC_HTTPS не определена,
|
||||
берется значение NFQWS_OPT_DESYNC.
|
||||
Если какая-то из переменных NFQWS_OPT_DESYNC_HTTP6/NFQWS_OPT_DESYNC_HTTPS6 не определена,
|
||||
берется значение NFQWS_OPT_DESYNC_HTTP/NFQWS_OPT_DESYNC_HTTPS.
|
||||
|
||||
Дополнительный низкоприоритетный профиль десинхронизации для режимов с MODE_FILTER=hostlist.
|
||||
После реализации поддержки множественных профилей режимы нулевой фазы десинхронизации больше не применяются с хостлистом !
|
||||
Для их применения требуется дополнительный профиль без хостлист фильтра.
|
||||
#NFQWS_OPT_DESYNC_SUFFIX="--dpi-desync=syndata"
|
||||
#NFQWS_OPT_DESYNC_HTTP_SUFFIX="--dpi-desync=syndata"
|
||||
#NFQWS_OPT_DESYNC_HTTPS_SUFFIX="--wssize 1:6"
|
||||
#NFQWS_OPT_DESYNC_HTTP6_SUFFIX="--dpi-desync=syndata"
|
||||
#NFQWS_OPT_DESYNC_HTTPS6_SUFFIX="--wssize 1:6"
|
||||
|
||||
Значения по умолчанию заполняются аналогично NFQWS_OPT_*.
|
||||
|
||||
Опции дурения для QUIC :
|
||||
NFQWS_OPT_DESYNC_QUIC="--dpi-desync=fake"
|
||||
NFQWS_OPT_DESYNC_QUIC6="--dpi-desync=hopbyhop"
|
||||
Если NFQWS_OPT_DESYNC_QUIC6 не задано, то берется NFQWS_OPT_DESYNC_QUIC.
|
||||
|
||||
Настройка системы управления выборочным traffic offload (только если поддерживается)
|
||||
donttouch : выборочное управление отключено, используется системная настройка, простой инсталлятор выключает системную настройку, если она не совместима с выбранным режимом
|
||||
none : выборочное управление отключено, простой инсталлятор выключает системную настройку
|
||||
@@ -1494,8 +1504,11 @@ IP2NET_OPT4="--prefix-length=22-30 --v4-threshold=3/4"
|
||||
IP2NET_OPT6="--prefix-length=56-64 --v6-threshold=5"
|
||||
|
||||
Настройка режима autohostlist.
|
||||
При увеличении AUTOHOSTLIST_RETRANS_THRESHOLD и использовании nfqws следует пересмотреть значения параметров
|
||||
NFQWS_TCP_PKT_OUT и NFQWS_UDP_PKT_OUT. Все ретрансмиссии должны быть получены nfqws, иначе триггер "зависание запроса" не сработает.
|
||||
|
||||
AUTOHOSTLIST_RETRANS_THRESHOLD=3
|
||||
AUTOHOSTLIST_FAIL_THRESHOLD=2
|
||||
AUTOHOSTLIST_FAIL_THRESHOLD=3
|
||||
AUTOHOSTLIST_FAIL_TIME=60
|
||||
AUTOHOSTLIST_DEBUG=0
|
||||
|
||||
@@ -1537,6 +1550,7 @@ IFACE_WAN6="henet ipsec0"
|
||||
Включаются только режимы, обеспечивающие перехват транзитного трафика.
|
||||
Возможно определить несколько интерфейсов следующим образом : IFACE_LAN="eth0 eth1 eth2"
|
||||
|
||||
|
||||
Прикручивание к системе управления фаерволом или своей системе запуска
|
||||
----------------------------------------------------------------------
|
||||
|
||||
@@ -1591,18 +1605,15 @@ nfset-ы принадлежат только одной таблице, след
|
||||
Вариант custom
|
||||
--------------
|
||||
|
||||
custom код вынесен в отдельные shell includes.
|
||||
Поддерживается старый вариант в
|
||||
/opt/zapret/init.d/sysv/custom
|
||||
/opt/zapret/init.d/openwrt/custom
|
||||
/opt/zapret/init.d/macos/custom
|
||||
Он считается устаревшим. Актуальный вариант - помещать отдельные скрипты там же, но в директорию "custom.d".
|
||||
Она будет просканирована стандартным образом, т.е. в алфавитном порядке, и каждый скрипт будет применен.
|
||||
custom скрипты - это маленькие shell программы, управляющие нестандартными режимами применения zapret
|
||||
или частными случаями, которые не могут быть интегрированы в основную часть без загромождения и замусоривания кода.
|
||||
Для применеия custom следует помещать файлы в следующие директории в зависимости от вашей системы :
|
||||
/opt/zapret/init.d/sysv/custom.d
|
||||
/opt/zapret/init.d/openwrt/custom.d
|
||||
/opt/zapret/init.d/macos/custom.d
|
||||
Директория будет просканирована в алфавитном порядке, и каждый скрипт будет применен.
|
||||
Рядом имеется "custom.d.examples". Это готовые скрипты, которые можно копировать в "custom.d".
|
||||
Особо стоит отметить "10-inherit-*". Они наследуют стандартные режимы nfqws/tpws/tpws-socks.
|
||||
Полезно, чтобы не писать код заново. Достаточно лишь скопировать соответствующий файл.
|
||||
Можно наследовать и более сложным образом.
|
||||
"10-inherit-tpws4http-nfqws4https" наследует для http tpws, а для https и quic - nfqws.
|
||||
Их можно взять за основу для написания собственных.
|
||||
|
||||
Для linux пишется код в функции
|
||||
zapret_custom_daemons
|
||||
@@ -1637,12 +1648,9 @@ FW_EXTRA_POST добавляет код после.
|
||||
|
||||
В linux функции-хелперы добавляют правило в начало цепочек, то есть перед уже имеющимися.
|
||||
Поэтому специализации должны идти после более общих вариантов.
|
||||
Поэтому наследования идут с префиксом 10, а остальные custom скрипты с префиксом 50.
|
||||
Допустим, у вас есть особые правила для IP подсети youtube. Порты те же самые.
|
||||
Включен и общий обход. Чтобы youtube пошел приоритетом, скрипт должен применяться после
|
||||
общего обхода.
|
||||
Для macos правило обратное. Там правила добавляются в конец. Поэтому inherit скрипты
|
||||
имеют префикс 90.
|
||||
Для macos правило обратное. Там правила добавляются в конец.
|
||||
По этой же причине фаервол в Linux сначала применяется в стандартном режиме, потом custom,
|
||||
а в MacOS сначала custom, потом стандартный режим.
|
||||
|
||||
В macos firewall-функции ничего сами никуда не заносят. Их задача - лишь выдать текст в stdout,
|
||||
содержащий правила для pf-якоря. Остальное сделает обертка.
|
||||
@@ -1658,8 +1666,7 @@ custom скрипты могут использовать переменные
|
||||
Полезные функции можно взять из примеров скриптов. Так же смотрите "common/*.sh".
|
||||
Используя хелпер функции, вы избавитесь от необходимости учитывать все возможные случаи
|
||||
типа наличия/отсутствия ipv6, является ли система роутером, имена интерфейсов, ...
|
||||
Хелперы это учитывают, вам нужно сосредоточиться лишь на фильтрах {ip,nf}tables и
|
||||
параметрах демонов.
|
||||
Хелперы это учитывают. Вам нужно сосредоточиться лишь на фильтрах {ip,nf}tables и параметрах демонов.
|
||||
|
||||
|
||||
Простая установка
|
||||
|
||||
Reference in New Issue
Block a user