mirror of
https://github.com/bol-van/zapret.git
synced 2025-04-19 21:42:59 +03:00
openwrt : simplify iptables in firewall include scripts
This commit is contained in:
parent
cd7de457e6
commit
db5b2c2d39
2
config
2
config
@ -22,6 +22,6 @@ TPWS_OPT_HTTPS="--split-pos=3"
|
|||||||
|
|
||||||
|
|
||||||
# select which init script will be used to get ip or host list
|
# 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
|
# comment if not required
|
||||||
GETLIST="get_antizapret.sh"
|
GETLIST="get_antizapret.sh"
|
||||||
|
@ -7,7 +7,7 @@ Tor поддерживает "из коробки" режим transparent proxy.
|
|||||||
2) Сделать так, чтобы все время при загрузке системы на некотором порту возникал socks.
|
2) Сделать так, чтобы все время при загрузке системы на некотором порту возникал socks.
|
||||||
3) Установить transparent соксификатор. Redsocks прекрасно подошел на эту роль.
|
3) Установить transparent соксификатор. Redsocks прекрасно подошел на эту роль.
|
||||||
4) Завернуть через iptables трафик с порта назначения 443 и на ip адреса из ipset 'zapret' на соксификатор
|
4) Завернуть через iptables трафик с порта назначения 443 и на ip адреса из ipset 'zapret' на соксификатор
|
||||||
Буду рассматривать систему на базе openwrt dedicated driver, где уже установлена система обхода dpi "zapret".
|
Буду рассматривать систему на базе openwrt, где уже установлена система обхода dpi "zapret".
|
||||||
По крайней мере нужно иметь заполненный ipset 'zapret', устанавливать tpws или nfqws не обязательно.
|
По крайней мере нужно иметь заполненный ipset 'zapret', устанавливать tpws или nfqws не обязательно.
|
||||||
Более того, если они на вашей системе не срабатывают, то можно соксифицировать не только https, но и http.
|
Более того, если они на вашей системе не срабатывают, то можно соксифицировать не только https, но и http.
|
||||||
|
|
||||||
@ -18,14 +18,15 @@ Tor поддерживает "из коробки" режим transparent proxy.
|
|||||||
После установки пакетов расслабим неоправданно жестокие права : chmod 755 /etc/ssh.
|
После установки пакетов расслабим неоправданно жестокие права : chmod 755 /etc/ssh.
|
||||||
Следует создать пользователя, под которым будем крутить ssh client. Допустим, это будет 'proxy'.
|
Следует создать пользователя, под которым будем крутить ssh client. Допустим, это будет 'proxy'.
|
||||||
Сначала установить пакет shadow-useradd.
|
Сначала установить пакет shadow-useradd.
|
||||||
Код:
|
------------------
|
||||||
useradd -d /home/proxy proxy
|
useradd -d /home/proxy proxy
|
||||||
mkdir -p /home/proxy
|
mkdir -p /home/proxy
|
||||||
chown proxy:proxy /home/proxy
|
chown proxy:proxy /home/proxy
|
||||||
|
------------------
|
||||||
Openssh ловит разные глюки, если у него нет доступа к /dev/tty.
|
Openssh ловит разные глюки, если у него нет доступа к /dev/tty.
|
||||||
Добавим в /etc/rc.local строчку : "chmod 666 /dev/tty"
|
Добавим в /etc/rc.local строчку : "chmod 666 /dev/tty"
|
||||||
Сгенерируем для него ключ RSA для доступа к ssh серверу.
|
Сгенерируем для него ключ RSA для доступа к ssh серверу.
|
||||||
Код:
|
------------------
|
||||||
su proxy
|
su proxy
|
||||||
cd
|
cd
|
||||||
mkdir -m 700 .ssh
|
mkdir -m 700 .ssh
|
||||||
@ -33,6 +34,7 @@ cd .ssh
|
|||||||
ssh-keygen
|
ssh-keygen
|
||||||
ls
|
ls
|
||||||
exit
|
exit
|
||||||
|
------------------
|
||||||
Должны получиться файлы id_rsa и id_rsa.pub.
|
Должны получиться файлы id_rsa и id_rsa.pub.
|
||||||
Строчку из id_rsa.pub следует добавить на ssh сервер в файл $HOME/.ssh/authorized_keys.
|
Строчку из id_rsa.pub следует добавить на ssh сервер в файл $HOME/.ssh/authorized_keys.
|
||||||
Более подробно о доступе к ssh через авторизацию по ключам : https://beget.com/ru/articles/ssh_by_key
|
Более подробно о доступе к ssh через авторизацию по ключам : https://beget.com/ru/articles/ssh_by_key
|
||||||
@ -41,10 +43,8 @@ exit
|
|||||||
Сделайте это под пользователем "proxy", поскольку при первом подключении ssh спросит о правильности hostkey.
|
Сделайте это под пользователем "proxy", поскольку при первом подключении ssh спросит о правильности hostkey.
|
||||||
Соединение может отвалиться в любой момент, поэтому нужно зациклить запуск ssh.
|
Соединение может отвалиться в любой момент, поэтому нужно зациклить запуск ssh.
|
||||||
Для этого лучший вариант - использовать procd - упрощенная замена systemd на openwrt версий BB и выше.
|
Для этого лучший вариант - использовать procd - упрощенная замена systemd на openwrt версий BB и выше.
|
||||||
/etc/init.d/socks_vps :
|
--- /etc/init.d/socks_vps ---
|
||||||
Код:
|
|
||||||
#!/bin/sh /etc/rc.common
|
#!/bin/sh /etc/rc.common
|
||||||
# Copyright (C) 2006-2011 OpenWrt.org
|
|
||||||
START=50
|
START=50
|
||||||
STOP=50
|
STOP=50
|
||||||
USE_PROCD=1
|
USE_PROCD=1
|
||||||
@ -57,6 +57,7 @@ start_service() {
|
|||||||
procd_set_param command $COMMAND
|
procd_set_param command $COMMAND
|
||||||
procd_close_instance
|
procd_close_instance
|
||||||
}
|
}
|
||||||
|
-----------------------------
|
||||||
Этому файлу нужно дать права : chmod +x /etc/init.d/socks_vps
|
Этому файлу нужно дать права : chmod +x /etc/init.d/socks_vps
|
||||||
Запуск : /etc/init.d/socks_vps start
|
Запуск : /etc/init.d/socks_vps start
|
||||||
Останов : /etc/init.d/socks_vps stop
|
Останов : /etc/init.d/socks_vps stop
|
||||||
@ -77,24 +78,34 @@ start_service() {
|
|||||||
|
|
||||||
* Завертывание соединений через iptables
|
* Завертывание соединений через iptables
|
||||||
|
|
||||||
/etc/firewall.user
|
--- /etc/firewall.user
-----
|
||||||
Код:
|
|
||||||
SOXIFIER_PORT=1099
|
SOXIFIER_PORT=1099
|
||||||
|
|
||||||
|
ipt()
|
||||||
|
{
|
||||||
|
iptables -C $@ 2>/dev/null || iptables -I $@
|
||||||
|
}
|
||||||
|
|
||||||
. /lib/functions/network.sh
|
. /lib/functions/network.sh
|
||||||
network_find_wan wan_iface
|
network_find_wan wan_iface
|
||||||
|
|
||||||
for ext_iface in $wan_iface; do
|
for ext_iface in $wan_iface; do
|
||||||
network_get_device ext_device $ext_iface
|
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 ||
|
ipt OUTPUT -t nat -o $ext_device -p tcp --dport 443 -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
|
|
||||||
done
|
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 ||
|
network_get_device DEVICE lan
|
||||||
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
|
sysctl -w net.ipv4.conf.$DEVICE.route_localnet=1
|
||||||
Внести параметр "reload" а /etc/config/firewall в указанное место :
|
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
|
config include
|
||||||
option path '/etc/firewall.user'
|
option path '/etc/firewall.user'
|
||||||
option reload '1'
|
option reload '1'
|
||||||
|
----------------------------
|
||||||
|
|
||||||
Перезапуск : /etc/init.d/firewall restart
|
Перезапуск : /etc/init.d/firewall restart
|
||||||
Все, теперь можно проверять :
|
Все, теперь можно проверять :
|
||||||
/etc/init.d/redsocks stop
|
/etc/init.d/redsocks stop
|
||||||
@ -108,8 +119,8 @@ curl https://btc-e.com
|
|||||||
* Автозапуск redsocks
|
* Автозапуск redsocks
|
||||||
|
|
||||||
Я сделал для себя небольшой скриптик, вешающийся на события поднятия и опускания интерфейсов.
|
Я сделал для себя небольшой скриптик, вешающийся на события поднятия и опускания интерфейсов.
|
||||||
/etc/hotplug.d/iface/99-exec-on-updown
|
|
||||||
Код:
|
--- /etc/hotplug.d/iface/99-exec-on-updown ---
|
||||||
#!/bin/sh
|
#!/bin/sh
|
||||||
if [ "$ACTION" = ifup ]; then
|
if [ "$ACTION" = ifup ]; then
|
||||||
cmd=$(uci get network.$INTERFACE.exec_on_up)
|
cmd=$(uci get network.$INTERFACE.exec_on_up)
|
||||||
@ -119,13 +130,16 @@ if [ "$ACTION" = ifdown ]; then
|
|||||||
cmd=$(uci get network.$INTERFACE.exec_on_down)
|
cmd=$(uci get network.$INTERFACE.exec_on_down)
|
||||||
[ -n "$cmd" ] && $cmd
|
[ -n "$cmd" ] && $cmd
|
||||||
fi
|
fi
|
||||||
Теперь можно в описания интерфейсов в /etc/config/nework внести в соответствующий раздел :
|
----------------------------------------------
|
||||||
Код:
|
|
||||||
|
Теперь можно в описания интерфейсов внести в соответствующий раздел :
|
||||||
|
--- /etc/config/nework ---
|
||||||
config interface 'wan'
|
config interface 'wan'
|
||||||
........
|
........
|
||||||
option exec_on_up '/etc/init.d/redsocks start'
|
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. Это нам не потребуется.
|
Убираем все, что связано с ssh. Это нам не потребуется.
|
||||||
В /etc/redsocks.conf меняем :
|
|
||||||
Код:
|
В конфиге redsocks меняем :
|
||||||
|
--- /etc/redsocks.conf ----
|
||||||
ip = 127.0.0.1;
|
ip = 127.0.0.1;
|
||||||
port = 1098;
|
port = 1098;
|
||||||
type = socks5;
|
type = socks5;
|
||||||
|
---------------------------
|
||||||
на :
|
на :
|
||||||
Код:
|
--- /etc/redsocks.conf ----
|
||||||
ip = proxy.antizapret.prostovpn.org;
|
ip = proxy.antizapret.prostovpn.org;
|
||||||
port = 3128;
|
port = 3128;
|
||||||
type = http-connect;
|
type = http-connect;
|
||||||
|
---------------------------
|
||||||
|
|
||||||
В отличие от SSH, TLS хэндшейк теперь пойдет в открытую, то есть DPI его могут высечь из proxy протокола и проверить поле SNI (Server Name Indication).
|
В отличие от SSH, TLS хэндшейк теперь пойдет в открытую, то есть DPI его могут высечь из proxy протокола и проверить поле SNI (Server Name Indication).
|
||||||
Так же могут поступить чуть проще : анализировать IP назначения в методе "CONNECT".
|
Так же могут поступить чуть проще : анализировать IP назначения в методе "CONNECT".
|
||||||
Однако, практически это вряд ли будут делать. Если и будут, то немногие.
|
Однако, практически это вряд ли будут делать. Если и будут, то немногие.
|
||||||
|
@ -233,24 +233,23 @@ OUTPUT относится к исходящим с роутера пакетам
|
|||||||
Если с самого роутера ничего заруливать не надо, можно опустить все до команд с PREROUTING.
|
Если с самого роутера ничего заруливать не надо, можно опустить все до команд с PREROUTING.
|
||||||
|
|
||||||
--/etc/firewall.user----------------------------
|
--/etc/firewall.user----------------------------
|
||||||
. /lib/functions/network.sh
|
ipt()
|
||||||
|
{
|
||||||
|
iptables -C $@ 2>/dev/null || iptables -I $@
|
||||||
|
}
|
||||||
|
|
||||||
|
. /lib/functions/network.sh
|
||||||
network_find_wan wan_iface
|
network_find_wan wan_iface
|
||||||
|
|
||||||
for ext_iface in $wan_iface; do
|
for ext_iface in $wan_iface; do
|
||||||
network_get_device DEVICE $ext_iface
|
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 ||
|
ipt OUTPUT -t mangle -o $DEVICE -p tcp --dport 443 -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
|
ipt OUTPUT -t mangle -o $DEVICE -m set --match-set ipban 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
|
|
||||||
done
|
done
|
||||||
|
|
||||||
iptables -t mangle -C PREROUTING -p tcp --dport 443 -m set --match-set zapret 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
|
||||||
iptables -t mangle -I PREROUTING -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 -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
|
|
||||||
|
|
||||||
------------------------------------------------
|
------------------------------------------------
|
||||||
|
|
||||||
# fw3 restart
|
# fw3 restart
|
||||||
@ -305,32 +304,27 @@ config rule
|
|||||||
Если вам не актуальны исходящие с самого роутера, то можно ничего не менять.
|
Если вам не актуальны исходящие с самого роутера, то можно ничего не менять.
|
||||||
|
|
||||||
--/etc/firewall.user----------------------------
|
--/etc/firewall.user----------------------------
|
||||||
. /lib/functions/network.sh
|
ipt()
|
||||||
|
{
|
||||||
|
iptables -C $@ 2>/dev/null || iptables -I $@
|
||||||
|
}
|
||||||
|
|
||||||
|
. /lib/functions/network.sh
|
||||||
network_find_wan wan_iface
|
network_find_wan wan_iface
|
||||||
|
|
||||||
for ext_iface in $wan_iface; do
|
for ext_iface in $wan_iface; do
|
||||||
network_get_device DEVICE $ext_iface
|
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
|
|
||||||
|
|
||||||
|
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
|
done
|
||||||
|
|
||||||
|
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
|
||||||
|
|
||||||
# do masquerade for OUTPUT to ensure correct outgoing address
|
# do masquerade for OUTPUT to ensure correct outgoing address
|
||||||
iptables -t nat -C postrouting_tunvps_rule -m mark --mark 0x1000/0x1000 -j MASQUERADE ||
|
ipt postrouting_tunvps_rule -t nat -m mark --mark 0x1000/0x1000 -j MASQUERADE
|
||||||
iptables -t nat -A postrouting_tunvps_rule -m mark --mark 0x1000/0x1000 -j MASQUERADE
|
|
||||||
|
|
||||||
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
|
|
||||||
|
|
||||||
------------------------------------------------
|
------------------------------------------------
|
||||||
|
|
||||||
|
|
||||||
|
@ -2,8 +2,10 @@ QNUM=200
|
|||||||
IPT_FILTER_PRE="-p tcp --sport 80"
|
IPT_FILTER_PRE="-p tcp --sport 80"
|
||||||
IPT_FILTER_POST="-p tcp --dport 80"
|
IPT_FILTER_POST="-p tcp --dport 80"
|
||||||
|
|
||||||
iptables -t raw -C PREROUTING $IPT_FILTER_PRE -j NFQUEUE --queue-num $QNUM --queue-bypass ||
|
ipt()
|
||||||
iptables -t raw -I PREROUTING $IPT_FILTER_PRE -j NFQUEUE --queue-num $QNUM --queue-bypass
|
{
|
||||||
|
iptables -C $@ 2>/dev/null || iptables -I $@
|
||||||
|
}
|
||||||
|
|
||||||
iptables -t mangle -C 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
|
||||||
iptables -t mangle -I POSTROUTING $IPT_FILTER_POST -j NFQUEUE --queue-num $QNUM --queue-bypass
|
ipt POSTROUTING -t mangle $IPT_FILTER_POST -j NFQUEUE --queue-num $QNUM --queue-bypass
|
||||||
|
@ -2,8 +2,10 @@ QNUM=200
|
|||||||
IPT_FILTER_PRE="-p tcp -m multiport --sports 80,443"
|
IPT_FILTER_PRE="-p tcp -m multiport --sports 80,443"
|
||||||
IPT_FILTER_POST="-p tcp --dport 80"
|
IPT_FILTER_POST="-p tcp --dport 80"
|
||||||
|
|
||||||
iptables -t raw -C PREROUTING $IPT_FILTER_PRE -j NFQUEUE --queue-num $QNUM --queue-bypass ||
|
ipt()
|
||||||
iptables -t raw -I PREROUTING $IPT_FILTER_PRE -j NFQUEUE --queue-num $QNUM --queue-bypass
|
{
|
||||||
|
iptables -C $@ 2>/dev/null || iptables -I $@
|
||||||
|
}
|
||||||
|
|
||||||
iptables -t mangle -C 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
|
||||||
iptables -t mangle -I POSTROUTING $IPT_FILTER_POST -j NFQUEUE --queue-num $QNUM --queue-bypass
|
ipt POSTROUTING -t mangle $IPT_FILTER_POST -j NFQUEUE --queue-num $QNUM --queue-bypass
|
||||||
|
@ -2,8 +2,10 @@ QNUM=200
|
|||||||
IPT_FILTER_PRE="-p tcp --sport 80 -m set --match-set zapret src"
|
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"
|
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 ||
|
ipt()
|
||||||
iptables -t raw -I PREROUTING $IPT_FILTER_PRE -j NFQUEUE --queue-num $QNUM --queue-bypass
|
{
|
||||||
|
iptables -C $@ 2>/dev/null || iptables -I $@
|
||||||
|
}
|
||||||
|
|
||||||
iptables -t mangle -C 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
|
||||||
iptables -t mangle -I POSTROUTING $IPT_FILTER_POST -j NFQUEUE --queue-num $QNUM --queue-bypass
|
ipt POSTROUTING -t mangle $IPT_FILTER_POST -j NFQUEUE --queue-num $QNUM --queue-bypass
|
||||||
|
@ -2,8 +2,10 @@ QNUM=200
|
|||||||
IPT_FILTER_PRE="-p tcp -m multiport --sports 80,443 -m set --match-set zapret src"
|
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"
|
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 ||
|
ipt()
|
||||||
iptables -t raw -I PREROUTING $IPT_FILTER_PRE -j NFQUEUE --queue-num $QNUM --queue-bypass
|
{
|
||||||
|
iptables -C $@ 2>/dev/null || iptables -I $@
|
||||||
|
}
|
||||||
|
|
||||||
iptables -t mangle -C 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
|
||||||
iptables -t mangle -I POSTROUTING $IPT_FILTER_POST -j NFQUEUE --queue-num $QNUM --queue-bypass
|
ipt POSTROUTING -t mangle $IPT_FILTER_POST -j NFQUEUE --queue-num $QNUM --queue-bypass
|
||||||
|
@ -2,20 +2,20 @@ TPPORT_HTTP=1188
|
|||||||
TPWS_USER=daemon
|
TPWS_USER=daemon
|
||||||
IPT_FILTER_HTTP="-p tcp --dport 80"
|
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
|
network_find_wan wan_iface
|
||||||
|
|
||||||
for ext_iface in $wan_iface; do
|
for ext_iface in $wan_iface; do
|
||||||
network_get_device DEVICE $ext_iface
|
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
|
done
|
||||||
|
|
||||||
network_get_device DEVICE lan
|
network_get_device DEVICE lan
|
||||||
sysctl -w net.ipv4.conf.$DEVICE.route_localnet=1
|
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 ||
|
ipt prerouting_lan_rule -t nat $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
|
|
||||||
|
@ -4,24 +4,22 @@ TPWS_USER=daemon
|
|||||||
IPT_FILTER_HTTP="-p tcp --dport 80"
|
IPT_FILTER_HTTP="-p tcp --dport 80"
|
||||||
IPT_FILTER_HTTPS="-p tcp --dport 443"
|
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
|
network_find_wan wan_iface
|
||||||
|
|
||||||
for ext_iface in $wan_iface; do
|
for ext_iface in $wan_iface; do
|
||||||
network_get_device DEVICE $ext_iface
|
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
|
done
|
||||||
|
|
||||||
network_get_device DEVICE lan
|
network_get_device DEVICE lan
|
||||||
sysctl -w net.ipv4.conf.$DEVICE.route_localnet=1
|
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 ||
|
ipt prerouting_lan_rule -t nat $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_HTTPS -j DNAT --to 127.0.0.1:$TPPORT_HTTPS
|
||||||
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
|
|
||||||
|
@ -2,20 +2,20 @@ TPPORT_HTTP=1188
|
|||||||
TPWS_USER=daemon
|
TPWS_USER=daemon
|
||||||
IPT_FILTER_HTTP="-p tcp --dport 80 -m set --match-set zapret dst"
|
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
|
network_find_wan wan_iface
|
||||||
|
|
||||||
for ext_iface in $wan_iface; do
|
for ext_iface in $wan_iface; do
|
||||||
network_get_device DEVICE $ext_iface
|
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
|
done
|
||||||
|
|
||||||
network_get_device DEVICE lan
|
network_get_device DEVICE lan
|
||||||
sysctl -w net.ipv4.conf.$DEVICE.route_localnet=1
|
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 ||
|
ipt prerouting_lan_rule -t nat $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
|
|
||||||
|
@ -4,24 +4,22 @@ TPWS_USER=daemon
|
|||||||
IPT_FILTER_HTTP="-p tcp --dport 80 -m set --match-set zapret dst"
|
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"
|
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
|
network_find_wan wan_iface
|
||||||
|
|
||||||
for ext_iface in $wan_iface; do
|
for ext_iface in $wan_iface; do
|
||||||
network_get_device DEVICE $ext_iface
|
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
|
done
|
||||||
|
|
||||||
network_get_device DEVICE lan
|
network_get_device DEVICE lan
|
||||||
sysctl -w net.ipv4.conf.$DEVICE.route_localnet=1
|
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 ||
|
ipt prerouting_lan_rule -t nat $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_HTTPS -j DNAT --to 127.0.0.1:$TPPORT_HTTPS
|
||||||
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
|
|
||||||
|
@ -270,8 +270,7 @@ download_list()
|
|||||||
echo \* downloading blocked ip/host list ...
|
echo \* downloading blocked ip/host list ...
|
||||||
|
|
||||||
rm -f "$EXEDIR/ipset/zapret-ip.txt" "$EXEDIR/ipset/zapret-ip-user.txt" \
|
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-ip-ipban.txt" "$EXEDIR/ipset/zapret-ip-user-ipban.txt"
|
||||||
"$EXEDIR/ipset/zapret-hosts.txt"
|
|
||||||
"$GET_LIST" || {
|
"$GET_LIST" || {
|
||||||
echo could not download ip list
|
echo could not download ip list
|
||||||
exitp 25
|
exitp 25
|
||||||
|
0
ipset/zapret-hosts.txt
Normal file
0
ipset/zapret-hosts.txt
Normal file
Loading…
x
Reference in New Issue
Block a user