Eu tenho o Debian 6.0.5 x86_64 no VPS e crio um arquivo chamado 'iptables.rules' com o seguinte comando:
*filter
-A INPUT -i lo -j ACCEPT
-A INPUT -d 127.0.0.0/8 ! -i lo -j REJECT --reject-with icmp-port-unreachable
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 80 -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 465 -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 587 -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 993 -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 995 -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 2222 -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 8080 -j ACCEPT
-A INPUT -p esp -j ACCEPT
-A INPUT -p ah -j ACCEPT
-A INPUT -p udp --dport 500 -j ACCEPT
-A INPUT -p udp --dport 4500 -j ACCEPT
-A INPUT -i ipsec+ -p udp -m udp --dport l2tp -j ACCEPT
-A INPUT -j REJECT --reject-with icmp-port-unreachable
-A FORWARD -s 10.0.0.0/8 -p tcp -m multiport --dports 80,443,554,1935,7070,8000,8001,6971:6999 -j ACCEPT
-A FORWARD -s 10.0.0.0/8 -p udp -m multiport --dports 80,443,554,1935,7070,8000,8001,6971:6999 -j ACCEPT
-A FORWARD -s 10.0.0.0/8 -d 8.8.8.8 -p tcp --dport 53 -j ACCEPT
-A FORWARD -s 10.0.0.0/8 -d 8.8.8.8 -p udp --dport 53 -j ACCEPT
-A FORWARD -s 10.0.0.0/8 -d 8.8.4.4 -p tcp --dport 53 -j ACCEPT
-A FORWARD -s 10.0.0.0/8 -d 8.8.4.4 -p udp --dport 53 -j ACCEPT
-A FORWARD -s 10.0.0.0/8 -d 10.0.0.0/8 -j DROP
-A FORWARD -s 10.0.0.0/8 -j DROP
-A OUTPUT -p tcp -m multiport --dports 53,80,443,554,1935,7070,8000,8001,6971:6999 -j ACCEPT
-A OUTPUT -p udp -m multiport --dports 53,80,443,554,1935,7070,8000,8001,6971:6999 -j ACCEPT
-A OUTPUT -p udp -m udp --dport 123 -j ACCEPT
-A OUTPUT -p tcp -m tcp --sport 22 -j ACCEPT
-A OUTPUT -p tcp -m tcp --sport 80 -j ACCEPT
-A OUTPUT -p tcp -m tcp --sport 465 -j ACCEPT
-A OUTPUT -p tcp -m tcp --sport 587 -j ACCEPT
-A OUTPUT -p tcp -m tcp --sport 993 -j ACCEPT
-A OUTPUT -p tcp -m tcp --sport 995 -j ACCEPT
-A OUTPUT -p tcp -m tcp --sport 2222 -j ACCEPT
-A OUTPUT -p tcp -m tcp --sport 8080 -j ACCEPT
-A OUTPUT -p esp -j ACCEPT
-A OUTPUT -p ah -j ACCEPT
-A OUTPUT -p udp --sport 500 -j ACCEPT
-A OUTPUT -p udp --sport 4500 -j ACCEPT
-A OUTPUT -o ipsec+ -p udp -m udp --dport l2tp -j ACCEPT
-A OUTPUT -j DROP
COMMIT
*nat
-A PREROUTING -i eth+ -p tcp --dport 443 -j DNAT --to-destination :8080
-A POSTROUTING -s 10.0.0.0/8 -o eth+ -j MASQUERADE
COMMIT
mas quando eu executo o iptables-restore < /etc/iptables.rules
comando, o putty me mostra o erro:
iptables-restore: unable to initialize table 'filter
como posso resolver esse erro?
A única vez que vi esse erro foi quando esqueci de executar iptables-restore como root. Assegure-se de estar executando o comando com o privilégio adequado.
Você não precisa da política padrão para cada conjunto de cadeia? Tente inserir:
Ou você pode abordar isso de outro ângulo... comece com uma lousa limpa - sem arquivo iptables.rules, sem regras definidas, então uma a uma adicione as novas regras ao seu sistema em execução e salve a configuração atual à medida que avança.
Eu tive o mesmo problema e tentei a resposta verificada (de Jim Potter), mas não funcionou para mim. Depois de tentar seu plano de backup (criá-lo do zero e exportá-lo com iptables-save), descobri que tinha um segundo problema: eu tinha \r\n terminações de linha e requer \n terminações de linha. Depois de consertar isso E ter as linhas de política padrão começando na linha 2, tudo funcionou bem.