|
|
@ -74,7 +74,7 @@ zapret является свободным и open source. |
|
|
|
обойти блокировки или замедление сайтов HTTP(S), сигнатурный анализ TCP и UDP протоколов, например, с целью блокировки |
|
|
|
VPN. |
|
|
|
|
|
|
|
Проект нацелен прежде всего на маломощные embedded устройства - роутеры, работающие под OpenWRT. Поддерживаются |
|
|
|
Проект нацелен прежде всего на маломощные embedded устройства - роутеры, работающие под OpenWrt. Поддерживаются |
|
|
|
традиционные Linux-системы, FreeBSD, OpenBSD, частично macOS. В некоторых случаях возможна самостоятельная прикрутка |
|
|
|
решения к различным прошивкам. |
|
|
|
|
|
|
@ -263,7 +263,7 @@ dvtws, собираемый из тех же исходников (см. [док |
|
|
|
`net.netfilter.nf_conntrack_checksum=1` заставляет conntrack проверять tcp и udp чексуммы входящих пакетов и |
|
|
|
выставлять state INVALID для пакетов с инвалидной суммой. Обычно в правилах iptables вставляется правило для дропа |
|
|
|
пакетов с состоянием INVALID в цепочке FORWARD. Совместное сочетание этих факторов приводит к непрохождению badsum |
|
|
|
через такой роутер. В openwrt из коробки `net.netfilter.nf_conntrack_checksum=0`, в других роутерах часто нет, и не |
|
|
|
через такой роутер. В OpenWrt из коробки `net.netfilter.nf_conntrack_checksum=0`, в других роутерах часто нет, и не |
|
|
|
всегда это можно изменить. Чтобы nfqws мог работать через роутер, нужно на нем выставить указанное значение sysctl в 0. |
|
|
|
nfqws на самом роутере будет работать и без этой настройки, потому что чексумма локально созданных пакетов не |
|
|
|
проверяется никогда. Если роутер за другим NAT, например провайдерским, и он не пропускает invalid packets вы ничего |
|
|
@ -566,7 +566,7 @@ ipv6 : Нет способа для приложения гарантирова |
|
|
|
Чтобы не загромождать описание, смотрите пример решения этой проблемы в `blockcheck.sh`. |
|
|
|
|
|
|
|
Иногда требуется подгружать модуль `ip6table_raw` с параметром `raw_before_defrag=1`. |
|
|
|
В openwrt параметры модулей указываются через пробел после их названий в файлах `/etc/modules.d`. |
|
|
|
В OpenWrt параметры модулей указываются через пробел после их названий в файлах `/etc/modules.d`. |
|
|
|
В традиционных системах посмотрите используется ли `iptables-legacy` или `iptables-nft`. Если legacy, то нужно создать файл |
|
|
|
`/etc/modprobe.d/ip6table_raw.conf` с содержимым : |
|
|
|
``` |
|
|
@ -740,10 +740,10 @@ iptables могут не работать. При включенном offloadin |
|
|
|
DNAT/REDIRECT (tpws). Эти соединения исключаются из offloading. Однако, остальные соединения идут через SFO, потому |
|
|
|
NFQUEUE будет срабатывать только до помещения соединения в flowtable. Практически это означает, что почти весь функционал nfqws работать не будет. |
|
|
|
Offload включается через специальный target в iptables `FLOWOFFLOAD`. Не обязательно пропускать весь трафик через offload. Можно исключить из |
|
|
|
offload соединения, которые должны попасть на tpws или nfqws. openwrt не предусматривает выборочного управления offload. |
|
|
|
Поэтому скрипты zapret поддерживают свою систему выборочного управления offload в openwrt. |
|
|
|
offload соединения, которые должны попасть на tpws или nfqws. OpenWrt не предусматривает выборочного управления offload. |
|
|
|
Поэтому скрипты zapret поддерживают свою систему выборочного управления offload в OpenWrt. |
|
|
|
|
|
|
|
iptables target `FLOWOFFLOAD` - это проприетарное изобретение openwrt. |
|
|
|
iptables target `FLOWOFFLOAD` - это проприетарное изобретение OpenWrt. |
|
|
|
Управление offload в nftables реализовано в базовом ядре linux без патчей. |
|
|
|
|
|
|
|
|
|
|
@ -1303,7 +1303,8 @@ ipset/get_refilter_domains.sh |
|
|
|
``` |
|
|
|
Он кладется в `ipset/zapret-hosts.txt.gz`. |
|
|
|
|
|
|
|
При изменении времени модификации файлов списки перечитываются автоматически. |
|
|
|
При изменении времени модификации или размера файлов списки перечитываются автоматически. |
|
|
|
После неатомарных операций изменения можно послать tpws/nfqws сигнал HUP для принудительной перечитки всех листов. |
|
|
|
|
|
|
|
При фильтрации по именам доменов демон должен запускаться без фильтрации по ipset. |
|
|
|
tpws и nfqws решают нужно ли применять дурение в зависимости от хоста, полученного из протокола прикладного уровня (http, tls, quic). |
|
|
@ -1457,7 +1458,7 @@ UNBLOCKED_DOM - незаблокированный домен, который и |
|
|
|
`SECURE_DNS=1 SKIP_TPWS=1 CURL_MAX_TIME=1 CURL=/tmp/curl ./blockcheck.sh` |
|
|
|
|
|
|
|
**СКАН ПОРТОВ**\ |
|
|
|
Если в системе присутствует совместимый `netcat` (ncat от nmap или openbsd ncat. в openwrt по умолчанию нет), |
|
|
|
Если в системе присутствует совместимый `netcat` (ncat от nmap или openbsd ncat. в OpenWrt по умолчанию нет), |
|
|
|
то выполняется сканирование портов http или https всех IP адресов домена. |
|
|
|
Если ни один IP не отвечает, то результат очевиден. Можно останавливать сканирование. |
|
|
|
Автоматически оно не остановится, потому что netcat-ы недостаточно подробно информируют о причинах ошибки. |
|
|
@ -1564,7 +1565,7 @@ curl: (28) Connection timed out after 2002 milliseconds |
|
|
|
|
|
|
|
На linux системах можно выбрать использовать `iptables` или `nftables`. |
|
|
|
По умолчанию на традиционных linux выбирается `nftables`, если установлен nft. |
|
|
|
На openwrt по умолчанию выбирается `nftables` на новых версиях с firewall4. |
|
|
|
На OpenWrt по умолчанию выбирается `nftables` на новых версиях с firewall4. |
|
|
|
|
|
|
|
`FWTYPE=iptables` |
|
|
|
|
|
|
@ -1775,11 +1776,11 @@ LISTS_RELOAD="pfctl -f /etc/pf.conf" |
|
|
|
LISTS_RELOAD=- |
|
|
|
``` |
|
|
|
|
|
|
|
В openwrt существует сеть по умолчанию 'lan'. Только трафик с этой сети будет перенаправлен на tpws. |
|
|
|
В OpenWrt существует сеть по умолчанию 'lan'. Только трафик с этой сети будет перенаправлен на tpws. |
|
|
|
Но возможно задать другие сети или список сетей:\ |
|
|
|
`OPENWRT_LAN="lan lan2 lan3"` |
|
|
|
|
|
|
|
В openwrt в качестве wan берутся интерфейсы, имеющие default route. Отдельно для ipv4 и ipv6. |
|
|
|
В OpenWrt в качестве wan берутся интерфейсы, имеющие default route. Отдельно для ipv4 и ipv6. |
|
|
|
Это можно переопределить: |
|
|
|
``` |
|
|
|
OPENWRT_WAN4="wan4 vpn" |
|
|
@ -1789,7 +1790,7 @@ OPENWRT_WAN6="wan6 vpn6" |
|
|
|
Параметр INIT_APPLY_FW=1 разрешает init скрипту самостоятельно применять правила iptables.\ |
|
|
|
При иных значениях или если параметр закомментирован, правила применены не будут.\ |
|
|
|
Это полезно, если у вас есть система управления фаерволом, в настройки которой и следует прикрутить правила.\ |
|
|
|
На openwrt неприменимо при использовании firewall3+iptables. |
|
|
|
На OpenWrt неприменимо при использовании firewall3+iptables. |
|
|
|
|
|
|
|
***Следующие настройки не актуальны для openwrt:*** |
|
|
|
|
|
|
@ -1843,7 +1844,7 @@ _Для `nftables` предусмотрено несколько дополни |
|
|
|
|
|
|
|
Обновить set-ы интерфейсов, относящихся к lan, wan и wan6. |
|
|
|
Для традиционных linux список интерфейсов берется из переменных конфига IFACE_LAN, IFACE_WAN. |
|
|
|
Для openwrt определяется автоматически. Множество lanif может быть расширено параметром OPENWRT_LAN. |
|
|
|
Для OpenWrt определяется автоматически. Множество lanif может быть расширено параметром OPENWRT_LAN. |
|
|
|
Все интерфейсы lan и wan так же добавляются в ingress hook от flow table.\ |
|
|
|
`/opt/zapret/init.d/sysv/zapret reload_ifsets` |
|
|
|
|
|
|
@ -1895,7 +1896,7 @@ zapret_custom_firewall_v6 |
|
|
|
|
|
|
|
zapret_custom_daemons поднимает демоны **nfqws**/**tpws** в нужном вам количестве и с нужными вам параметрами. |
|
|
|
В первом параметре передается код операции: 1 = запуск, 0 = останов. |
|
|
|
Схема запуска демонов в openwrt отличается - используется procd. |
|
|
|
Схема запуска демонов в OpenWrt отличается - используется procd. |
|
|
|
Поэтому логика останова отсутствует за ненадобностью, останов никогда не вызывается. |
|
|
|
|
|
|
|
zapret_custom_firewall поднимает и убирает правила `iptables`. |
|
|
@ -1937,7 +1938,7 @@ zapret_custom_firewall_nft поднимает правила nftables. |
|
|
|
## Простая установка |
|
|
|
|
|
|
|
`install_easy.sh` автоматизирует ручные варианты процедур установки. |
|
|
|
Он поддерживает OpenWRT, linux системы на базе systemd или openrc и MacOS. |
|
|
|
Он поддерживает OpenWrt, linux системы на базе systemd или openrc и MacOS. |
|
|
|
|
|
|
|
Для более гибкой настройки перед запуском инсталлятора следует выполнить раздел "Выбор параметров". |
|
|
|
|
|
|
@ -1954,7 +1955,7 @@ zapret_custom_firewall_nft поднимает правила nftables. |
|
|
|
|
|
|
|
`install_easy.sh make` |
|
|
|
|
|
|
|
Под openwrt все уже сразу готово для использования системы в качестве роутера. |
|
|
|
Под OpenWrt все уже сразу готово для использования системы в качестве роутера. |
|
|
|
Имена интерфейсов WAN и LAN известны из настроек системы. |
|
|
|
Под другими системами роутер вы настраиваете самостоятельно. Инсталлятор в это не вмешивается. |
|
|
|
инсталлятор в зависимости от выбранного режима может спросить LAN и WAN интерфейсы. |
|
|
@ -2087,7 +2088,7 @@ chcon u:object_r:system_file:s0 /data/local/tmp/zapret/tpws |
|
|
|
Работа blockcheck в android shell не поддерживается, но имея рута можно развернуть rootfs какого-нибудь дистрибутива linux. |
|
|
|
Это лучше всего делать с компа через adb shell. |
|
|
|
Если компа нет, то развертка chroot - единственный вариант, хотя и неудобный. |
|
|
|
Подойдет что-то легковесное, например, alpine или даже openwrt. |
|
|
|
Подойдет что-то легковесное, например, alpine или даже OpenWrt. |
|
|
|
Если это не эмулятор android, то универсальная архитектура - arm (любой вариант). |
|
|
|
Если вы точно знаете, что ОС у вас 64-разрядная, то лучше вместо arm - aarch64. |
|
|
|
Выяснить архитектуру можно командой `uname -a`. |
|
|
@ -2231,10 +2232,10 @@ entware содержит репозиторий user-mode компонент, к |
|
|
|
|
|
|
|
_Подробное описание настроек для других прошивок выходит за рамки данного проекта._ |
|
|
|
|
|
|
|
Openwrt является одной из немногих относительно полноценных linux систем для embedded devices. |
|
|
|
OpenWrt является одной из немногих относительно полноценных linux систем для embedded devices. |
|
|
|
Она характеризуется следующими вещами, которые и послужили основой выбора именно этой прошивк: |
|
|
|
* полный root доступ к девайсу через shell. на заводских прошивках чаще всего отсутствует, на многих альтернативных есть |
|
|
|
* корень r/w. это практически уникальная особенность openwrt. заводские и большинство альтернативных прошивок |
|
|
|
* корень r/w. это практически уникальная особенность OpenWrt. заводские и большинство альтернативных прошивок |
|
|
|
построены на базе squashfs root (r/o), а конфигурация хранится в специально отформатированной области |
|
|
|
встроенной памяти, называемой nvram. не имеющие r/w корня системы сильно кастрированы. они не имеют |
|
|
|
возможности доустановки ПО из репозитория без специальных вывертов и заточены в основном |
|
|
@ -2255,7 +2256,7 @@ Openwrt является одной из немногих относительн |
|
|
|
|
|
|
|
Если не работает автономный обход, приходится перенаправлять трафик через сторонний хост. |
|
|
|
Предлагается использовать прозрачный редирект через socks5 посредством `iptables+redsocks`, либо `iptables+iproute+vpn`. |
|
|
|
Настройка варианта с redsocks на openwrt описана в [redsocks.txt](./redsocks.txt). |
|
|
|
Настройка варианта с redsocks на OpenWrt описана в [redsocks.txt](./redsocks.txt). |
|
|
|
Настройка варианта с `iproute+wireguard` - в [wireguard_iproute_openwrt.txt](./wireguard_iproute_openwrt.txt). |
|
|
|
|
|
|
|
|
|
|
|