From 2c30f8e4c2fc3732d27fbcca6ea1f3927aaef0a1 Mon Sep 17 00:00:00 2001 From: bolvan Date: Fri, 9 Dec 2016 16:33:29 +0300 Subject: [PATCH] custom ISP placeholder --- init.d/debian7/zapret | 21 ++++++++++++++++ init.d/openwrt/firewall.user.custom | 3 +++ init.d/openwrt/zapret | 12 ++++++++- init.d/ubuntu12/zapret.conf | 39 ++++++++++++++++++++++++++--- readme.txt | 30 ++++++++++++++++++++-- 5 files changed, 98 insertions(+), 7 deletions(-) create mode 100644 init.d/openwrt/firewall.user.custom diff --git a/init.d/debian7/zapret b/init.d/debian7/zapret index a6a3e88..9db6a30 100644 --- a/init.d/debian7/zapret +++ b/init.d/debian7/zapret @@ -17,6 +17,10 @@ ISP=mns #ISP=domru #ISP=tiera +# If ISP is unlisted then uncomment "custom" +# Find out what works for your ISP and modify "# PLACEHOLDER" parts of this script +#ISP=custom + # CHOSE NETWORK INTERFACE BEHIND NAT SLAVE_ETH=eth0 @@ -90,6 +94,16 @@ case "$1" in DAEMON=$TPWS DAEMON_OPTS="--port=$TPPORT --split-http-req=host --user=$TPWS_USER --bind-addr=127.0.0.1" ;; + custom) + # PLACEHOLDER + echo !!! NEED ATTENTION !!! + echo Select daemon and options that work for you + echo \(optional\) Prepare environment for running daemon + echo Configure iptables for required actions + echo Study how other sections work + DAEMON=/bin/sleep + DAEMON_OPTS=20 + ;; esac echo -n "Starting $DESC: " @@ -125,6 +139,13 @@ case "$1" in iptables -t nat -D OUTPUT -p tcp --dport 80 -m owner ! --uid-owner $TPWS_USER -m set --match-set zapret dst -j DNAT --to 127.0.0.1:$TPPORT DAEMON=$TPWS ;; + custom) + # PLACEHOLDER + echo !!! NEED ATTENTION !!! + echo Clear firewall rules here. Remove iptables changes made previously. + echo Select which daemon to stop. + echo Study how other sections work + ;; esac echo -n "Stopping $DESC: " diff --git a/init.d/openwrt/firewall.user.custom b/init.d/openwrt/firewall.user.custom new file mode 100644 index 0000000..e4cee18 --- /dev/null +++ b/init.d/openwrt/firewall.user.custom @@ -0,0 +1,3 @@ +# put it to /etc/firewall.user + +# study how other firewall.user scripts work and put here rules that work for you diff --git a/init.d/openwrt/zapret b/init.d/openwrt/zapret index a3f16ae..7fbf752 100755 --- a/init.d/openwrt/zapret +++ b/init.d/openwrt/zapret @@ -7,7 +7,10 @@ ISP=beeline #ISP=domru #ISP=tiera -#ISP=none + +# If ISP is unlisted then uncomment "custom" +# Find out what works for your ISP and modify "# PLACEHOLDER" parts of this script +#ISP=custom USE_PROCD=1 # start betfore firewall - we need ipset populated @@ -65,6 +68,13 @@ get_daemon() { DAEMON_OPTS="--port=$TPPORT --split-http-req=host --bind-addr=127.0.0.1 --user=$TPWS_USER" DAEMON=$TPWS ;; + custom) + # PLACEHOLDER + echo !!! NEED ATTENTION !!! + echo Select which daemon and what options work for you + DAEMON_OPTS=20 + DAEMON=/bin/sleep + ;; esac } diff --git a/init.d/ubuntu12/zapret.conf b/init.d/ubuntu12/zapret.conf index 18b6e8b..121a461 100644 --- a/init.d/ubuntu12/zapret.conf +++ b/init.d/ubuntu12/zapret.conf @@ -6,12 +6,16 @@ stop on runlevel [!2345] # CHOOSE ISP HERE. UNCOMMENT ONLY ONE LINE. #env ISP=mns #env ISP=rt -#env ISP=beeline -env ISP=domru +env ISP=beeline +#env ISP=domru #env ISP=tiera +# If ISP is unlisted then uncomment "custom" +# Find out what works for your ISP and modify "# PLACEHOLDER" parts of this script +#env ISP=custom + # CHOSE NETWORK INTERFACE BEHIND NAT -env SLAVE_ETH=eth0 +env SLAVE_ETH=eth1 env QNUM=200 @@ -45,7 +49,11 @@ pre-start script iptables -t raw -I PREROUTING -p udp --sport 53 -m string --hex-string "|5cfff164|" --algo bm -j DROP --from 40 --to 300 iptables -t raw -C PREROUTING -p udp --sport 53 -m string --hex-string "|2a022698a00000000000000000000064|" --algo bm -j DROP --from 40 --to 300 || iptables -t raw -I PREROUTING -p udp --sport 53 -m string --hex-string "|2a022698a00000000000000000000064|" --algo bm -j DROP --from 40 --to 300 - ;; + iptables -t raw -C PREROUTING -p udp --sport 53 -m string --hex-string "|5cfff16e|" --algo bm -j DROP --from 40 --to 300 || + iptables -t raw -I PREROUTING -p udp --sport 53 -m string --hex-string "|5cfff16e|" --algo bm -j DROP --from 40 --to 300 + iptables -t raw -C PREROUTING -p udp --sport 53 -m string --hex-string "|2a022698a00000000000000000000110|" --algo bm -j DROP --from 40 --to 300 || + iptables -t raw -I PREROUTING -p udp --sport 53 -m string --hex-string "|2a022698a00000000000000000000110|" --algo bm -j DROP --from 40 --to 300 + ;; tiera) adduser --disabled-login --no-create-home --system --quiet $TPWS_USER sysctl -w net.ipv4.conf.$SLAVE_ETH.route_localnet=1 @@ -54,6 +62,13 @@ pre-start script iptables -t nat -C OUTPUT -p tcp --dport 80 -m owner ! --uid-owner $TPWS_USER -m set --match-set zapret dst -j DNAT --to 127.0.0.1:$TPPORT || iptables -t nat -I OUTPUT -p tcp --dport 80 -m owner ! --uid-owner $TPWS_USER -m set --match-set zapret dst -j DNAT --to 127.0.0.1:$TPPORT ;; + custom) + # PLACEHOLDER + echo !!! NEED ATTENTION !!! + echo \(optional\) Prepare environment for running daemon + echo Configure iptables for required actions + echo Study how other sections work + ;; esac end script @@ -79,6 +94,14 @@ script NFEXE=$TPWS NFARG="--port=$TPPORT --split-http-req=host --user=$TPWS_USER --bind-addr=127.0.0.1" ;; + custom) + # PLACEHOLDER + echo !!! NEED ATTENTION !!! + echo Select which daemon and what options work for you + echo Study how other sections work + NFEXE=/bin/sleep + NFARG=20 + ;; esac $NFEXE $NFARG [ -n "$NFEXE" ] && $NFEXE $NFARG @@ -98,11 +121,19 @@ pre-stop script iptables -t nat -D OUTPUT -p tcp --dport 80 -m owner ! --uid-owner $TPWS_USER -m set --match-set zapret dst -j DNAT --to 127.0.0.1:$TPPORT iptables -t raw -D PREROUTING -p udp --sport 53 -m string --hex-string "|5cfff164|" --algo bm -j DROP --from 40 --to 300 iptables -t raw -D PREROUTING -p udp --sport 53 -m string --hex-string "|2a022698a00000000000000000000064|" --algo bm -j DROP --from 40 --to 300 + iptables -t raw -D PREROUTING -p udp --sport 53 -m string --hex-string "|5cfff16e|" --algo bm -j DROP --from 40 --to 300 + iptables -t raw -D PREROUTING -p udp --sport 53 -m string --hex-string "|2a022698a00000000000000000000110|" --algo bm -j DROP --from 40 --to 300 ;; tiera) sysctl -w net.ipv4.conf.$SLAVE_ETH.route_localnet=0 iptables -t nat -D PREROUTING -p tcp --dport 80 -i $SLAVE_ETH -m set --match-set zapret dst -j DNAT --to 127.0.0.1:$TPPORT iptables -t nat -D OUTPUT -p tcp --dport 80 -m owner ! --uid-owner $TPWS_USER -m set --match-set zapret dst -j DNAT --to 127.0.0.1:$TPPORT ;; + custom) + # PLACEHOLDER + echo !!! NEED ATTENTION !!! + echo Clear firewall rules here. Remove iptables changes made previously. + echo Study how other sections work + ;; esac end script diff --git a/readme.txt b/readme.txt index 301df40..e54ca61 100644 --- a/readme.txt +++ b/readme.txt @@ -141,6 +141,25 @@ tkt : помогает разделение http запроса на сегме tiera : сама тиера до последнего ничего не банила. Похоже, что банит вышестоящий оператор, возможно telia. Требуется сплит http запросов в течение всей сессии. +Другие провайдеры +----------------- + +Первым делом необходимо выяснить не подменят ли ваш провайдер DNS. +Посмотрите во что ресолвятся заблокированные хосты у вашего провайдера и через какой-нибудь web net tools, которых можно нагуглить множество. Сравните. +Если ответы разные, то попробуйте заресолвить те же хосты с DNS сервера 8.8.8.8 через вашего провайдера. +Если ответ от 8.8.8.8 нормальный - поменяйте DNS. Если ответ ненормальный, значит провайдер перехватывает запросы на сторонние DNS. +Используйте dnscrypt. + +Далее необходимо выяснить какой метод обхода DPI работает на вашем провайдере. +В этом вам поможет скрипт https://github.com/ValdikSS/blockcheck. +Выберите какой демон вы будете использовать : nfqws или tpws. +Подготовьте вручную правила iptables для вашего случая, выполните их. +Запустите демон с нужными параметрами вручную. +Проверьте работает ли. +Когда вы найдете рабочий вариант, отредактируйте init скрипт для вашей системы. +Раскомментируйте ISP=custom. Добавьте ваш код в места "# PLACEHOLDER" по аналогии с секциями для других провайдеров для найденной рабочей комбинации. +Для openwrt поместите в /etc/firewall.user свой код по аналогии с готовыми скриптами. + Способы получения списка заблокированных IP ------------------------------------------- @@ -217,15 +236,22 @@ ubuntu 12,14 Имеется готовый конфиг для upstart : zapret.conf. Его нужно скопировать в /etc/init и настроить по аналогии с debian. Запуск службы : "start zapret" Останов службы : "stop zapret" +Просмотр сообщений : cat /var/log/upstart/zapret.log Ubuntu 12 так же, как и debian 7, оснащено ядром 3.2. См замечание в разделе "debian 7". ubuntu 16,debian 8 ------------------ Процесс аналогичен debian 7, однако требуется зарегистрировать init скрипты в systemd после их копирования в /etc/init.d. - install : /usr/lib/lsb/install_initd zapret - remove : /usr/lib/lsb/remove_initd zapret +По умолчанию lsb-core может быть не установлен. +apt-get update +apt-get --no-install-recommends install lsb-core +install : /usr/lib/lsb/install_initd zapret +remove : /usr/lib/lsb/remove_initd zapret +start : sytemctl start zapret +stop : systemctl stop zapret +status, output messages : systemctl status zapret Другие linux системы --------------------