mirror of
https://github.com/bol-van/zapret.git
synced 2025-12-30 19:38:08 +03:00
autohostlist mode
This commit is contained in:
@@ -1,4 +1,4 @@
|
||||
zapret v.51
|
||||
zapret v.52
|
||||
|
||||
English
|
||||
-------
|
||||
@@ -230,6 +230,10 @@ nfqws
|
||||
--dpi-desync-cutoff=[n|d|s]N ; применять dpi desync только в исходящих пакетах (n), пакетах данных (d), относительных sequence (s) по номеру меньше N
|
||||
--hostlist=<filename> ; применять дурение только к хостам из листа. может быть множество листов, они обьединяются. пустой обший лист = его отсутствие
|
||||
--hostlist-exclude=<filename> ; не применять дурение к хостам из листа. может быть множество листов, они обьединяются
|
||||
--hostlist-auto=<filename> ; обнаруживать автоматически блокировки и заполнять автоматический hostlist (требует перенаправления входящего трафика)
|
||||
--hostlist-auto-fail-threshold=<int> ; сколько раз нужно обнаружить ситуацию, похожую на блокировку, чтобы добавить хост в лист (по умолчанию: 2)
|
||||
--hostlist-auto-fail-time=<int> ; все эти ситуации должны быть в пределах указанного количества секунд (по умолчанию: 60)
|
||||
--hostlist-auto-retrans-threshold=<int> ; сколько ретрансмиссий запроса считать блокировкой (по умолчанию: 3)
|
||||
|
||||
Параметры манипуляции могут сочетаться в любых комбинациях.
|
||||
|
||||
@@ -602,6 +606,9 @@ tpws - это transparent proxy.
|
||||
; списков может быть множество, они обьединяются. пустой общий лист = его отсутствие
|
||||
; хосты извлекаются из Host: хедера обычных http запросов и из SNI в TLS ClientHello.
|
||||
--hostlist-exclude=<filename> ; не применять дурение к доменам из листа. может быть множество листов, они обьединяются
|
||||
--hostlist-auto=<filename> ; обнаруживать автоматически блокировки и заполнять автоматический hostlist (требует перенаправления входящего трафика)
|
||||
--hostlist-auto-fail-threshold=<int> ; сколько раз нужно обнаружить ситуацию, похожую на блокировку, чтобы добавить хост в лист (по умолчанию: 2)
|
||||
--hostlist-auto-fail-time=<int> ; все эти ситуации должны быть в пределах указанного количества секунд (по умолчанию: 60)
|
||||
|
||||
|
||||
Параметры манипуляции могут сочетаться в любых комбинациях.
|
||||
@@ -710,7 +717,6 @@ tpws полностью работает на асинхронных сокет
|
||||
Это может быть полезно для скрытия факта использования VPN. Пониженный MTU - 1 из способов обнаружения
|
||||
подозрительного подключения. С tcp proxy ваши соединения неотличимы от тех, что сделал бы сам шлюз.
|
||||
|
||||
|
||||
Способы получения списка заблокированных IP
|
||||
-------------------------------------------
|
||||
|
||||
@@ -895,6 +901,66 @@ tpws и nfqws решают нужно ли применять дурение в
|
||||
Если после запуска демона RAM под завязку или случаются oom, значит нужно отказаться от таких больших списков.
|
||||
|
||||
|
||||
Режим фильтрации autohostlist
|
||||
-----------------------------
|
||||
|
||||
Этот режим позволяет проанализировать как запросы со стороны клиента, так и ответы от сервера.
|
||||
Если хост еще не находится ни в каких листах и обнаруживается ситуация, похожая на блокировку,
|
||||
происходит автоматическое добавление хоста в список autohostlist как в памяти, так и в файле.
|
||||
nfqws или tpws сами ведут этот файл.
|
||||
Чтобы какой-то хост не смог попась в autohostlist используйте hostlist-exclude.
|
||||
Если он все-же туда попал - удалите запись из файла вручную и перезапустите tpws/nfqws
|
||||
или дайте им сигнал HUP, чтобы они перечитали листы.
|
||||
tpws/nfqws сами назначают владельцем файла юзера, под которым они работают после сброса привилегий,
|
||||
чтобы иметь возможность обновлять лист.
|
||||
|
||||
В случае nfqws данный режим требует перенаправления в том числе и входящего трафика.
|
||||
Крайне рекомендовано использовать ограничитель connbytes, чтобы nfqws не обрабатывал гигабайты.
|
||||
По этой же причине не рекомендуется использование режима на BSD системах. Там нет фильтра connbytes.
|
||||
|
||||
Как вообще могут вести себя DPI, получив "плохой запрос" и приняв решение о блокировке :
|
||||
|
||||
1) Зависание : просто отмораживается, блокируя прохождение пакетов по TCP каналу.
|
||||
2) RST : отправляет RST клиенту и/или серверу
|
||||
3) Редирект : (только для http) отправляет редирект на сайт-заглушку
|
||||
4) Подмена сертификата : (только для https) полный перехват TLS сеанса с попыткой всунуть что-то
|
||||
свое клиенту. Применяется нечасто, поскольку броузеры на такое ругаются.
|
||||
|
||||
nfqws и tpws могут сечь варианты 1-3, 4 они не распознают.
|
||||
Всилу специфики работы с отдельными пакетами или с TCP каналом tpws и nfqws распознают эти ситуации
|
||||
по-разному.
|
||||
Что считается ситуацией, похожей на блокировку :
|
||||
1) [nfqws] Несколько ретрансмиссий первого запроса в TCP сеансе, в котором имеется host.
|
||||
2) [nfqws,tpws] RST, пришедший в ответ на первый запрос с хостом.
|
||||
3) [nfqws,tpws] HTTP редирект, пришедший в ответ на первый запрос с хостом, на глобальный адрес
|
||||
с доменом 2 уровня, не совпадающим с доменом 2 уровня оригинального запроса.
|
||||
4) [tpws] закрытие соединения клиентом после отправки первого запроса с хостом, если не было на него
|
||||
ответа со стороны сервера. Это обычно случается по таймауту, когда нет ответа (случай "зависание").
|
||||
|
||||
Чтобы снизить вероятность ложных срабатываний, имеется счетчик ситуаций, похожих на блокировку.
|
||||
Если за определенное время произойдет более определенного их количества, хост считается заблокированным
|
||||
и заносится в autohostlist. По нему сразу же начинает работать стратегия по обходу блокировки.
|
||||
|
||||
На практике работа с данным режимом выглядит так.
|
||||
Первый раз пользователь заходит на сайт и получает заглушку, сброс соединения или броузер подвисает,
|
||||
вываливаясь по таймауту с сообщением о невозможности загрузить страницу.
|
||||
Надо долбить F5, принуждая броузер повторять попытки. После некоторой попытки сайт
|
||||
начинает работать, и дальше он будет работать всегда.
|
||||
|
||||
С этим режимом можно использовать техники обхода, ломающие значительное количество сайтов.
|
||||
Если сайт не ведет себя как заблокированный, значит обход применен не будет.
|
||||
В противном случае терять все равно нечего.
|
||||
Однако, могут быть временные сбои сервера, приводящие к ситуации, аналогичной блокировке.
|
||||
Могут происходит ложные срабатывания. Если такое произошло, стратегия может начать ломать
|
||||
незаблокированный сайт. Эту ситуацию, увы, придется вам контролировать вручную.
|
||||
Заносите такие домены в ipset/zapret-hosts-user-exclude.txt, чтобы избежать повторения.
|
||||
|
||||
Скрипты zapret ведут autohostlist в ipset/zapret-hosts-auto.txt.
|
||||
install_easy.sh при апгрейде zapret сохраняет этот файл.
|
||||
Режим autohostlist включает в себя режим hostlist.
|
||||
Можно вести ipset/zapret-hosts-user.txt, ipset/zapret-hosts-user.txt.
|
||||
|
||||
|
||||
Проверка провайдера
|
||||
-------------------
|
||||
|
||||
@@ -968,6 +1034,7 @@ MODE_QUIC=0
|
||||
none - применять дурение ко всем хостам
|
||||
ipset - ограничить дурение ipset-ом zapret/zapret6
|
||||
hostlist - ограничить дурение списком хостов из файла
|
||||
autohostlist - режим hostlist + распознавание блокировок и ведения автоматического листа
|
||||
|
||||
MODE_FILTER=none
|
||||
|
||||
@@ -1046,6 +1113,11 @@ IPSET_HOOK="/etc/zapret.ipset.hook"
|
||||
IP2NET_OPT4="--prefix-length=22-30 --v4-threshold=3/4"
|
||||
IP2NET_OPT6="--prefix-length=56-64 --v6-threshold=5"
|
||||
|
||||
Настройка режима autohostlist.
|
||||
AUTOHOSTLIST_RETRANS_THRESHOLD=3
|
||||
AUTOHOSTLIST_FAIL_THRESHOLD=2
|
||||
AUTOHOSTLIST_FAIL_TIME=60
|
||||
|
||||
Включить или выключить сжатие больших листов в скриптах ipset/*.sh. По умолчанию включено.
|
||||
GZIP_LISTS=1
|
||||
|
||||
|
||||
Reference in New Issue
Block a user