From 7b36760ab5eb90aada97c5e7f9751c7837e148c8 Mon Sep 17 00:00:00 2001 From: bol-van Date: Mon, 21 Oct 2024 18:29:51 +0300 Subject: [PATCH] init.d: openwrt-minimal iptables --- docs/readme.txt | 38 +++++++++++++++++-- init.d/openwrt-minimal/readme.txt | 38 +++++++++++++++++-- init.d/openwrt-minimal/tpws/etc/firewall.user | 28 ++++++++++++++ 3 files changed, 98 insertions(+), 6 deletions(-) create mode 100644 init.d/openwrt-minimal/tpws/etc/firewall.user diff --git a/docs/readme.txt b/docs/readme.txt index 7e2fabe..e8a5693 100644 --- a/docs/readme.txt +++ b/docs/readme.txt @@ -1720,10 +1720,14 @@ install_easy.sh автоматизирует ручные варианты пр Установка на openwrt в режиме острой нехватки места на диске ------------------------------------------------------------ -Инструкция только для openwrt 22 и выше с nftables. Требуется около 120 кб на диске. -Придется отказаться от всего, кроме tpws. +Требуется около 120-150 кб на диске. Придется отказаться от всего, кроме tpws. + +* Инструкция для openwrt 22 и выше с nftables. + Никаких зависимостей устанавливать не нужно. +Установка : + Скопируйте все из init.d/openwrt-minimal/tpws/* в корень openwrt. Скопируйте бинарник tpws подходящей архитектуры в /usr/bin/tpws. Установите права на файлы : chmod 755 /etc/init.d/tpws /usr/bin/tpws @@ -1736,9 +1740,37 @@ fw4 reload /etc/init.d/tpws disable /etc/init.d/tpws stop -rm -f /etc/nftables.d/90-tpws.nft /etc/init.d/tpws /usr/bin/tpws +rm -f /etc/nftables.d/90-tpws.nft /etc/firewall.user /etc/init.d/tpws /usr/bin/tpws fw4 restart +* Инструкция для openwrt 21 и ниже с iptables. + +Установите зависимости : +opkg update +opkg install iptables-mod-extra +только для IPV6 : opkg install ip6tables-mod-nat + +Убедитесь, что в /etc/firewall.user нет ничего значимого. +Если есть - не следуйте слепо инструкции. Обьедините код или создайте свой firewall include в /etc/config/firewall. + +Установка : + +Скопируйте все из init.d/openwrt-minimal/tpws/* в корень openwrt. +Скопируйте бинарник tpws подходящей архитектуры в /usr/bin/tpws. +Установите права на файлы : chmod 755 /etc/init.d/tpws /usr/bin/tpws +Отредактируйте /etc/config/tpws +/etc/init.d/tpws enable +/etc/init.d/tpws start +fw3 restart + +Полное удаление : + +/etc/init.d/tpws disable +/etc/init.d/tpws stop +rm -f /etc/nftables.d/90-tpws.nft /etc/firewall.user /etc/init.d/tpws +touch /etc/firewall.user +fw3 restart + Android ------- diff --git a/init.d/openwrt-minimal/readme.txt b/init.d/openwrt-minimal/readme.txt index f2f7d02..8319668 100644 --- a/init.d/openwrt-minimal/readme.txt +++ b/init.d/openwrt-minimal/readme.txt @@ -1,9 +1,12 @@ -Minimal tpws startup script for low storage openwrt with nftables. +Minimal tpws startup script for low storage openwrt. + +--- openwrt with NFTABLES (22+) + +Make sure you are running openwrt with nftables, not iptables. No opkg dependencies required ! * install : -Make sure you are running openwrt with nftables, not iptables. Copy everything from tpws directory to the root of the router. Copy tpws binary for your architecture to /usr/bin/tpws Set proper access rights : chmod 755 /etc/init.d/tpws /usr/bin/tpws @@ -16,5 +19,34 @@ fw4 reload /etc/init.d/tpws disable /etc/init.d/tpws stop -rm -f /etc/nftables.d/90-tpws.nft /etc/init.d/tpws +rm -f /etc/nftables.d/90-tpws.nft /etc/firewall.user /etc/init.d/tpws fw4 restart + +--- openwrt with IPTABLES (21-) + +Make sure you are running openwrt with iptables, not nftables. +Make sure you do not have anything valuable in /etc/firewall.user. +If you have - do not blindly follow instruction in firewall.user part. +Merge the code instead or setup your own firewall include in /etc/config/firewall. + +opkg update +opkg install iptables-mod-extra +IPV6 ONLY : opkg install ip6tables-mod-nat + +* install : + +Copy everything from tpws directory to the root of the router. +Copy tpws binary for your architecture to /usr/bin/tpws +Set proper access rights : chmod 755 /etc/init.d/tpws /usr/bin/tpws +EDIT /etc/config/tpws +/etc/init.d/tpws enable +/etc/init.d/tpws start +fw3 restart + +* full uninstall : + +/etc/init.d/tpws disable +/etc/init.d/tpws stop +rm -f /etc/nftables.d/90-tpws.nft /etc/firewall.user /etc/init.d/tpws +touch /etc/firewall.user +fw3 restart diff --git a/init.d/openwrt-minimal/tpws/etc/firewall.user b/init.d/openwrt-minimal/tpws/etc/firewall.user new file mode 100644 index 0000000..229af20 --- /dev/null +++ b/init.d/openwrt-minimal/tpws/etc/firewall.user @@ -0,0 +1,28 @@ +TP_PORT=900 +TP_USER=daemon + +exists() +{ + which "$1" >/dev/null 2>/dev/null +} + +ipt() +{ + $IPTABLES $FW_EXTRA_PRE -C "$@" $FW_EXTRA_POST >/dev/null 2>/dev/null || $IPTABLES $FW_EXTRA_PRE -I "$@" $FW_EXTRA_POST +} + +redirect_port() +{ + ipt PREROUTING -t nat -p tcp --dport $1 -j REDIRECT --to-port $2 + ipt OUTPUT -t nat -p tcp --dport $1 -m owner ! --uid-owner $TP_USER -j REDIRECT --to-port $2 +} + +redirect() +{ + redirect_port 80 $TP_PORT + redirect_port 443 $TP_PORT +} + +for IPTABLES in iptables ip6tables; do + exists $IPTABLES && redirect +done