无法在 CentOS 5 上的 iptables 中打开端口?

无法在 CentOS 5 上的 iptables 中打开端口?

我正在尝试打开 CentOS 防火墙中的端口,但结果很糟糕。我按照以下“操作方法”操作:http://wiki.centos.org/HowTos/Network/IPTables以及网络上的其他几个地方,但我仍然无法让它工作。

基本上,我想让两个东西工作:内部网络上的 VNC 和 Apache。问题是防火墙阻止了所有连接到这些服务的尝试。现在,如果我发出

 service iptables stop

然后尝试通过 VNC 访问服务器或访问网络服务器,一切正常。但是,当我重新打开 iptables 时,我的所有访问都被阻止了。下面是我的 iptables 文件的截断版本,它在 vi 中显示

 -A RH-Firewall-1-INPUT -p tcp -m state --state NEW -m tcp --dport 5801 -j ACCEPT
 -A RH-Firewall-1-INPUT -p tcp -m state --state NEW -m tcp --dport 5901 -j ACCEPT
 -A RH-Firewall-1-INPUT -p tcp -m state --state NEW -m tcp --dport 6001 -j ACCEPT
 -A RH-Firewall-1-INPUT -p tcp -m state --state NEW -m tcp --dport 5900 -j ACCEPT
 -A RH-Firewall-1-INPUT -p tcp -m state --state NEW -m tcp --dport 80 -j ACCEPT

真的,如果我可以为 Apache 打开 80 端口,我会很高兴,因为我可以通过 putty 做大多数事情,但如果我也能搞清楚 VNC,那就太棒了。就 VNC 而言,我尝试连接的只有一个用户桌面:[ipaddress]:1

任何帮助将不胜感激!

答案1

假设您没有上述任何 REJECT/DROP 语句,那么您对内部网络所需要做的就是执行如下语句(假设您在 10.1.1.x 上并且想要该范围内的所有主机):

-A RH-Firewall-1-INPUT -s 10.1.1.0/24 -p tcp -m state --state NEW -m tcp --dport 80 -j ACCEPT

并针对每个附加端口执行此操作。检查文件顶部并确保 :RH-Firewall-1-INPUT - [0:0]存在,否则请使用标准-A INPUT

!请记住,iptables 是从上到下进行处理的。!

如果这不起作用,请发布您的整个会议记录或将 DROP 或 REJECT 行移至文件末尾(但在 COMMIT 上方)。

确保之后进行/sbin/service iptables reload

答案2

cHao 要求更多 iptables 的做法是正确的。由于无知,我没有意识到 iptables 中条目的位置很重要(尽管由于它们是链,我应该注意到这一点)。无论如何,问题是我的所有行都落在了这一行之后:

 -A RH-Firewall-1-INPUT -j REJECT --reject-with icmp-host-prohibited

一旦我将它们移到上述行之前,一切就都正常工作了。

答案3

看起来规则将允许新的传入连接请求,但不允许来自现有连接的数据。如果您删除-m state --state NEW端口 80(您列出的最后一行),或者为所有端口的 ESTABLISHED 和 RELATED 连接添加规则,它应该使端口 80 可用。

相关内容