![以 ACCEPT 或 DROP 结尾的 IPTABLES 命令在服务防火墙重启时失败](https://linux22.com/image/639435/%E4%BB%A5%20ACCEPT%20%E6%88%96%20DROP%20%E7%BB%93%E5%B0%BE%E7%9A%84%20IPTABLES%20%E5%91%BD%E4%BB%A4%E5%9C%A8%E6%9C%8D%E5%8A%A1%E9%98%B2%E7%81%AB%E5%A2%99%E9%87%8D%E5%90%AF%E6%97%B6%E5%A4%B1%E8%B4%A5.png)
我有一台 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.
我该如何修复该命令以便重新启动防火墙时它们被接受?
答案1
我想我已经找到答案了:每个换行符后都有 ^M 字符。我相信如果我删除它们,命令就会起作用。我正在使用 VIM,如果我通过执行 ':e ++ff=unix' 在 vim 中查看它们,它会在每个换行符后显示 '^M'。