2024-10-28 09:32:24 +03:00
|
|
|
|
Специально для тех, кто хочет побыстрее начать, но не хочет слишком углубляться в простыню readme.txt.
|
|
|
|
|
|
|
|
|
|
Предупреждение : не пишите в issue вопросы типа "как скопировать файл", "как скачать", "как запустить", ...
|
|
|
|
|
То есть все , что касается базовых навыков обращения с ОС linux. Эти вопросы буду закрывать сразу.
|
|
|
|
|
Если у вас подобные вопросы возникают, рекомендую не использовать данный софт или искать помощь где-то в другом месте.
|
|
|
|
|
То же самое могу сказать тем, кто хочет нажать 1 кнопку, чтобы все заработало, и совсем не хочет читать и изучать.
|
|
|
|
|
Увы, такое не подвезли и не подвезут. Ищите другие более простые методы обхода. Этот метод не для рядового пользователя.
|
|
|
|
|
|
|
|
|
|
Обход DPI является хакерской методикой. Под этим словом понимается метод, которому сопротивляется окружающая среда,
|
|
|
|
|
которому автоматически не гарантирована работоспособность в любых условиях и на любых ресурсах,
|
|
|
|
|
требуется настройка под специфические условия у вашего провайдера. Условия могут меняться со временем,
|
|
|
|
|
и методика может начинать или переставать работать, может потребоваться повторный анализ ситуации.
|
|
|
|
|
Могут обнаруживаться отдельные ресурсы, которые заблокированы иначе, и которые не работают или перестали работать.
|
|
|
|
|
Могут и сломаться отдельные незаблокированные ресурсы.
|
|
|
|
|
Поэтому очень желательно иметь знания в области сетей, чтобы иметь возможность проанализировать техническую ситуацию.
|
|
|
|
|
Не будет лишним иметь обходные каналы проксирования трафика на случай, если обход DPI не помогает.
|
|
|
|
|
|
|
|
|
|
Будем считать, что у вас есть система на базе традиционного linux или openwrt.
|
|
|
|
|
Если у вас традиционный linux - задача обойти блокировки только на этой системе, если openwrt - обойти блокировки
|
|
|
|
|
для подключенных устройств. Это наиболее распространенный случай.
|
|
|
|
|
|
|
|
|
|
1) Чтобы процедура установки сработала в штатном режиме на openwrt, нужно раcсчитывать на свободное место около 1-2 Mb
|
|
|
|
|
для установки самого zapret и необходимых дополнительных пакетов.
|
|
|
|
|
Если места мало и нет возможности его увеличить за счет extroot, возможно придется отказаться от варианта
|
2024-10-25 14:29:47 +03:00
|
|
|
|
простой установки и прикручивать в ручном режиме без имеющихся скриптов запуска.
|
|
|
|
|
Можно использовать облегченный tpws вариант из init.d/openwrt-minimal, либо попробовать засунуть требуемые zapret
|
|
|
|
|
дополнительные пакеты в сжатый образ squashfs с помощью image builder и перешить этим вариантом роутер.
|
2024-10-28 09:32:24 +03:00
|
|
|
|
|
|
|
|
|
2) Скачайте zip архив проекта с github в /tmp, распакуйте его там,
|
|
|
|
|
либо клонируйте проект через : git clone --depth 1 https://github.com/bol-van/zapret
|
|
|
|
|
|
|
|
|
|
3) Убедитесь, что у вас отключены все средства обхода блокировок, в том числе и сам zapret.
|
|
|
|
|
Гарантированно уберет zapret скрипт uninstall_easy.sh.
|
|
|
|
|
|
|
|
|
|
4) Если вы работаете в виртуальной машине, необходимо использовать соединение с сетью в режиме bridge. nat не подходит
|
|
|
|
|
|
|
|
|
|
5) Выполните однократные действия по установке требуемых пакетов в ОС и настройке бинариков правильной архитектуры
|
|
|
|
|
|
|
|
|
|
install_bin.sh
|
|
|
|
|
install_prereq.sh
|
|
|
|
|
|
|
|
|
|
Вас могут спросить о типе фаервола (iptables/nftables) и использовании ipv6. Это нужно для установки
|
|
|
|
|
правильных пакетов в ОС, чтобы не устанавливать лишнее.
|
|
|
|
|
|
2024-10-29 21:27:04 +03:00
|
|
|
|
6) Запустите blockcheck.sh. blockcheck.sh в начале проверяет DNS.
|
|
|
|
|
Если выводятся сообщения о подмене адресов, то нужно будет решить проблему с DNS.
|
|
|
|
|
blockcheck перейдет в этом случае на DoH и будет пытаться получить и использовать реальные IP адреса.
|
|
|
|
|
Но если вы не настроите решение этой проблемы, обход будет работать только для тех программ
|
|
|
|
|
или ОС, которые сами реализуют механизмы SecureDNS. Для других программ обход работать не будет.
|
|
|
|
|
|
2024-10-28 09:32:24 +03:00
|
|
|
|
Решение проблемы DNS выходит за рамки проекта. Обычно она решается либо заменой DNS серверов
|
|
|
|
|
от провайдера на публичные (1.1.1.1, 8.8.8.8), либо в случае перехвата провайдером обращений
|
|
|
|
|
к сторонним серверам - через специальные средства шифрования DNS запросов, такие как dnscrypt, DoT, DoH.
|
|
|
|
|
|
|
|
|
|
Еще один эффективный вариант - использовать ресолвер от yandex 77.88.8.88 на нестандартном порту 1253.
|
|
|
|
|
Многие провайдеры не анализируют обращения к DNS на нестандартных портах.
|
|
|
|
|
|
|
|
|
|
Проверить работает ли этот вариант можно так :
|
|
|
|
|
|
|
|
|
|
dig -p 53 @77.88.8.88 rutracker.org
|
|
|
|
|
dig -p 1253 @77.88.8.88 rutracker.org
|
|
|
|
|
|
|
|
|
|
Если DNS действительно подменяется, и ответ на эти 2 команды разный, значит метод вероятно работает.
|
|
|
|
|
|
|
|
|
|
В openwrt DNS на нестандартном порту можно прописать в /etc/config/dhcp таким способом :
|
|
|
|
|
|
|
|
|
|
config dnsmasq
|
|
|
|
|
.............
|
|
|
|
|
list server '77.88.8.88#1253'
|
|
|
|
|
|
|
|
|
|
Если настройки IP и DNS получаются автоматически от провайдера, в /etc/config/network
|
|
|
|
|
найдите секцию интерфейса 'wan' и сделайте так :
|
|
|
|
|
|
|
|
|
|
config interface 'wan'
|
|
|
|
|
.............
|
|
|
|
|
option peerdns '0'
|
|
|
|
|
|
|
|
|
|
/etc/init.d/network restart
|
|
|
|
|
/etc/init.d/dnsmasq restart
|
|
|
|
|
|
|
|
|
|
Если это не подходит, можно перенаправлять обращения на udp и tcp порты 53 вашего DNS сервера на 77.88.8.88:1253 средствами
|
|
|
|
|
iptables/nftables. В /etc/resolv.conf нельзя прописать DNS на нестандартном порту.
|
|
|
|
|
|
|
|
|
|
7) blockcheck позволяет выявить рабочую стратегию обхода блокировок
|
|
|
|
|
По результатам blockcheck нужно понять какой вариант будете использовать : nfqws или tpws
|
|
|
|
|
И запомнить найденные стратегии.
|
|
|
|
|
|
|
|
|
|
Следует понимать, что blockcheck проверяет доступность только конкретного домена, который вы вводите в начале.
|
|
|
|
|
Вероятно, все остальные домены блокированы подобным образом, но не факт.
|
2024-10-25 14:29:47 +03:00
|
|
|
|
В большинстве случаев можно обьединить несколько стратегий в одну универсальную, и это крайне желательно.
|
|
|
|
|
Необходимо понимать как работают стратегии.
|
|
|
|
|
zapret не может пробить блокировку по IP адресу. Для проверки нескольких доменов вводите их через пробел.
|
2024-10-28 09:32:24 +03:00
|
|
|
|
|
|
|
|
|
Сейчас блокираторы ставят на магистральных каналах. В сложных случаях у вас может быть несколько маршрутов
|
|
|
|
|
с различной длиной по ХОПам, с DPI на разных хопах. Приходится преодолевать целый зоопарк DPI,
|
|
|
|
|
которые еще и включаются в работу хаотичным образом или образом, зависящим от направления (IP сервера).
|
|
|
|
|
blockcheck не всегда может выдать вам в итогах оптимальную стратегию, которую надо просто переписать в настройки.
|
|
|
|
|
В некоторых случаях надо реально думать что происходит, анализируя результат на разных стратегиях.
|
|
|
|
|
Если вы применяете большой TTL, чтобы достать до магистрала, то не лишним будет добавить дополнительный ограничитель
|
|
|
|
|
--dpi-desync-fooling, чтобы не сломать сайты на более коротких дистанциях.
|
|
|
|
|
md5sig наиболее совместим, но работает только на linux серверах.
|
|
|
|
|
badseq может работать только на https и не работать на http.
|
|
|
|
|
Чтобы выяснить какие дополнительные ограничители работают, смотрите результат теста аналогичных стратегий без TTL
|
|
|
|
|
с каждым из этих ограничителей.
|
|
|
|
|
|
|
|
|
|
При использовании autottl следует протестировать как можно больше разных доменов. Эта техника
|
|
|
|
|
может на одних провайдерах работать стабильно, на других потребуется выяснить при каких параметрах
|
|
|
|
|
она стабильна, на третьих полный хаос, и проще отказаться.
|
|
|
|
|
|
2024-10-25 14:29:47 +03:00
|
|
|
|
Далее, имея понимание что работает на http, https, quic, нужно сконструировать параметры запуска tpws и/или nfqws
|
|
|
|
|
с использованием мультистратегии. Как работают мультистратегии описано в readme.txt.
|
|
|
|
|
|
|
|
|
|
Если кратко, то обычно параметры конструируются так :
|
2024-10-29 21:22:04 +03:00
|
|
|
|
"--filter-udp=443 'параметры для quic' <HOSTLIST_NOAUTO> --new
|
2024-10-25 14:29:47 +03:00
|
|
|
|
--filter-tcp=80-443 'обьединенные параметры для http и https' <HOSTLIST>"
|
|
|
|
|
|
|
|
|
|
Или так :
|
2024-10-29 21:22:04 +03:00
|
|
|
|
"--filter-udp=443 "параметры для quic" <HOSTLIST_NOAUTO> --new
|
2024-10-25 14:29:47 +03:00
|
|
|
|
--filter-tcp=80 'параметры для http' <HOSTLIST> --new
|
|
|
|
|
--filter-tcp=443 'параметры для https' <HOSTLIST>"
|
|
|
|
|
|
2024-10-29 21:22:04 +03:00
|
|
|
|
"<HOSTLIST>" и "<HOSTLIST_NOAUTO>" так и пишутся. Их не надо на что-то заменять. Это сделают скрипты запуска,
|
|
|
|
|
если вы выбрали режим фильтрации по хостлистам, и уберут в противном случае.
|
|
|
|
|
Если для какого-то протокола надо дурить все без стандартного хостлиста - просто уберите оттуда "<HOSTLIST>"
|
|
|
|
|
и "<HOSTLIST_NOAUTO>".
|
2024-10-25 14:29:47 +03:00
|
|
|
|
Можно писать свои параметры --hostlist и --hostlist-exclude для дополнительных хостлистов
|
|
|
|
|
или в профилях специализаций под конкретный ресурс. В последнем случае стандартный хостлист там не нужен.
|
|
|
|
|
Следует избегать указания собственных параметров --hostlist на листы из директории ipset.
|
2024-10-29 21:22:04 +03:00
|
|
|
|
Эта логика включена в "<HOSTLIST>" и "<HOSTLIST_NOAUTO>".
|
|
|
|
|
Отличие "<HOSTLIST_NOAUTO>" в том, что стандартный автолист по этому профилю используется как обычный,
|
|
|
|
|
то есть без автоматического добавления доменов. Однако, добавления в других профилях автоматически
|
|
|
|
|
отражаются во всех остальных.
|
2024-10-25 14:29:47 +03:00
|
|
|
|
|
|
|
|
|
Если стратегии отличаются по версии ip протокола, и вы не можете их обьединить, фильтр пишется так :
|
2024-10-29 21:22:04 +03:00
|
|
|
|
"--filter-l3=ipv4 --filter-udp=443 "параметры для quic ipv4" <HOSTLIST_NOAUTO> --new
|
2024-10-25 14:29:47 +03:00
|
|
|
|
--filter-l3=ipv4 --filter-tcp=80 'параметры для http ipv4' <HOSTLIST> --new
|
|
|
|
|
--filter-l3=ipv4 --filter-tcp=443 'параметры для https ipv4' <HOSTLIST> --new
|
2024-10-29 21:22:04 +03:00
|
|
|
|
--filter-l3=ipv6 --filter-udp=443 "параметры для quic ipv6" <HOSTLIST_NOAUTO> --new
|
2024-10-25 14:29:47 +03:00
|
|
|
|
--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.
|
|
|
|
|
|
2024-10-28 09:32:24 +03:00
|
|
|
|
Если используются методы нулевой фазы десинхронизации (--mss, --wssize, --dpi-desync=syndata) и режим фильтрации hostlist,
|
2024-10-25 14:29:47 +03:00
|
|
|
|
то все параметры, относящиеся к этим методам, следует помещать в отдельные профили мульистратегии, которые получат
|
|
|
|
|
управление до определения имени хоста. Необходимо понимать алгоритм работы мультистратегий.
|
|
|
|
|
Самым надежным вариантом будет дублирование этих параметров на 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 для одного протокола.
|
|
|
|
|
В текущем варианте скриптов запуска это делается максимально гибко и независимо друг от друга.
|
2024-10-28 09:32:24 +03:00
|
|
|
|
|
|
|
|
|
8) Запустите install_easy.sh.
|
2024-10-25 14:29:47 +03:00
|
|
|
|
Выберите nfqws и/или tpws, затем согласитесь на редактирование параметров.
|
|
|
|
|
Откроется редактор, куда впишите созданную на предыдущем этапе стратегию.
|
2024-10-28 09:32:24 +03:00
|
|
|
|
|
|
|
|
|
9) На все остальные вопросы install_easy.sh отвечайте согласно выводимой аннонтации.
|
|
|
|
|
|
|
|
|
|
10) Если ломаются отдельные незаблокированные ресурсы, следует вносить их в исключения, либо пользоваться ограничивающим
|
|
|
|
|
ipset или хост листом. Читайте основной талмуд readme.txt ради подробностей.
|
2024-10-25 14:29:47 +03:00
|
|
|
|
Но еще лучше будет подбирать такие стратегии, которые ломают минимум.
|
|
|
|
|
Есть стратегии довольно безобидные, а есть сильно ломающие, которые подходят только для точечного пробития отдельных ресурсов,
|
|
|
|
|
когда ничего лучше нет. Хорошая стратегия может сильно ломать из-за плохо подобранных ограничителей для фейков - ttl, fooling.
|
2024-10-28 09:32:24 +03:00
|
|
|
|
|
|
|
|
|
Это минимальная инструкция, чтобы соориентироваться с чего начать. Однако, это - не панацея.
|
|
|
|
|
В некоторых случаях вы не обойдетесь без знаний и основного "талмуда".
|
|
|
|
|
Подробности и полное техническое описание расписаны в readme.txt
|