我在 VPS 上运行 CentOS,并采用以下 iptables 配置
-P INPUT ACCEPT
-P FORWARD ACCEPT
-P OUTPUT ACCEPT
-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 -p tcp -m state --state NEW -m tcp --dport 53 -j ACCEPT
-A INPUT -p udp -m state --state NEW -m udp --dport 53 -j ACCEPT
-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A INPUT -p tcp -m tcp --dport 110 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 143 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 993 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 995 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 80 -j ACCEPT
-A FORWARD -j REJECT --reject-with icmp-host-prohibited
-A OUTPUT -p tcp -m state --state NEW -m tcp --sport 53 -j ACCEPT
-A OUTPUT -p udp -m state --state NEW -m udp --sport 53 -j ACCEPT
-A OUTPUT -p tcp -m tcp --dport 110 -j ACCEPT
-A OUTPUT -p tcp -m tcp --dport 143 -j ACCEPT
-A OUTPUT -p tcp -m tcp --dport 993 -j ACCEPT
-A OUTPUT -p tcp -m tcp --dport 995 -j ACCEPT
-A OUTPUT -p tcp -m tcp --sport 80 -j ACCEPT
这里有什么会导致端口 25、80、110、143、993 和 995 无法访问吗?从我的 VPS 内部通过 Telnet 连接到这些端口是telnet localhost <portnumber>
可行的,所以我确定服务正在运行。但是尝试从我的本地计算机 telnet 到它们时,却显示
Connection refused
telnet: Unable to connect to remote host
通过我的本地机器只能访问端口 22 和 53。
答案1
您是否尝试过-A INPUT -j REJECT --reject-with icmp-host-prohibited
在 ACCEPT 规则之后添加规则?看起来这条规则会阻止所有端口,即使您有端口规则,iptables 也不会打开它们。