Ich hoste spezielle HTTP- und HTTPS-Dienste an den Ports 8006 bzw. 8007. Ich benutze iptables, um den Server zu "aktivieren"; dh 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 anderes Skript erstellen, das meinen Server wieder deaktiviert. dh iptables in dem Zustand wiederherstellen, in dem es sich befand, bevor die obigen Zeilen ausgeführt wurden. Es fällt mir jedoch schwer, die Syntax zum Entfernen dieser Regeln herauszufinden. Das einzige, was zu funktionieren scheint, ist eine vollständige Spülung:
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 unerwünschte iptables-Regeln gelöscht.
-I
als-A
fürACCEPT
Linien zu verwenden. Dies liegt daran, dass in der Regel die letzte Zeile (z.INPUT
B. für die Kette) einDROP
oder istREJECT
und Sie möchten, dass Ihre Regel davor steht.-A
setzt die neue Regel nach der letzten Regel, während-I
sie am Anfang steht.