У меня Debian 6.0.5 x86_64 на VPS и я создаю файл с именем 'iptables.rules' с помощью следующей команды:
*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
но когда я запускаю iptables-restore команда, шпатлевка покажет мне ошибку:
iptables-restore: unable to initialize table 'filter
как я могу решить эту ошибку?
Разве вам не нужна политика по умолчанию для каждого набора цепочек? Попробуйте вставить:
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
<the rest of your rules>
Или вы можете подойти к этому под другим углом... начните с чистого листа - нет файла iptables.rules , нет набора правил, затем один за другим добавляйте новые правила в работающую систему и сохраняйте текущую конфигурацию по мере работы
.Единственный раз, когда я видел эту ошибку, я забыл запустить iptables- restore as root. Убедитесь, что вы выполняете команду с подходящими привилегиями.
У меня была та же проблема, и я попробовал проверенный ответ (от Джима Поттера), но у меня это не сработало. Попробовав его план резервного копирования (создать его с нуля и экспортировать с помощью iptables-save), я понял, что у меня возникла вторая проблема: у меня было \ r \ n окончаний строк, а для этого требуется \ n окончаний строк. Как только я исправил это И установил строки политики по умолчанию, начинающиеся со строки 2, все работало нормально.