mirror of
https://github.com/bol-van/zapret.git
synced 2025-05-24 22:32:58 +03:00
major config re-think and re-write
This commit is contained in:
@@ -336,3 +336,8 @@ tpws: fixed MSS apply in transparent mode
|
||||
nfqws: fixed autottl apply if desync profile changed
|
||||
tpws,nfqws: fixed 100% cpu hang on gzipped list with comments
|
||||
ipset: get_refilter_ipsum.sh , get_refilter_domain.sh
|
||||
|
||||
v66:
|
||||
|
||||
init.d: rewrite traffic interception and daemon launch parameters in config file. this break compatibility with old versions.
|
||||
init.d: openwrt-minimal : tpws launch for low storage openwrt devices
|
||||
|
@@ -20,12 +20,12 @@ nft delete table inet ztest
|
||||
nft create table inet ztest
|
||||
nft add chain inet ztest post "{type filter hook postrouting priority mangle;}"
|
||||
nft add rule inet ztest post meta mark and 0x40000000 == 0 tcp dport "{80,443}" ct original packets 1-12 queue num 200 bypass
|
||||
nft add rule inet ztest post meta mark and 0x40000000 == 0 udp dport 443 ct original packets 1-4 queue num 200 bypass
|
||||
nft add rule inet ztest post meta mark and 0x40000000 == 0 udp dport 443 ct original packets 1-12 queue num 200 bypass
|
||||
|
||||
# auto hostlist with avoiding wrong ACK numbers in RST,ACK packets sent by russian DPI
|
||||
sysctl net.netfilter.nf_conntrack_tcp_be_liberal=1
|
||||
nft add chain inet ztest pre "{type filter hook prerouting priority filter;}"
|
||||
nft add rule inet ztest pre tcp sport "{80,443}" ct reply packets 1-4 queue num 200 bypass
|
||||
nft add rule inet ztest pre tcp sport "{80,443}" ct reply packets 1-3 queue num 200 bypass
|
||||
|
||||
|
||||
show rules : nft list table inet ztest
|
||||
|
@@ -22,9 +22,9 @@
|
||||
1) Чтобы процедура установки сработала в штатном режиме на openwrt, нужно раcсчитывать на свободное место около 1-2 Mb
|
||||
для установки самого zapret и необходимых дополнительных пакетов.
|
||||
Если места мало и нет возможности его увеличить за счет extroot, возможно придется отказаться от варианта
|
||||
простой установки и прикручивать в ручном режиме без имеющихся скриптов запуска, либо попробовать засунуть требуемые
|
||||
zapret дополнительные пакеты в сжатый образ squashfs с помощью image builder и перешить этим вариантом роутер.
|
||||
См docs/manual_setup.txt , docs/readme.txt .
|
||||
простой установки и прикручивать в ручном режиме без имеющихся скриптов запуска.
|
||||
Можно использовать облегченный tpws вариант из init.d/openwrt-minimal, либо попробовать засунуть требуемые zapret
|
||||
дополнительные пакеты в сжатый образ squashfs с помощью image builder и перешить этим вариантом роутер.
|
||||
|
||||
2) Скачайте zip архив проекта с github в /tmp, распакуйте его там,
|
||||
либо клонируйте проект через : git clone --depth 1 https://github.com/bol-van/zapret
|
||||
@@ -83,10 +83,9 @@ iptables/nftables. В /etc/resolv.conf нельзя прописать DNS на
|
||||
|
||||
Следует понимать, что blockcheck проверяет доступность только конкретного домена, который вы вводите в начале.
|
||||
Вероятно, все остальные домены блокированы подобным образом, но не факт.
|
||||
В большинстве случаев можно обьединить несколько стратегий в одну универсальную, но для этого необходимо понимать
|
||||
"что там за буковки". Если вы в сетях слабо разбираетесь, это не для вас. В противном случае читайте readme.txt.
|
||||
zapret не может пробить блокировку по IP адресу
|
||||
Для проверки нескольких доменов вводите их через пробел.
|
||||
В большинстве случаев можно обьединить несколько стратегий в одну универсальную, и это крайне желательно.
|
||||
Необходимо понимать как работают стратегии.
|
||||
zapret не может пробить блокировку по IP адресу. Для проверки нескольких доменов вводите их через пробел.
|
||||
|
||||
Сейчас блокираторы ставят на магистральных каналах. В сложных случаях у вас может быть несколько маршрутов
|
||||
с различной длиной по ХОПам, с DPI на разных хопах. Приходится преодолевать целый зоопарк DPI,
|
||||
@@ -104,37 +103,68 @@ badseq может работать только на https и не работа
|
||||
может на одних провайдерах работать стабильно, на других потребуется выяснить при каких параметрах
|
||||
она стабильна, на третьих полный хаос, и проще отказаться.
|
||||
|
||||
Далее, имея понимание что работает на http, https, quic, нужно сконструировать параметры запуска tpws и/или nfqws
|
||||
с использованием мультистратегии. Как работают мультистратегии описано в readme.txt.
|
||||
|
||||
Если кратко, то обычно параметры конструируются так :
|
||||
"--filter-udp=443 'параметры для quic' <HOSTLIST> --new
|
||||
--filter-tcp=80-443 'обьединенные параметры для http и https' <HOSTLIST>"
|
||||
|
||||
Или так :
|
||||
"--filter-udp=443 "параметры для quic" <HOSTLIST> --new
|
||||
--filter-tcp=80 'параметры для http' <HOSTLIST> --new
|
||||
--filter-tcp=443 'параметры для https' <HOSTLIST>"
|
||||
|
||||
"<HOSTLIST>" так и пишется. Его не надо на что-то заменять. Это сделают скрипты запуска, если вы выбрали режим
|
||||
фильтрации по хостлистам, и уберут в противном случае.
|
||||
Если для какого-то протокола надо дурить все без стандартного хостлиста - просто уберите оттуда "<HOSTLIST>".
|
||||
Можно писать свои параметры --hostlist и --hostlist-exclude для дополнительных хостлистов
|
||||
или в профилях специализаций под конкретный ресурс. В последнем случае стандартный хостлист там не нужен.
|
||||
Следует избегать указания собственных параметров --hostlist на листы из директории ipset.
|
||||
Эта логика включена в "<HOSTLIST>".
|
||||
|
||||
Если стратегии отличаются по версии ip протокола, и вы не можете их обьединить, фильтр пишется так :
|
||||
"--filter-l3=ipv4 --filter-udp=443 "параметры для quic ipv4" <HOSTLIST> --new
|
||||
--filter-l3=ipv4 --filter-tcp=80 'параметры для http ipv4' <HOSTLIST> --new
|
||||
--filter-l3=ipv4 --filter-tcp=443 'параметры для https ipv4' <HOSTLIST> --new
|
||||
--filter-l3=ipv6 --filter-udp=443 "параметры для quic ipv6" <HOSTLIST> --new
|
||||
--filter-l3=ipv6 --filter-tcp=80 'параметры для http ipv6' <HOSTLIST> --new
|
||||
--filter-l3=ipv6 --filter-tcp=443 'параметры для https ipv6' <HOSTLIST>"
|
||||
|
||||
Но здесь совсем "копи-пастный" вариант.
|
||||
Чем больше вы обьедините стратегий и сократите их общее количество, тем будет лучше.
|
||||
|
||||
Если вам не нужно дурение отдельных протоколов, лучше всего будет их убрать из системы перехвата трафика через
|
||||
параметры TPWS_PORTS, NFQWS_PORTS_TCP, NFQWS_PORTS_UDP и убрать соответствующие им профили мультистратегии.
|
||||
tcp 80 - http, tcp 443 - https, udp 443 - quic.
|
||||
|
||||
Если используются методы нулевой фазы десинхронизации (--mss, --wssize, --dpi-desync=syndata) и режим фильтрации hostlist,
|
||||
то все параметры, относящиеся к этим методам, следует помещать не в основные параметры (например, NFQWS_OPT_DESYNC),
|
||||
а в suffix (NFQWS_OPT_DESYNC_SUFFIX). Чтобы не ошибиться, можно их продублировать и там, и там.
|
||||
Иначе они могут не работать.
|
||||
то все параметры, относящиеся к этим методам, следует помещать в отдельные профили мульистратегии, которые получат
|
||||
управление до определения имени хоста. Необходимо понимать алгоритм работы мультистратегий.
|
||||
Самым надежным вариантом будет дублирование этих параметров на 2 профиля. Какой-нибудь сработает в зависимости
|
||||
от параметра MODE_FILTER.
|
||||
|
||||
"--filter-tcp=80 'параметры для http' <HOSTLIST> --new
|
||||
--filter-tcp=443 'параметры для https' --wssize 1:6 <HOSTLIST> --new
|
||||
--filter-tcp=443 --wssize 1:6"
|
||||
|
||||
В этом примере wssize будет применяться всегда к порту tcp 443 вне зависимости от параметра MODE_FILTER.
|
||||
Хостлист будет игнорироваться, если таковой имеется. К http применять wssize вредно и бессмысленно.
|
||||
|
||||
Никто не мешает использовать tpws для http, nfqws для https, либо комбинировать действие nfqws и tpws для одного протокола.
|
||||
В текущем варианте скриптов запуска это делается максимально гибко и независимо друг от друга.
|
||||
|
||||
8) Запустите install_easy.sh.
|
||||
Выберите nfqws или tpws, затем согласитесь на редактирование параметров.
|
||||
Откроется редактор, куда впишите найденные стратегии.
|
||||
Для nfqws отдельно настраиваются стратегии на http и https для ipv4 и ipv6.
|
||||
То есть по максимуму 4 разных варианта.
|
||||
NFQWS_OPT_DESYNC - это общая установка, которая применяется, если какой-либо уточняющий параметр не задан
|
||||
NFQWS_OPT_DESYNC_HTTP и NFQWS_OPT_DESYNC_HTTPS заменяют стратегию для http и https.
|
||||
Если у вас включен ipv6, то они так же будут применены и к ipv6. Если для ipv6 нужна другая стратегия,
|
||||
то можно задать уточняющие параметры NFQWS_OPT_DESYNC_HTTP6 и NFQWS_OPT_DESYNC_HTTPS6.
|
||||
Если стратегии для ipv4 и ipv6 отличаются лишь ttl, то в целях экономии ресурсов роутера (меньше процессов nfqws)
|
||||
следует отказаться от использования специфических для ipv6 установок. Вместо них использовать параметры
|
||||
--dpi-desync-ttl и --dpi-desync-ttl6 в общих установках. Таким способом можно заставить один процесс nfqws
|
||||
обрабатывать трафик на ipv4 и на ipv6 с разным ttl.
|
||||
|
||||
Важным вопросом является вопрос о поддержке http keep alive.
|
||||
Отвечайте N. Если вдруг на http сайтах будут хаотические сбои типа то загружается, то заглушка или сброс,
|
||||
попробуйте включить поддержку keep alive. Но просто "на всякий случай" не включайте - это увеличит нагрузку на роутер.
|
||||
|
||||
Если это не помогает, или хаотичное поведение наблюдается и на https, то еще раз прогоните blockcheck
|
||||
с установленным числом попыток проверки не менее 5. Возможно, ваш провайдер использует балансировку нагрузки,
|
||||
где на разных путях установлен разный DPI.
|
||||
Выберите nfqws и/или tpws, затем согласитесь на редактирование параметров.
|
||||
Откроется редактор, куда впишите созданную на предыдущем этапе стратегию.
|
||||
|
||||
9) На все остальные вопросы install_easy.sh отвечайте согласно выводимой аннонтации.
|
||||
|
||||
10) Если ломаются отдельные незаблокированные ресурсы, следует вносить их в исключения, либо пользоваться ограничивающим
|
||||
ipset или хост листом. Читайте основной талмуд readme.txt ради подробностей.
|
||||
Но еще лучше будет подбирать такие стратегии, которые ломают минимум.
|
||||
Есть стратегии довольно безобидные, а есть сильно ломающие, которые подходят только для точечного пробития отдельных ресурсов,
|
||||
когда ничего лучше нет. Хорошая стратегия может сильно ломать из-за плохо подобранных ограничителей для фейков - ttl, fooling.
|
||||
|
||||
Это минимальная инструкция, чтобы соориентироваться с чего начать. Однако, это - не панацея.
|
||||
В некоторых случаях вы не обойдетесь без знаний и основного "талмуда".
|
||||
|
@@ -2,7 +2,10 @@
|
||||
|
||||
Как обычно, компьютерная грамотность ложится полностью на вас.
|
||||
Вы должны уметь работать с консолью windows и иметь минимальные навыки обращения с командными файлами bat,cmd.
|
||||
Если грамотность отсутствует и возникает куча "как" на базовых вещах - проходите мимо или ищите помощь в другом месте.
|
||||
Если грамотность отсутствует и возникает куча "как" на базовых вещах, значит эта программа не для вас.
|
||||
Разработчик не будет отвечать на вопросы из серии школы компьютерной грамотности.
|
||||
Если вы все-таки хотите продолжать, задавайте вопросы в дискуссиях на github или на форумах.
|
||||
Возможно, кто-то вам поможет. Но не надо писать issue на github. Они будут закрываться сразу.
|
||||
|
||||
Обход DPI является хакерской методикой. Под этим словом понимается метод, которому сопротивляется окружающая среда,
|
||||
которому автоматически не гарантирована работоспособность в любых условиях и на любых ресурсах,
|
||||
@@ -34,21 +37,22 @@
|
||||
|
||||
РЕШЕНИЕ "КАК ПОЛОЖЕНО"
|
||||
|
||||
1) Если у вас windows 7, обновляйте систему. Годами не обновляемая 7-ка может не запускать драйвер windivert.
|
||||
Поддержка 32-битных x86 windows возможна, но в готовом виде отсутствует.
|
||||
1) Скачайте и распакуйте архив https://github.com/bol-van/zapret-win-bundle/archive/refs/heads/master.zip
|
||||
|
||||
2) Если у вас Windows 7 x64, читайте docs/windows.txt. Без описанной там подготовки может не работать.
|
||||
Для 32-битных систем Windows нет готового полного варианта, но есть собранные бинарники :
|
||||
https://github.com/bol-van/zapret-win32
|
||||
На windows 11 arm64 выполните arm64/install_arm64.cmd от имени администратора и перезагрузите компьютер.
|
||||
Читайте docs/windows.txt
|
||||
|
||||
Имейте в виду, что антивирусы могут плохо реагировать на windivert.
|
||||
cygwin имеет внушительный список несовместимостей с антивирусами. Многие антивирусы его ломают.
|
||||
https://www.cygwin.com/faq.html#faq.using.bloda
|
||||
Если это имеет место , используйте исключения. Если это не помогает - отключайте антивирус совсем.
|
||||
cygwin так же имеет внушительный список несовместимостей с антивирусами, хотя современные антивирусы
|
||||
более-менее научились с ним дружить.
|
||||
Если проблема имеет место , используйте исключения. Если не помогает - отключайте антивирус совсем.
|
||||
|
||||
2) Убедитесь, что у вас отключены все средства обхода блокировок, в том числе и сам zapret.
|
||||
3) Убедитесь, что у вас отключены все средства обхода блокировок, в том числе и сам zapret.
|
||||
|
||||
3) Если вы работаете в виртуальной машине, необходимо использовать соединение с сетью в режиме bridge. nat не подходит
|
||||
|
||||
4) Скачайте и распакуйте архив https://github.com/bol-van/zapret-win-bundle/archive/refs/heads/master.zip
|
||||
4) Если вы работаете в виртуальной машине, необходимо использовать соединение с сетью в режиме bridge. nat не подходит
|
||||
|
||||
5) Запустите blockcheck\blockcheck.cmd. blockcheck в начале проверяет DNS. Если выводятся сообщения о подмене адресов, то
|
||||
первым делом нужно решить эту проблему, иначе ничего не будет работать.
|
||||
@@ -66,10 +70,9 @@ https://www.cygwin.com/faq.html#faq.using.bloda
|
||||
|
||||
Следует понимать, что blockcheck проверяет доступность только конкретного домена, который вы вводите в начале.
|
||||
Вероятно, все остальные домены блокированы подобным образом, но не факт.
|
||||
В большинстве случаев можно обьединить несколько стратегий в одну универсальную, но для этого необходимо понимать
|
||||
"что там за буковки". Если вы в сетях слабо разбираетесь, это не для вас. В противном случае читайте readme.txt.
|
||||
zapret не может пробить блокировку по IP адресу
|
||||
Для проверки нескольких доменов вводите их через пробел.
|
||||
В большинстве случаев можно обьединить несколько стратегий в одну универсальную, и это крайне желательно.
|
||||
Необходимо понимать как работают стратегии.
|
||||
zapret не может пробить блокировку по IP адресу. Для проверки нескольких доменов вводите их через пробел.
|
||||
|
||||
Сейчас блокираторы ставят на магистральных каналах. В сложных случаях у вас может быть несколько маршрутов
|
||||
с различной длиной по ХОПам, с DPI на разных хопах. Приходится преодолевать целый зоопарк DPI,
|
||||
@@ -87,10 +90,58 @@ badseq может работать только на https и не работа
|
||||
может на одних провайдерах работать стабильно, на других потребуется выяснить при каких параметрах
|
||||
она стабильна, на третьих полный хаос, и проще отказаться.
|
||||
|
||||
Если используются методы нулевой фазы десинхронизации (--wssize, --dpi-desync=syndata) и фильтр hostlist,
|
||||
то все параметры, относящиеся к этим методам, следует помещать в следующий профиль без хостлиста,
|
||||
к которому перейдет управление, когда имя хоста еще неизвестно.
|
||||
Используйте параметр --debug для отладки вашего сценария.
|
||||
Далее, имея понимание что работает на http, https, quic, нужно сконструировать параметры запуска winws
|
||||
с использованием мультистратегии. Как работают мультистратегии описано в readme.txt.
|
||||
|
||||
Прежде всего вам нужно собрать фильтр перехватываемого трафика. Это делается через параметры
|
||||
--wf-l3, --wf-tcp, --wf-udp.
|
||||
--wf-l3 относится к версии ip протокола - ipv4 или ipv6.
|
||||
--wf-tcp и --wf-udp содержат перечень портов или диапазонов портов через запятую.
|
||||
|
||||
Пример стандартного фильтра для перехвата http, https, quic : --wf-tcp=80,443 --wf-udp=443
|
||||
|
||||
Фильтр должен быть минимально необходимым. Перехват лишнего трафика приведет только к бессмысленному
|
||||
расходованию ресурсов процессора и замедлению интернета.
|
||||
|
||||
Если кратко по мультистратегии, то обычно параметры конструируются так :
|
||||
"--filter-udp=443 'параметры для quic' --new
|
||||
--filter-tcp=80-443 'обьединенные параметры для http и https'"
|
||||
|
||||
Или так :
|
||||
"--filter-udp=443 "параметры для quic" --new
|
||||
--filter-tcp=80 'параметры для http' --new
|
||||
--filter-tcp=443 'параметры для https'"
|
||||
|
||||
Если стратегии отличаются по версии ip протокола, и вы не можете их обьединить, фильтр пишется так :
|
||||
"--filter-l3=ipv4 --filter-udp=443 "параметры для quic ipv4" --new
|
||||
--filter-l3=ipv4 --filter-tcp=80 'параметры для http ipv4' --new
|
||||
--filter-l3=ipv4 --filter-tcp=443 'параметры для https ipv4' --new
|
||||
--filter-l3=ipv6 --filter-udp=443 "параметры для quic ipv6" --new
|
||||
--filter-l3=ipv6 --filter-tcp=80 'параметры для http ipv6' --new
|
||||
--filter-l3=ipv6 --filter-tcp=443 'параметры для https ipv6'"
|
||||
|
||||
Но здесь совсем "копи-пастный" вариант.
|
||||
Чем больше вы обьедините стратегий и сократите их общее количество, тем будет лучше.
|
||||
|
||||
Если вам не нужно дурение отдельных протоколов, лучше всего будет их убрать из системы перехвата трафика через
|
||||
параметры --wf-* и убрать соответствующие им профили мультистратегии.
|
||||
tcp 80 - http, tcp 443 - https, udp 443 - quic.
|
||||
|
||||
Если используются методы нулевой фазы десинхронизации (--mss, --wssize, --dpi-desync=syndata) и фильтрация hostlist,
|
||||
то все параметры, относящиеся к этим методам, следует помещать в отдельные профили мультистратегии, которые получат
|
||||
управление до определения имени хоста. Необходимо понимать алгоритм работы мультистратегий.
|
||||
|
||||
"--filter-tcp=80 'параметры для http' --new
|
||||
--filter-tcp=443 'параметры для https' --hostlist=d:/users/user/temp/list.txt --new
|
||||
--filter-tcp=443 --wssize 1:6"
|
||||
|
||||
autohostlist профиль приоритетен, поэтому wssize нужно писать туда :
|
||||
|
||||
"--filter-tcp=80 'параметры для http' --new
|
||||
--filter-tcp=443 'параметры для https' --wssize 1:6 --hostlist-auto=d:/users/user/temp/autolist.txt"
|
||||
|
||||
В этих примерах wssize будет применяться всегда к порту tcp 443, а хостлист будет игнорироваться.
|
||||
К http применять wssize вредно и бессмысленно.
|
||||
|
||||
7) Протестируйте найденные стратегии на winws. winws следует брать из zapret-winws.
|
||||
Для этого откройте командную строку windows от имени администратора в директории zapret-winws.
|
||||
@@ -113,10 +164,12 @@ badseq может работать только на https и не работа
|
||||
|
||||
Аналогично настраиваются и службы windows. Смотрите service_*.cmd
|
||||
|
||||
9) Если ломаются отдельные незаблокированные ресурсы, используйте хост-листы.
|
||||
Где они будут находиться - решайте сами.
|
||||
Параметры управления хост-листами точно такие же, как в *nix.
|
||||
10) Если ломаются отдельные незаблокированные ресурсы, нужно пользоваться ограничивающим
|
||||
ipset или хост листом. Читайте основной талмуд readme.txt ради подробностей.
|
||||
Но еще лучше будет подбирать такие стратегии, которые ломают минимум.
|
||||
Есть стратегии довольно безобидные, а есть сильно ломающие, которые подходят только для точечного пробития отдельных ресурсов,
|
||||
когда ничего лучше нет. Хорошая стратегия может сильно ломать из-за плохо подобранных ограничителей для фейков - ttl, fooling.
|
||||
|
||||
Это минимальная инструкция, чтобы соориентироваться с чего начать. Однако, это - не панацея.
|
||||
В некоторых случаях вы не обойдетесь без знаний и основного "толмуда".
|
||||
В некоторых случаях вы не обойдетесь без знаний и основного "талмуда".
|
||||
Подробности и полное техническое описание расписаны в readme.txt
|
||||
|
@@ -915,35 +915,104 @@ On openwrt by default `nftables` is selected on `firewall4` based systems.
|
||||
|
||||
`FWTYPE=iptables`
|
||||
|
||||
Main mode :
|
||||
With `nftables` post-NAT scheme is used by default. It allows more DPI attacks on forwarded traffic.
|
||||
It's possible to use `iptables`-like pre-NAT scheme. `nfqws` will see client source IPs and display them in logs.
|
||||
|
||||
`#POSTNAT=0`
|
||||
|
||||
There'are 3 standard options configured separately and independently : `tpws-socks`, `tpws`, `nfqws`.
|
||||
They can be used alone or combined. Custom scripts in `init.d/{sysv,openwrt,macos}/custom.d` are always applied.
|
||||
|
||||
`tpws-socks` requires daemon parameter configuration but does not require traffic interception.
|
||||
Other standard options require also traffic interception.
|
||||
Each standard option launches single daemon instance. Strategy differiences are managed using multi-profile scheme.
|
||||
Main rule for interception is "intercept required minumum". Everything else only wastes CPU resources and slows down connection.
|
||||
|
||||
`--ipset` option is prohibited intentionally to disallow easy to use but ineffective user-mode filtering.
|
||||
Use kernel ipsets instead. It may require custom scripts.
|
||||
|
||||
To use standard updatable hostlists from the `ipset` dir use `<HOSTLIST>` placeholder. It's automatically replaced
|
||||
with hostlist parameters if `MODE_FILTER` variable enables hostlists and is removed otherwise.
|
||||
Standard hostlists are expected in final (fallback) strategies closing groups of filter parameters.
|
||||
Don't use `<HOSTLIST>` in highly specialized profiles. Use your own filter or hostlist(s).
|
||||
|
||||
|
||||
`tpws` socks proxy mode switch
|
||||
|
||||
`TPWS_SOCKS_ENABLE=0`
|
||||
|
||||
Listening tcp port for `tpws` proxy mode.
|
||||
|
||||
`TPPORT_SOCKS=987`
|
||||
|
||||
`tpws` socks mode parameters
|
||||
|
||||
```
|
||||
tpws - tpws transparent mode
|
||||
tpws-socks - tpws socks mode
|
||||
binds to localhost and LAN interface (if IFACE_LAN is specified or the system is OpenWRT). port 988
|
||||
nfqws - nfqws
|
||||
filter - only fill ipset or load hostlist
|
||||
custom - use custom script for running daemons and establishing firewall rules
|
||||
TPWS_SOCKS_OPT="
|
||||
--filter-tcp=80 --methodeol <HOSTLIST> --new
|
||||
--filter-tcp=443 --split-tls=sni --disorder <HOSTLIST>
|
||||
"
|
||||
```
|
||||
|
||||
`MODE=tpws`
|
||||
`tpws` transparent mode switch
|
||||
|
||||
Enable http fooling :
|
||||
`TPWS_ENABLE=0`
|
||||
|
||||
`MODE_HTTP=1`
|
||||
`tpws` transparent mode target ports
|
||||
|
||||
Apply fooling to keep alive http sessions. Only applicable to nfqws. Tpws always fool keepalives.
|
||||
Not enabling this can save CPU time.
|
||||
`TPWS_PORTS=80,443`
|
||||
|
||||
`MODE_HTTP_KEEPALIVE=0`
|
||||
`tpws` transparent mode parameters
|
||||
|
||||
Enable https fooling :
|
||||
```
|
||||
TPWS_OPT="
|
||||
--filter-tcp=80 --methodeol <HOSTLIST> --new
|
||||
--filter-tcp=443 --split-tls=sni --disorder <HOSTLIST>
|
||||
"
|
||||
```
|
||||
|
||||
`MODE_HTTPS=1`
|
||||
`nfqws` enable switch
|
||||
|
||||
Enable quic fooling :
|
||||
`NFQWS_ENABLE=0`
|
||||
|
||||
`nfqws` port targets for `connbytes`-limited interception. `connbytes` allows to intercept only starting packets from connections.
|
||||
This is more effective kernel-mode alternative to `nfqws --dpi-desync-cutoff=nX`.
|
||||
|
||||
```
|
||||
NFQWS_PORTS_TCP=80,443
|
||||
NFQWS_PORTS_UDP=443
|
||||
```
|
||||
|
||||
How many starting packets should be intercepted to nfqws in each direction
|
||||
|
||||
```
|
||||
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
|
||||
```
|
||||
|
||||
There's kind of traffic that requires interception of entire outgoing stream.
|
||||
Typically it's support for plain http keepalives and stateless DPI.
|
||||
This mode of interception significantly increases CPU utilization. Use with care and only if required.
|
||||
Here you specify port numbers for unlimited interception.
|
||||
It's advised also to remove these ports from `connbytes`-limited interception list.
|
||||
|
||||
```
|
||||
#NFQWS_PORTS_TCP_KEEPALIVE=80
|
||||
#NFQWS_PORTS_UDP_KEEPALIVE=
|
||||
```
|
||||
|
||||
`nfqws` parameters
|
||||
|
||||
```
|
||||
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>
|
||||
"
|
||||
```
|
||||
|
||||
`MODE_QUIC=1`
|
||||
|
||||
Host filtering mode :
|
||||
```
|
||||
@@ -955,62 +1024,6 @@ autohostlist - hostlist mode + blocks auto detection
|
||||
|
||||
`MODE_FILTER=none`
|
||||
|
||||
Its possible to change manipulation options used by tpws :
|
||||
|
||||
`TPWS_OPT="--hostspell=HOST --split-http-req=method --split-pos=3"`
|
||||
|
||||
Additional low priority desync profile for `MODE_FILTER=hostlist`.
|
||||
With multiple profile support 0-phase desync methods are no more applied with hostlist !
|
||||
To apply them additional profile is required without hostlist filter.
|
||||
|
||||
`TPWS_OPT_SUFFIX="--mss=88"`
|
||||
|
||||
nfqws options for DPI desync attack:
|
||||
|
||||
```
|
||||
DESYNC_MARK=0x40000000
|
||||
DESYNC_MARK_POSTNAT=0x20000000
|
||||
NFQWS_OPT_DESYNC="--dpi-desync=fake --dpi-desync-ttl=0 --dpi-desync-fooling=badsum --dpi-desync-fwmark=$DESYNC_MARK"
|
||||
```
|
||||
|
||||
Separate nfqws options for http and https and ip protocol versions 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"
|
||||
```
|
||||
|
||||
If one of `NFQWS_OPT_DESYNC_HTTP`/`NFQWS_OPT_DESYNC_HTTPS` is not defined it takes value of NFQWS_OPT_DESYNC.
|
||||
If one of `NFQWS_OPT_DESYNC_HTTP6`/`NFQWS_OPT_DESYNC_HTTPS6` is not defined it takes value from
|
||||
`NFQWS_OPT_DESYNC_HTTP`/`NFQWS_OPT_DESYNC_HTTPS`.
|
||||
It means if only `NFQWS_OPT_DESYNC` is defined all four take its value.
|
||||
|
||||
If a variable is not defined, the value `NFQWS_OPT_DESYNC` is taken.
|
||||
|
||||
Additional low priority desync profile for `MODE_FILTER=hostlist`.
|
||||
With multiple profile support 0-phase desync methods are no more applied with hostlist !
|
||||
To apply them additional profile is required without hostlist filter.
|
||||
```
|
||||
#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"
|
||||
```
|
||||
|
||||
Defaults are filled the same ways as with NFQWS_OPT_*.
|
||||
|
||||
Separate QUIC options for ip protocol versions :
|
||||
|
||||
```
|
||||
NFQWS_OPT_DESYNC_QUIC="--dpi-desync=fake"
|
||||
NFQWS_OPT_DESYNC_QUIC6="--dpi-desync=hopbyhop"
|
||||
```
|
||||
|
||||
If `NFQWS_OPT_DESYNC_QUIC6` is not specified `NFQWS_OPT_DESYNC_QUIC` is taken.
|
||||
|
||||
|
||||
flow offloading control (if supported)
|
||||
|
||||
@@ -1208,6 +1221,8 @@ After installation remove `/tmp/zapret` to free RAM.
|
||||
|
||||
The absolute minimum for openwrt is 64/8 system, 64/16 is comfortable, 128/extroot is recommended.
|
||||
|
||||
For low storage openwrt see `init.d/openwrt-minimal`.
|
||||
|
||||
### Android
|
||||
|
||||
Its not possible to use nfqws and tpws in transparent proxy mode without root privileges.
|
||||
|
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 и параметрах демонов.
|
||||
|
||||
|
||||
Простая установка
|
||||
|
@@ -15,7 +15,7 @@ Tor поддерживает "из коробки" режим transparent proxy.
|
||||
4) Завернуть через iptables или nftables трафик с порта назначения 443 и на ip адреса из ipset/nfset 'zapret' на соксификатор
|
||||
Тоже самое сделать с ipset/nfset 'ipban' для всех tcp портов.
|
||||
Буду рассматривать систему на базе openwrt, где уже установлена система обхода dpi "zapret".
|
||||
Если вам не нужны функции обхода DPI, можно выбрать режим MODE=filter.
|
||||
Если вам не нужны функции обхода DPI, его можно не включать. Обновление фильтра от этого не зависит.
|
||||
|
||||
|
||||
* Сделать так, чтобы все время при загрузке системы на некотором порту возникал socks
|
||||
|
@@ -282,6 +282,14 @@ ipt PREROUTING -t mangle -i $DEVICE -m set --match-set ipban dst -m set ! --matc
|
||||
|
||||
# /etc/init.d/firewall restart
|
||||
|
||||
Чтобы правила обновлялись в процессе поднятия интерфейсов в системе, нужно внести параметр "reload" в указанное место :
|
||||
--- /etc/config/firewall ---
|
||||
config include
|
||||
option path '/etc/firewall.user'
|
||||
option reload '1'
|
||||
----------------------------
|
||||
|
||||
|
||||
--- Маркировка трафика nftables ---
|
||||
|
||||
В новых openwrt по умолчанию установлен nftables, iptables отсутствует.
|
||||
|
Reference in New Issue
Block a user