Ich hoste spezielle HTTP- und HTTPS-Dienste auf den Ports 8006 bzw. 8007. Ich verwende iptables, um den Server zu "aktivieren", d.h. um die eingehenden HTTP- und HTTPS-Ports weiterzuleiten:
iptables -A INPUT -i eth0 -p tcp --dport 80 -j ACCEPT
iptables -A INPUT -i eth0 -p tcp --dport 443 -j ACCEPT
iptables -A INPUT -i eth0 -p tcp --dport 8006 -j ACCEPT
iptables -A INPUT -i eth0 -p tcp --dport 8007 -j ACCEPT
iptables -A PREROUTING -t nat -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 8006
iptables -A PREROUTING -t nat -i eth0 -p tcp --dport 443 -j REDIRECT --to-port 8007
iptables -A OUTPUT -t nat -d 127.0.0.1 -p tcp --dport 80 -j REDIRECT --to-ports 8006
iptables -A OUTPUT -t nat -d 127.0.0.1 -p tcp --dport 443 -j REDIRECT --to-ports 8007
Das funktioniert wie ein Zauber. Ich möchte jedoch ein weiteres Skript erstellen, das meinen Server wieder deaktiviert, d. h. iptables in den Zustand zurückversetzt, in dem es sich vor dem Ausführen der obigen Zeilen befand. Es fällt mir jedoch schwer, die Syntax zum Entfernen dieser Regeln herauszufinden. Das einzige, was zu funktionieren scheint, ist ein kompletter Flush:
iptables -F
iptables -X
iptables -t nat -F
iptables -t nat -X
iptables -t mangle -F
iptables -t mangle -X
iptables -P INPUT ACCEPT
iptables -P FORWARD ACCEPT
iptables -P OUTPUT ACCEPT
Dadurch werden aber auch andere iptables-Regeln gelöscht, was unerwünscht ist.