Como posso remover regras específicas do iptables?
Estou hospedando serviços HTTP e HTTPS especiais nas portas 8006 e 8007, respectivamente. Eu uso o iptables para "ativar" o servidor; Ou seja, para rotear as portas HTTP e HTTPS de entrada:
<code>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 </code>
Isso funciona como um encanto. No entanto, gostaria de criar outro script que desativa meu servidor novamente; isto é, restaure o iptables para o estado em que se encontrava antes de executar as linhas acima. No entanto, estou tendo dificuldade em descobrir a sintaxe para remover essas regras. A única coisa que parece funcionar é um flush completo:
<code>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 </code>
Mas isso também excluirá outras regras do iptables que são indesejadas.