Linux

以 ACCEPT 或 DROP 結尾的 IPTABLES 命令在服務防火牆重新啟動時失敗

  • August 12, 2014

我有一個 CENTOS Linux VPS。我的 IPTABLES 腳本中有以下內容可以在我的 VPN 重新啟動時執行,但是當我執行service firewall restart

我已經手動執行了下面的每個命令並且它們工作。根據 Host Gator 的說法,為了使 IPTABLES 規則持續存在,我需要將它們放在

/etc/firewall/INCLUDE

文件,所以我在文件中插入了命令,但是以 ACCEPT 或 DROP 結尾的命令在我執行service firewall restart命令時會出現錯誤。

這是我的包含文件:

 1 iptables -A INPUT -p tcp -m tcp --dport 3000 --tcp-flags FIN,SYN,RST,ACK SYN -j ACCEPT
 2 iptables -A INPUT -i lo -j ACCEPT
 3 iptables -A OUTPUT -o lo -j ACCEPT
 4 iptables -A INPUT -p tcp ! --syn -m state --state NEW -j DROP
 5 iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
 6 iptables -A INPUT -p tcp --dport 5622  -m state --state NEW -j ACCEPT
 7 iptables -A INPUT -p tcp --dport 80  -m state --state NEW -j ACCEPT
 8 iptables -A INPUT -p tcp --dport 4643  -m state --state NEW -j ACCEPT
 9 iptables -A INPUT -p tcp --dport 22  -m state --state NEW -j ACCEPT
10 iptables -A INPUT -p ICMP --icmp-type 8 -j ACCEPT
11 iptables -A INPUT -p tcp -m state --state NEW -m tcp --dport 25 -j ACCEPT
12 iptables -I INPUT -p tcp --dport 3000 --syn -j ACCEPT
13 iptables -t nat -I PREROUTING -p tcp --dport 443 -j REDIRECT --to-ports 3000
14 iptables -t nat -I PREROUTING -p tcp --dport 80 -j REDIRECT --to-ports 3000
15 iptables -A INPUT -p tcp --tcp-flags ALL NONE -j DROP
16 iptables -A INPUT -p tcp ! --syn -m state --state NEW -j DROP
17 iptables -A INPUT -p tcp --tcp-flags ALL ALL -j DROP
18 iptables -A INPUT -j DROP -p ALL

錯誤:

Running file /etc/firewall/INCLUDE
'ptables v1.4.7: Invalid target name `ACCEPT
Try `iptables -h' or 'iptables --help' for more information.
'ptables v1.4.7: Invalid target name `ACCEPT
Try `iptables -h' or 'iptables --help' for more information.
'ptables v1.4.7: Invalid target name `ACCEPT
Try `iptables -h' or 'iptables --help' for more information.
'ptables v1.4.7: Invalid target name `DROP
Try `iptables -h' or 'iptables --help' for more information.
'ptables v1.4.7: Invalid target name `ACCEPT
Try `iptables -h' or 'iptables --help' for more information.
'ptables v1.4.7: Invalid target name `ACCEPT
Try `iptables -h' or 'iptables --help' for more information.
'ptables v1.4.7: Invalid target name `ACCEPT
Try `iptables -h' or 'iptables --help' for more information.
'ptables v1.4.7: Invalid target name `ACCEPT
Try `iptables -h' or 'iptables --help' for more information.
'ptables v1.4.7: Invalid target name `ACCEPT
Try `iptables -h' or 'iptables --help' for more information.
'ptables v1.4.7: Invalid target name `ACCEPT
Try `iptables -h' or 'iptables --help' for more information.
'ptables v1.4.7: Invalid target name `ACCEPT
Try `iptables -h' or 'iptables --help' for more information.
'ptables v1.4.7: Invalid target name `ACCEPT
Try `iptables -h' or 'iptables --help' for more information.
'ptables v1.4.7: Invalid target name `DROP
Try `iptables -h' or 'iptables --help' for more information.
'ptables v1.4.7: Invalid target name `DROP
Try `iptables -h' or 'iptables --help' for more information.
'ptables v1.4.7: Invalid target name `DROP
Try `iptables -h' or 'iptables --help' for more information.

如何修復命令,以便在我重新啟動防火牆時接受它們?

我想我已經找到了答案:每個換行符後面都有 ^M 個字元。我相信如果我刪除它們,這些命令就會起作用。我正在使用 VIM,如果我通過執行 ‘:e ++ff=unix’ 在 vi​​m 中查看它們,它會在每個換行符後顯示 ‘^M’。

引用自:https://serverfault.com/questions/619733