从控制台为 centos 6.3 启用端口 80 上的 http 访问

从控制台为 centos 6.3 启用端口 80 上的 http 访问

有一个在 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

第一条规则没有任何条件,因此没有数据包可以达到第二条规则。

相关内容