Я размещаю специальные службы HTTP и HTTPS на портах 8006 и 8007 соответственно. Я использую iptables для "активации" сервера; т.е. маршрутизировать входящие HTTP и 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
Это работает как шарм. Однако я хотел бы создать еще один script, который снова отключит мой сервер; то есть восстановить iptables в состояние, в котором оно было, перед тем, как запустить строки выше. Однако мне сложно определить синтаксис, чтобы удалить эти правила. Единственное, что, кажется, работает, - это полный флеш:
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
Но это также приведет к удалению других правил iptables, которые нежелательны.