From db5b2c2d397ee0c733f28639006afbf5ad866995 Mon Sep 17 00:00:00 2001 From: bolvan Date: Tue, 7 May 2019 11:30:15 +0300 Subject: [PATCH] openwrt : simplify iptables in firewall include scripts --- config | 2 +- docs/https.txt | 66 ++++++++++++------- docs/wireguard/wireguard_iproute_openwrt.txt | 56 +++++++--------- init.d/openwrt/firewall.zapret.nfqws_all | 10 +-- .../openwrt/firewall.zapret.nfqws_all_https | 10 +-- init.d/openwrt/firewall.zapret.nfqws_ipset | 10 +-- .../openwrt/firewall.zapret.nfqws_ipset_https | 10 +-- init.d/openwrt/firewall.zapret.tpws_all | 14 ++-- init.d/openwrt/firewall.zapret.tpws_all_https | 20 +++--- init.d/openwrt/firewall.zapret.tpws_ipset | 14 ++-- .../openwrt/firewall.zapret.tpws_ipset_https | 20 +++--- install_easy.sh | 3 +- ipset/zapret-hosts.txt | 0 13 files changed, 125 insertions(+), 110 deletions(-) create mode 100644 ipset/zapret-hosts.txt diff --git a/config b/config index 9d6e7bf..3f9d577 100644 --- a/config +++ b/config @@ -22,6 +22,6 @@ TPWS_OPT_HTTPS="--split-pos=3" # select which init script will be used to get ip or host list -# possible value : get_user.sh get_antizapret.sh get_combined.sh get_reestr.sh get_hostlist.sh +# possible values : get_user.sh get_antizapret.sh get_combined.sh get_reestr.sh get_hostlist.sh # comment if not required GETLIST="get_antizapret.sh" diff --git a/docs/https.txt b/docs/https.txt index b3b70f0..bff1e2a 100644 --- a/docs/https.txt +++ b/docs/https.txt @@ -7,7 +7,7 @@ Tor поддерживает "из коробки" режим transparent proxy. 2) Сделать так, чтобы все время при загрузке системы на некотором порту возникал socks. 3) Установить transparent соксификатор. Redsocks прекрасно подошел на эту роль. 4) Завернуть через iptables трафик с порта назначения 443 и на ip адреса из ipset 'zapret' на соксификатор -Буду рассматривать систему на базе openwrt dedicated driver, где уже установлена система обхода dpi "zapret". +Буду рассматривать систему на базе openwrt, где уже установлена система обхода dpi "zapret". По крайней мере нужно иметь заполненный ipset 'zapret', устанавливать tpws или nfqws не обязательно. Более того, если они на вашей системе не срабатывают, то можно соксифицировать не только https, но и http. @@ -18,14 +18,15 @@ Tor поддерживает "из коробки" режим transparent proxy. После установки пакетов расслабим неоправданно жестокие права : chmod 755 /etc/ssh. Следует создать пользователя, под которым будем крутить ssh client. Допустим, это будет 'proxy'. Сначала установить пакет shadow-useradd. -Код: +------------------ useradd -d /home/proxy proxy mkdir -p /home/proxy chown proxy:proxy /home/proxy +------------------ Openssh ловит разные глюки, если у него нет доступа к /dev/tty. Добавим в /etc/rc.local строчку : "chmod 666 /dev/tty" Сгенерируем для него ключ RSA для доступа к ssh серверу. -Код: +------------------ su proxy cd mkdir -m 700 .ssh @@ -33,6 +34,7 @@ cd .ssh ssh-keygen ls exit +------------------ Должны получиться файлы id_rsa и id_rsa.pub. Строчку из id_rsa.pub следует добавить на ssh сервер в файл $HOME/.ssh/authorized_keys. Более подробно о доступе к ssh через авторизацию по ключам : https://beget.com/ru/articles/ssh_by_key @@ -41,10 +43,8 @@ exit Сделайте это под пользователем "proxy", поскольку при первом подключении ssh спросит о правильности hostkey. Соединение может отвалиться в любой момент, поэтому нужно зациклить запуск ssh. Для этого лучший вариант - использовать procd - упрощенная замена systemd на openwrt версий BB и выше. -/etc/init.d/socks_vps : -Код: +--- /etc/init.d/socks_vps --- #!/bin/sh /etc/rc.common -# Copyright (C) 2006-2011 OpenWrt.org START=50 STOP=50 USE_PROCD=1 @@ -57,6 +57,7 @@ start_service() { procd_set_param command $COMMAND procd_close_instance } +----------------------------- Этому файлу нужно дать права : chmod +x /etc/init.d/socks_vps Запуск : /etc/init.d/socks_vps start Останов : /etc/init.d/socks_vps stop @@ -77,24 +78,34 @@ start_service() { * Завертывание соединений через iptables -/etc/firewall.user -Код: +--- /etc/firewall.user ----- SOXIFIER_PORT=1099 + +ipt() +{ + iptables -C $@ 2>/dev/null || iptables -I $@ +} + . /lib/functions/network.sh network_find_wan wan_iface + for ext_iface in $wan_iface; do network_get_device ext_device $ext_iface - iptables -t nat -C OUTPUT -p tcp --dport 443 -o $ext_device -m set --match-set zapret dst -j REDIRECT --to-port $SOXIFIER_PORT || - iptables -t nat -I OUTPUT -p tcp --dport 443 -o $ext_device -m set --match-set zapret dst -j REDIRECT --to-port $SOXIFIER_PORT + ipt OUTPUT -t nat -o $ext_device -p tcp --dport 443 -m set --match-set zapret dst -j REDIRECT --to-port $SOXIFIER_PORT done -sysctl -w net.ipv4.conf.br-lan.route_localnet=1 -iptables -t nat -C prerouting_lan_rule -p tcp --dport 443 -m set --match-set zapret dst -j DNAT --to 127.0.0.1:$SOXIFIER_PORT || -iptables -t nat -I prerouting_lan_rule -p tcp --dport 443 -m set --match-set zapret dst -j DNAT --to 127.0.0.1:$SOXIFIER_PORT -Внести параметр "reload" а /etc/config/firewall в указанное место : -Код: + +network_get_device DEVICE lan +sysctl -w net.ipv4.conf.$DEVICE.route_localnet=1 +ipt prerouting_lan_rule -t nat -p tcp --dport 443 -m set --match-set zapret dst -j DNAT --to 127.0.0.1:$SOXIFIER_PORT +---------------------------- + +Внести параметр "reload" в указанное место : +--- /etc/config/firewall --- config include option path '/etc/firewall.user' option reload '1' +---------------------------- + Перезапуск : /etc/init.d/firewall restart Все, теперь можно проверять : /etc/init.d/redsocks stop @@ -108,8 +119,8 @@ curl https://btc-e.com * Автозапуск redsocks Я сделал для себя небольшой скриптик, вешающийся на события поднятия и опускания интерфейсов. -/etc/hotplug.d/iface/99-exec-on-updown -Код: + +--- /etc/hotplug.d/iface/99-exec-on-updown --- #!/bin/sh if [ "$ACTION" = ifup ]; then cmd=$(uci get network.$INTERFACE.exec_on_up) @@ -119,13 +130,16 @@ if [ "$ACTION" = ifdown ]; then cmd=$(uci get network.$INTERFACE.exec_on_down) [ -n "$cmd" ] && $cmd fi -Теперь можно в описания интерфейсов в /etc/config/nework внести в соответствующий раздел : -Код: +---------------------------------------------- + +Теперь можно в описания интерфейсов внести в соответствующий раздел : +--- /etc/config/nework --- config interface 'wan' ........ option exec_on_up '/etc/init.d/redsocks start' -Теперь reboot. Заходим снова, смотрим, что есть redsocks, есть ssh, опять проверяем curl https://btc-e.com. -Пробуем зайти на https://btc-e.com с компа внутри локалки. +-------------------------- +reboot. Заходим снова, смотрим, что есть redsocks, есть ssh, опять проверяем curl -4 https://rutracker.org. +Пробуем зайти на https://rutracker.org с компа внутри локалки. * Если у вас нет своего сервера @@ -137,16 +151,20 @@ config interface 'wan' * Как изменится вышеописанная процедура Убираем все, что связано с ssh. Это нам не потребуется. -В /etc/redsocks.conf меняем : -Код: + +В конфиге redsocks меняем : +--- /etc/redsocks.conf ---- ip = 127.0.0.1; port = 1098; type = socks5; +--------------------------- на : -Код: +--- /etc/redsocks.conf ---- ip = proxy.antizapret.prostovpn.org; port = 3128; type = http-connect; +--------------------------- + В отличие от SSH, TLS хэндшейк теперь пойдет в открытую, то есть DPI его могут высечь из proxy протокола и проверить поле SNI (Server Name Indication). Так же могут поступить чуть проще : анализировать IP назначения в методе "CONNECT". Однако, практически это вряд ли будут делать. Если и будут, то немногие. diff --git a/docs/wireguard/wireguard_iproute_openwrt.txt b/docs/wireguard/wireguard_iproute_openwrt.txt index 64d2f48..d6ac55b 100644 --- a/docs/wireguard/wireguard_iproute_openwrt.txt +++ b/docs/wireguard/wireguard_iproute_openwrt.txt @@ -233,24 +233,23 @@ OUTPUT относится к исходящим с роутера пакетам Если с самого роутера ничего заруливать не надо, можно опустить все до команд с PREROUTING. --/etc/firewall.user---------------------------- -. /lib/functions/network.sh +ipt() +{ + iptables -C $@ 2>/dev/null || iptables -I $@ +} +. /lib/functions/network.sh network_find_wan wan_iface for ext_iface in $wan_iface; do - network_get_device DEVICE $ext_iface - - iptables -t mangle -C OUTPUT -p tcp --dport 443 -o $DEVICE -m set --match-set zapret dst -j MARK --set-mark 0x800/0x800 || - iptables -t mangle -I OUTPUT -p tcp --dport 443 -o $DEVICE -m set --match-set zapret dst -j MARK --set-mark 0x800/0x800 - iptables -t mangle -C OUTPUT -o $DEVICE -m set --match-set ipban dst -j MARK --set-mark 0x800/0x800 || - iptables -t mangle -I OUTPUT -o $DEVICE -m set --match-set ipban dst -j MARK --set-mark 0x800/0x800 + network_get_device DEVICE $ext_iface + + ipt OUTPUT -t mangle -o $DEVICE -p tcp --dport 443 -m set --match-set zapret dst -j MARK --set-mark 0x800/0x800 + ipt OUTPUT -t mangle -o $DEVICE -m set --match-set ipban dst -j MARK --set-mark 0x800/0x800 done -iptables -t mangle -C PREROUTING -p tcp --dport 443 -m set --match-set zapret dst -j MARK --set-mark 0x800/0x800 || - iptables -t mangle -I PREROUTING -p tcp --dport 443 -m set --match-set zapret dst -j MARK --set-mark 0x800/0x800 -iptables -t mangle -C PREROUTING -m set --match-set ipban dst -j MARK --set-mark 0x800/0x800 || - iptables -t mangle -I PREROUTING -m set --match-set ipban dst -j MARK --set-mark 0x800/0x800 - +ipt PREROUTING -t mangle -p tcp --dport 443 -m set --match-set zapret dst -j MARK --set-mark 0x800/0x800 +ipt PREROUTING -t mangle -m set --match-set ipban dst -j MARK --set-mark 0x800/0x800 ------------------------------------------------ # fw3 restart @@ -305,32 +304,27 @@ config rule Если вам не актуальны исходящие с самого роутера, то можно ничего не менять. --/etc/firewall.user---------------------------- -. /lib/functions/network.sh +ipt() +{ + iptables -C $@ 2>/dev/null || iptables -I $@ +} +. /lib/functions/network.sh network_find_wan wan_iface for ext_iface in $wan_iface; do - network_get_device DEVICE $ext_iface - - iptables -t mangle -C OUTPUT -p tcp --dport 443 -o $DEVICE -m set --match-set zapret dst -j MARK --set-mark 0x800/0x800 || - iptables -t mangle -I OUTPUT -p tcp --dport 443 -o $DEVICE -m set --match-set zapret dst -j MARK --set-mark 0x800/0x800 - iptables -t mangle -C OUTPUT -o $DEVICE -m set --match-set ipban dst -j MARK --set-mark 0x800/0x800 || - iptables -t mangle -I OUTPUT -o $DEVICE -m set --match-set ipban dst -j MARK --set-mark 0x800/0x800 - - iptables -t mangle -C OUTPUT -o $DEVICE -j MARK --set-mark 0x1000/0x1000 || - iptables -t mangle -I OUTPUT -o $DEVICE -j MARK --set-mark 0x1000/0x1000 - + network_get_device DEVICE $ext_iface + + ipt OUTPUT -t mangle -o $DEVICE -p tcp --dport 443 -m set --match-set zapret dst -j MARK --set-mark 0x800/0x800 + ipt OUTPUT -t mangle -o $DEVICE -m set --match-set ipban dst -j MARK --set-mark 0x800/0x800 + ipt OUTPUT -t mangle -o $DEVICE -j MARK --set-mark 0x1000/0x1000 done -# do masquerade for OUTPUT to ensure correct outgoing address -iptables -t nat -C postrouting_tunvps_rule -m mark --mark 0x1000/0x1000 -j MASQUERADE || - iptables -t nat -A postrouting_tunvps_rule -m mark --mark 0x1000/0x1000 -j MASQUERADE +ipt PREROUTING -t mangle -p tcp --dport 443 -m set --match-set zapret dst -j MARK --set-mark 0x800/0x800 +ipt PREROUTING -t mangle -m set --match-set ipban dst -j MARK --set-mark 0x800/0x800 -iptables -t mangle -C PREROUTING -p tcp --dport 443 -m set --match-set zapret dst -j MARK --set-mark 0x800/0x800 || - iptables -t mangle -I PREROUTING -p tcp --dport 443 -m set --match-set zapret dst -j MARK --set-mark 0x800/0x800 -iptables -t mangle -C PREROUTING -m set --match-set ipban dst -j MARK --set-mark 0x800/0x800 || - iptables -t mangle -I PREROUTING -m set --match-set ipban dst -j MARK --set-mark 0x800/0x800 - +# do masquerade for OUTPUT to ensure correct outgoing address +ipt postrouting_tunvps_rule -t nat -m mark --mark 0x1000/0x1000 -j MASQUERADE ------------------------------------------------ diff --git a/init.d/openwrt/firewall.zapret.nfqws_all b/init.d/openwrt/firewall.zapret.nfqws_all index 89efba4..fb6b9e1 100644 --- a/init.d/openwrt/firewall.zapret.nfqws_all +++ b/init.d/openwrt/firewall.zapret.nfqws_all @@ -2,8 +2,10 @@ QNUM=200 IPT_FILTER_PRE="-p tcp --sport 80" IPT_FILTER_POST="-p tcp --dport 80" -iptables -t raw -C PREROUTING $IPT_FILTER_PRE -j NFQUEUE --queue-num $QNUM --queue-bypass || - iptables -t raw -I PREROUTING $IPT_FILTER_PRE -j NFQUEUE --queue-num $QNUM --queue-bypass +ipt() +{ + iptables -C $@ 2>/dev/null || iptables -I $@ +} -iptables -t mangle -C POSTROUTING $IPT_FILTER_POST -j NFQUEUE --queue-num $QNUM --queue-bypass || - iptables -t mangle -I POSTROUTING $IPT_FILTER_POST -j NFQUEUE --queue-num $QNUM --queue-bypass +ipt PREROUTING -t raw $IPT_FILTER_PRE -j NFQUEUE --queue-num $QNUM --queue-bypass +ipt POSTROUTING -t mangle $IPT_FILTER_POST -j NFQUEUE --queue-num $QNUM --queue-bypass diff --git a/init.d/openwrt/firewall.zapret.nfqws_all_https b/init.d/openwrt/firewall.zapret.nfqws_all_https index 74e7dd7..dde6af5 100644 --- a/init.d/openwrt/firewall.zapret.nfqws_all_https +++ b/init.d/openwrt/firewall.zapret.nfqws_all_https @@ -2,8 +2,10 @@ QNUM=200 IPT_FILTER_PRE="-p tcp -m multiport --sports 80,443" IPT_FILTER_POST="-p tcp --dport 80" -iptables -t raw -C PREROUTING $IPT_FILTER_PRE -j NFQUEUE --queue-num $QNUM --queue-bypass || - iptables -t raw -I PREROUTING $IPT_FILTER_PRE -j NFQUEUE --queue-num $QNUM --queue-bypass +ipt() +{ + iptables -C $@ 2>/dev/null || iptables -I $@ +} -iptables -t mangle -C POSTROUTING $IPT_FILTER_POST -j NFQUEUE --queue-num $QNUM --queue-bypass || - iptables -t mangle -I POSTROUTING $IPT_FILTER_POST -j NFQUEUE --queue-num $QNUM --queue-bypass +ipt PREROUTING -t raw $IPT_FILTER_PRE -j NFQUEUE --queue-num $QNUM --queue-bypass +ipt POSTROUTING -t mangle $IPT_FILTER_POST -j NFQUEUE --queue-num $QNUM --queue-bypass diff --git a/init.d/openwrt/firewall.zapret.nfqws_ipset b/init.d/openwrt/firewall.zapret.nfqws_ipset index 9236028..6490554 100644 --- a/init.d/openwrt/firewall.zapret.nfqws_ipset +++ b/init.d/openwrt/firewall.zapret.nfqws_ipset @@ -2,8 +2,10 @@ QNUM=200 IPT_FILTER_PRE="-p tcp --sport 80 -m set --match-set zapret src" IPT_FILTER_POST="-p tcp --dport 80 -m set --match-set zapret dst" -iptables -t raw -C PREROUTING $IPT_FILTER_PRE -j NFQUEUE --queue-num $QNUM --queue-bypass || - iptables -t raw -I PREROUTING $IPT_FILTER_PRE -j NFQUEUE --queue-num $QNUM --queue-bypass +ipt() +{ + iptables -C $@ 2>/dev/null || iptables -I $@ +} -iptables -t mangle -C POSTROUTING $IPT_FILTER_POST -j NFQUEUE --queue-num $QNUM --queue-bypass || - iptables -t mangle -I POSTROUTING $IPT_FILTER_POST -j NFQUEUE --queue-num $QNUM --queue-bypass +ipt PREROUTING -t raw $IPT_FILTER_PRE -j NFQUEUE --queue-num $QNUM --queue-bypass +ipt POSTROUTING -t mangle $IPT_FILTER_POST -j NFQUEUE --queue-num $QNUM --queue-bypass diff --git a/init.d/openwrt/firewall.zapret.nfqws_ipset_https b/init.d/openwrt/firewall.zapret.nfqws_ipset_https index ea33ab7..32aac5c 100644 --- a/init.d/openwrt/firewall.zapret.nfqws_ipset_https +++ b/init.d/openwrt/firewall.zapret.nfqws_ipset_https @@ -2,8 +2,10 @@ QNUM=200 IPT_FILTER_PRE="-p tcp -m multiport --sports 80,443 -m set --match-set zapret src" IPT_FILTER_POST="-p tcp --dport 80 -m set --match-set zapret dst" -iptables -t raw -C PREROUTING $IPT_FILTER_PRE -j NFQUEUE --queue-num $QNUM --queue-bypass || - iptables -t raw -I PREROUTING $IPT_FILTER_PRE -j NFQUEUE --queue-num $QNUM --queue-bypass +ipt() +{ + iptables -C $@ 2>/dev/null || iptables -I $@ +} -iptables -t mangle -C POSTROUTING $IPT_FILTER_POST -j NFQUEUE --queue-num $QNUM --queue-bypass || - iptables -t mangle -I POSTROUTING $IPT_FILTER_POST -j NFQUEUE --queue-num $QNUM --queue-bypass +ipt PREROUTING -t raw $IPT_FILTER_PRE -j NFQUEUE --queue-num $QNUM --queue-bypass +ipt POSTROUTING -t mangle $IPT_FILTER_POST -j NFQUEUE --queue-num $QNUM --queue-bypass diff --git a/init.d/openwrt/firewall.zapret.tpws_all b/init.d/openwrt/firewall.zapret.tpws_all index 3f30f6e..b524459 100644 --- a/init.d/openwrt/firewall.zapret.tpws_all +++ b/init.d/openwrt/firewall.zapret.tpws_all @@ -2,20 +2,20 @@ TPPORT_HTTP=1188 TPWS_USER=daemon IPT_FILTER_HTTP="-p tcp --dport 80" -. /lib/functions/network.sh +ipt() +{ + iptables -C $@ 2>/dev/null || iptables -I $@ +} +. /lib/functions/network.sh network_find_wan wan_iface for ext_iface in $wan_iface; do network_get_device DEVICE $ext_iface - # DNAT for local traffic - - iptables -t nat -C OUTPUT -o $DEVICE -m owner ! --uid-owner $TPWS_USER $IPT_FILTER_HTTP -j DNAT --to 127.0.0.1:$TPPORT_HTTP || - iptables -t nat -I OUTPUT -o $DEVICE -m owner ! --uid-owner $TPWS_USER $IPT_FILTER_HTTP -j DNAT --to 127.0.0.1:$TPPORT_HTTP + ipt OUTPUT -t nat -o $DEVICE -m owner ! --uid-owner $TPWS_USER $IPT_FILTER_HTTP -j DNAT --to 127.0.0.1:$TPPORT_HTTP done network_get_device DEVICE lan sysctl -w net.ipv4.conf.$DEVICE.route_localnet=1 -iptables -t nat -C prerouting_lan_rule $IPT_FILTER_HTTP -j DNAT --to 127.0.0.1:$TPPORT_HTTP || - iptables -t nat -I prerouting_lan_rule $IPT_FILTER_HTTP -j DNAT --to 127.0.0.1:$TPPORT_HTTP +ipt prerouting_lan_rule -t nat $IPT_FILTER_HTTP -j DNAT --to 127.0.0.1:$TPPORT_HTTP diff --git a/init.d/openwrt/firewall.zapret.tpws_all_https b/init.d/openwrt/firewall.zapret.tpws_all_https index 6cdd2fa..dd7154d 100644 --- a/init.d/openwrt/firewall.zapret.tpws_all_https +++ b/init.d/openwrt/firewall.zapret.tpws_all_https @@ -4,24 +4,22 @@ TPWS_USER=daemon IPT_FILTER_HTTP="-p tcp --dport 80" IPT_FILTER_HTTPS="-p tcp --dport 443" -. /lib/functions/network.sh +ipt() +{ + iptables -C $@ 2>/dev/null || iptables -I $@ +} +. /lib/functions/network.sh network_find_wan wan_iface for ext_iface in $wan_iface; do network_get_device DEVICE $ext_iface - # DNAT for local traffic - - iptables -t nat -C OUTPUT -o $DEVICE -m owner ! --uid-owner $TPWS_USER $IPT_FILTER_HTTP -j DNAT --to 127.0.0.1:$TPPORT_HTTP || - iptables -t nat -I OUTPUT -o $DEVICE -m owner ! --uid-owner $TPWS_USER $IPT_FILTER_HTTP -j DNAT --to 127.0.0.1:$TPPORT_HTTP - iptables -t nat -C OUTPUT -o $DEVICE -m owner ! --uid-owner $TPWS_USER $IPT_FILTER_HTTPS -j DNAT --to 127.0.0.1:$TPPORT_HTTPS || - iptables -t nat -I OUTPUT -o $DEVICE -m owner ! --uid-owner $TPWS_USER $IPT_FILTER_HTTPS -j DNAT --to 127.0.0.1:$TPPORT_HTTPS + ipt OUTPUT -t nat -o $DEVICE -m owner ! --uid-owner $TPWS_USER $IPT_FILTER_HTTP -j DNAT --to 127.0.0.1:$TPPORT_HTTP + ipt OUTPUT -t nat -o $DEVICE -m owner ! --uid-owner $TPWS_USER $IPT_FILTER_HTTPS -j DNAT --to 127.0.0.1:$TPPORT_HTTPS done network_get_device DEVICE lan sysctl -w net.ipv4.conf.$DEVICE.route_localnet=1 -iptables -t nat -C prerouting_lan_rule $IPT_FILTER_HTTP -j DNAT --to 127.0.0.1:$TPPORT_HTTP || - iptables -t nat -I prerouting_lan_rule $IPT_FILTER_HTTP -j DNAT --to 127.0.0.1:$TPPORT_HTTP -iptables -t nat -C prerouting_lan_rule $IPT_FILTER_HTTPS -j DNAT --to 127.0.0.1:$TPPORT_HTTPS || - iptables -t nat -I prerouting_lan_rule $IPT_FILTER_HTTPS -j DNAT --to 127.0.0.1:$TPPORT_HTTPS +ipt prerouting_lan_rule -t nat $IPT_FILTER_HTTP -j DNAT --to 127.0.0.1:$TPPORT_HTTP +ipt prerouting_lan_rule -t nat $IPT_FILTER_HTTPS -j DNAT --to 127.0.0.1:$TPPORT_HTTPS diff --git a/init.d/openwrt/firewall.zapret.tpws_ipset b/init.d/openwrt/firewall.zapret.tpws_ipset index 53c546f..3d60618 100644 --- a/init.d/openwrt/firewall.zapret.tpws_ipset +++ b/init.d/openwrt/firewall.zapret.tpws_ipset @@ -2,20 +2,20 @@ TPPORT_HTTP=1188 TPWS_USER=daemon IPT_FILTER_HTTP="-p tcp --dport 80 -m set --match-set zapret dst" -. /lib/functions/network.sh +ipt() +{ + iptables -C $@ 2>/dev/null || iptables -I $@ +} +. /lib/functions/network.sh network_find_wan wan_iface for ext_iface in $wan_iface; do network_get_device DEVICE $ext_iface - # DNAT for local traffic - - iptables -t nat -C OUTPUT -o $DEVICE -m owner ! --uid-owner $TPWS_USER $IPT_FILTER_HTTP -j DNAT --to 127.0.0.1:$TPPORT_HTTP || - iptables -t nat -I OUTPUT -o $DEVICE -m owner ! --uid-owner $TPWS_USER $IPT_FILTER_HTTP -j DNAT --to 127.0.0.1:$TPPORT_HTTP + ipt OUTPUT -t nat -o $DEVICE -m owner ! --uid-owner $TPWS_USER $IPT_FILTER_HTTP -j DNAT --to 127.0.0.1:$TPPORT_HTTP done network_get_device DEVICE lan sysctl -w net.ipv4.conf.$DEVICE.route_localnet=1 -iptables -t nat -C prerouting_lan_rule $IPT_FILTER_HTTP -j DNAT --to 127.0.0.1:$TPPORT_HTTP || - iptables -t nat -I prerouting_lan_rule $IPT_FILTER_HTTP -j DNAT --to 127.0.0.1:$TPPORT_HTTP +ipt prerouting_lan_rule -t nat $IPT_FILTER_HTTP -j DNAT --to 127.0.0.1:$TPPORT_HTTP diff --git a/init.d/openwrt/firewall.zapret.tpws_ipset_https b/init.d/openwrt/firewall.zapret.tpws_ipset_https index 1738426..1aa3746 100644 --- a/init.d/openwrt/firewall.zapret.tpws_ipset_https +++ b/init.d/openwrt/firewall.zapret.tpws_ipset_https @@ -4,24 +4,22 @@ TPWS_USER=daemon IPT_FILTER_HTTP="-p tcp --dport 80 -m set --match-set zapret dst" IPT_FILTER_HTTPS="-p tcp --dport 443 -m set --match-set zapret dst" -. /lib/functions/network.sh +ipt() +{ + iptables -C $@ 2>/dev/null || iptables -I $@ +} +. /lib/functions/network.sh network_find_wan wan_iface for ext_iface in $wan_iface; do network_get_device DEVICE $ext_iface - # DNAT for local traffic - - iptables -t nat -C OUTPUT -o $DEVICE -m owner ! --uid-owner $TPWS_USER $IPT_FILTER_HTTP -j DNAT --to 127.0.0.1:$TPPORT_HTTP || - iptables -t nat -I OUTPUT -o $DEVICE -m owner ! --uid-owner $TPWS_USER $IPT_FILTER_HTTP -j DNAT --to 127.0.0.1:$TPPORT_HTTP - iptables -t nat -C OUTPUT -o $DEVICE -m owner ! --uid-owner $TPWS_USER $IPT_FILTER_HTTPS -j DNAT --to 127.0.0.1:$TPPORT_HTTPS || - iptables -t nat -I OUTPUT -o $DEVICE -m owner ! --uid-owner $TPWS_USER $IPT_FILTER_HTTPS -j DNAT --to 127.0.0.1:$TPPORT_HTTPS + ipt OUTPUT -t nat -o $DEVICE -m owner ! --uid-owner $TPWS_USER $IPT_FILTER_HTTP -j DNAT --to 127.0.0.1:$TPPORT_HTTP + ipt OUTPUT -t nat -o $DEVICE -m owner ! --uid-owner $TPWS_USER $IPT_FILTER_HTTPS -j DNAT --to 127.0.0.1:$TPPORT_HTTPS done network_get_device DEVICE lan sysctl -w net.ipv4.conf.$DEVICE.route_localnet=1 -iptables -t nat -C prerouting_lan_rule $IPT_FILTER_HTTP -j DNAT --to 127.0.0.1:$TPPORT_HTTP || - iptables -t nat -I prerouting_lan_rule $IPT_FILTER_HTTP -j DNAT --to 127.0.0.1:$TPPORT_HTTP -iptables -t nat -C prerouting_lan_rule $IPT_FILTER_HTTPS -j DNAT --to 127.0.0.1:$TPPORT_HTTPS || - iptables -t nat -I prerouting_lan_rule $IPT_FILTER_HTTPS -j DNAT --to 127.0.0.1:$TPPORT_HTTPS +ipt prerouting_lan_rule -t nat $IPT_FILTER_HTTP -j DNAT --to 127.0.0.1:$TPPORT_HTTP +ipt prerouting_lan_rule -t nat $IPT_FILTER_HTTPS -j DNAT --to 127.0.0.1:$TPPORT_HTTPS diff --git a/install_easy.sh b/install_easy.sh index 9fd8a9c..6e15c4c 100755 --- a/install_easy.sh +++ b/install_easy.sh @@ -270,8 +270,7 @@ download_list() echo \* downloading blocked ip/host list ... rm -f "$EXEDIR/ipset/zapret-ip.txt" "$EXEDIR/ipset/zapret-ip-user.txt" \ - "$EXEDIR/ipset/zapret-ip-ipban.txt" "$EXEDIR/ipset/zapret-ip-user-ipban.txt" \ - "$EXEDIR/ipset/zapret-hosts.txt" + "$EXEDIR/ipset/zapret-ip-ipban.txt" "$EXEDIR/ipset/zapret-ip-user-ipban.txt" "$GET_LIST" || { echo could not download ip list exitp 25 diff --git a/ipset/zapret-hosts.txt b/ipset/zapret-hosts.txt new file mode 100644 index 0000000..e69de29