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

Hug*_*ugo 3 firewall iptables centos6

有一个在 Parallels 上运行的 centos 6.3 box

我正在尝试打开端口 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
Run Code Online (Sandbox Code Playgroud)

这将创建与 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
Run Code Online (Sandbox Code Playgroud)

更新:

$ 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
Run Code Online (Sandbox Code Playgroud)

Oli*_*Oli 5

我会说你的规则在你的 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-rules-examples - 真的很有帮助