Hostuję specjalne usługi HTTP i HTTPS odpowiednio na portach 8006 i 8007. Używam iptables do „aktywacji” serwera; tzn. aby skierować przychodzące porty HTTP i HTTPS:
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
To działa jak urok. Chciałbym jednak utworzyć kolejny skrypt, który ponownie wyłącza mój serwer; tzn. przywróć iptables do stanu, w jakim był przed uruchomieniem linii powyżej. Mam jednak trudności z ustaleniem składni, aby usunąć te reguły. Wydaje się, że jedyne, co działa, to całkowity kolor:
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
Ale spowoduje to również usunięcie innych reguł iptables, co jest niepożądane.
-I
zamiast-A
naACCEPT
linii. Wynika to z tego, że zazwyczaj ostatnia linia (naINPUT
przykład łańcuch) to aDROP
lubREJECT
chcesz, aby reguła była wcześniejsza.-A
umieszcza nową regułę po ostatniej regule, podczas gdy-I
umieszcza ją na początku.