openwrt : simplify iptables in firewall include scripts

This commit is contained in:
bolvan 2019-05-07 11:30:15 +03:00
parent cd7de457e6
commit db5b2c2d39
13 changed files with 125 additions and 110 deletions

2
config
View File

@ -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"

View File

@ -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".
Однако, практически это вряд ли будут делать. Если и будут, то немногие. Однако, практически это вряд ли будут делать. Если и будут, то немногие.

View File

@ -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
------------------------------------------------ ------------------------------------------------

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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
View File