有一个在 Parallels 上运行的 centos 6.3 盒子
我正在尝试打开端口 80 以便从外部访问
尝试了此 GUI 解决方案邮政并且它可以工作,但我需要通过脚本来完成它。
尝试这样做:
sudo /sbin/iptables -A INPUT -p tcp -m state --state NEW -m tcp --dport 80 -j ACCEPT
sudo /sbin/iptables-save
sudo /sbin/service iptables restart
这将创建与 GUI 工具完全相同的 iptables 条目,只是它不起作用:
$ telnet xx.xxx.xx.xx 80
Trying xx.xxx.xx.xx...
telnet: connect to address xx.xxx.xx.xx: Connection refused
telnet: Unable to connect to remote host
更新:
$ netstat -ntlp
(No info could be read for "-p": geteuid()=500 but you should be root.)
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:3306 0.0.0.0:* LISTEN -
tcp 0 0 127.0.0.1:6379 0.0.0.0:* LISTEN -
tcp 0 0 0.0.0.0:111 0.0.0.0:* LISTEN -
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN -
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN -
tcp 0 0 127.0.0.1:631 0.0.0.0:* LISTEN -
tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN -
tcp 0 0 0.0.0.0:37439 0.0.0.0:* LISTEN -
tcp 0 0 :::111 :::* LISTEN -
tcp 0 0 :::22 :::* LISTEN -
tcp 0 0 ::1:631 :::* LISTEN -
tcp 0 0 :::60472 :::* LISTEN -
$ sudo cat /etc/sysconfig/iptables
# Generated by iptables-save v1.4.7 on Wed Dec 12 18:04:25 2012
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [5:640]
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT
-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A INPUT -p tcp -m state --state NEW -m tcp --dport 80 -j ACCEPT
-A FORWARD -j REJECT --reject-with icmp-host-prohibited
COMMIT
# Completed on Wed Dec 12 18:04:25 2012
答案1
我想说你的规则在你的 INPUT iptables 列表的末尾。试试这个iptables -I INPUT 5 -p tcp -m state --state NEW -m tcp --dport 80 -j ACCEPT
,然后运行service iptables save
。命令中的 A 将规则附加到当前 INPUT 列表。这在可能有明确 REJECT 的规则之后。我的命令中的 I 将规则放在一行的位置,在本例中是第 5 行。这应该在默认拒绝规则之前。IPTABLES 中的规则从上到下工作,如果规则匹配,防火墙会将规则应用于连接。我使用这个 -iptables-规则示例- 非常有帮助
答案2
命令service iptables restart
不保存您当前的 iptables 规则。
service iptables save
重新启动之前执行。
答案3
规则匹配从上到下进行。因此 iptables 在第一次匹配时采取行动。您有:
-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A INPUT -p tcp -m state --state NEW -m tcp --dport 80 -j ACCEPT
第一条规则没有任何条件,因此没有数据包可以达到第二条规则。