我正在尝试在我的 VPS 上打开一个额外的传出端口(端口 5900)。
这是我的 /etc/sysconfig/iptables:
# Generated by iptables-save v1.3.5 on Sun Jul 10 11:27:12 2011
*mangle
:PREROUTING ACCEPT [68:4952]
:INPUT ACCEPT [68:4952]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [60:7060]
:POSTROUTING ACCEPT [60:7060]
COMMIT
# Completed on Sun Jul 10 11:27:12 2011
# Generated by iptables-save v1.3.5 on Sun Jul 10 11:27:12 2011
*filter
:INPUT ACCEPT [68:4952]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [60:7060]
:RH-Firewall-1-INPUT - [0:0]
-A RH-Firewall-1-INPUT -p tcp -m state --state NEW -m tcp --dport 5900 -j ACCEPT
COMMIT
# Completed on Sun Jul 10 11:27:12 2011
# Generated by iptables-save v1.3.5 on Sun Jul 10 11:27:12 2011
*nat
:PREROUTING ACCEPT [18:1080]
:POSTROUTING ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
COMMIT
# Completed on Sun Jul 10 11:27:12 2011
然而,5900端口仍然关闭。
有人能帮我吗?谢谢。
答案1
我假设您的意思是“传入”,而不是“传出”端口 5900,因为您的传出端口已根据当前规则正确打开。
通常我会摆脱 RH-Firewall-1-INPUT 链并使用以下命令:
*filter
:INPUT DROP [0:0]
:FORWARD DROP [0:0]
:OUTPUT ACCEPT [0:0]
# Allow traffic from the loopback interface
-A INPUT -i lo -j ACCEPT
# Allow ICMP traffic as it helps with connection diagnostics
-A INPUT -p icmp --icmp-type any -j ACCEPT
# Allow traffic from already existing connections
-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
# Allow connections on port 5900
-A INPUT -p tcp --dport 5900 -m state --state NEW -j ACCEPT
COMMIT
但如果您想尽可能接近原始 CentOS 配置,您可以尝试以下操作:
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
:RH-Firewall-1-INPUT - [0:0]
-A INPUT -j RH-Firewall-1-INPUT
-A FORWARD -j RH-Firewall-1-INPUT
-A RH-Firewall-1-INPUT -i lo -j ACCEPT
-A RH-Firewall-1-INPUT -p icmp -m icmp --icmp-type 255 -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A RH-Firewall-1-INPUT -m tcp -p tcp --dport 22 -m state --state NEW -j ACCEPT
-A RH-Firewall-1-INPUT -m tcp -p tcp --dport 5900 -m state --state NEW -j ACCEPT
-A RH-Firewall-1-INPUT -j REJECT --reject-with icmp-host-prohibited
COMMIT
您当前规则集的问题在于您没有将所有传入流量发送到 RH-Firewall-1-INPUT 链,这可以通过以下行完成:
-A INPUT -j RH-Firewall-1-INPUT
另外,不要忘记使用以下命令重新加载规则服务 iptables 重启。
答案2
您的输出链上的策略是接受。您的配置中没有拒绝端口 5900 上输出的规则。
您确定有东西在监听 5900 端口吗?
尝试
sudo lsof -l :5900
或者
sudo netstat -an | grep LISTEN | grep 5900
看看附加了什么(如果有的话)。
答案3
如果这是用于 VNC 并且您的 VPS 托管在 Amazon 上,那么请确保也打开 Amazon 安全组中的安全限制(默认情况下 Amazon 只允许端口 22 和 80)。
输出端口通常不会被阻塞——因此在发起连接的主机上可能无需执行任何操作。
此外,5900 的防火墙规则应该位于接收主机(即您的 VPS),我猜它看起来应该是这样的;
-A INPUT -p tcp -m tcp -m state --dport 5800 --state NEW -j ACCEPT
但还要检查 IP 是否来自您的网络而不是来自互联网(向公众开放 VNC 可能不安全)。
最后,如果您的组织也有防火墙,您可能需要检查防火墙是否阻止未经授权的端口上的传出连接。