我已经安装了 CentOS 6,但是只能通过关闭防火墙才能向外部开放 Apache2。
有人能告诉我如何在不关闭防火墙的情况下向外部开放 apache2 吗?
更新:
我的 iptables 配置如下:
# Firewall configuration written by system-config-firewall
# Manual customization of this file is not recommended.
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT
-I FORWARD -m physdev --physdev-is-bridged -j ACCEPT
-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A FORWARD -j REJECT --reject-with icmp-host-prohibited
-A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT
COMMIT
这台机器的 IP 为“192.168.59.142”,我需要通过网络上的另一台机器访问 apache。
更新2:
解决方法是在“/etc/sysconfig/iptables”中添加此规则,然后重新启动 iptables
-I INPUT -d 192.168.59.142 -p tcp --dport 80 -j ACCEPT
答案1
这应该有效
iptables -I INPUT -p tcp --dport 80 -j ACCEPT
会将-I
新规则插入到表的开头。使用-A
它将被附加到表的末尾,并且您的综合 REJECT 规则将优先,因为 iptables 从上到下处理规则,并且第一个匹配的规则获胜。
查看您发布的配置,如果您移动了
-A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT
多于
-A INPUT -j REJECT --reject-with icmp-host-prohibited
这也行得通。使用以下命令重启防火墙
sudo /sbin/service iptables restart
答案2
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
答案3
解决方法是在“/etc/sysconfig/iptables”中添加此规则,然后重新启动 iptables
-I INPUT -d 192.168.59.142 -p tcp --dport 80 -j ACCEPT
答案4
作为替代方案,CentOS 还有配置工具system-config-firewall
,这使得打开 Web 服务器端口变得非常容易。
在 ncurses 界面中,选择“自定义”并勾选“WWW (HTTP)”。
在我的 CentOS 6.4 系统上,它添加了以下规则/etc/sysconfig/iptables
:
-A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT