我试图让互联网stream量端口7778在我的服务器上,但无法做到这一点。 可能在这里犯了一些菜鸟的错误。 你能帮我诊断和解决这个问题吗?
我只是做了以下几点:
sudo iptables -A TCP -p tcp -m tcp --dport 7778 -j ACCEPT
如果我做iptables -S ,我会看到列表中附加的规则,例如:
-A TCP -p tcp -m tcp --dport 22 -j ACCEPT -A TCP -p tcp -m tcp --dport 80 -j ACCEPT -A TCP -p tcp -m tcp --dport 443 -j ACCEPT -A TCP -p tcp -m tcp --dport 7778 -j ACCEPT
但是,如果我从另一台服务器 – telnet example.com 7778 ping这个特定的端口,我看到:
telnet:无法连接到远程主机:连接被拒绝
我还能在这里做什么? 端口443和22工作正常。
注意:我的服务器使用Azure基础结构(经典VM)。 我采取的额外步骤是在Azure门户中为端口7778添加endpoint 。 因此这部分被覆盖。
通过使用-A开关,您将规则添加到链的末尾。 这几乎肯定会把它放在丢弃/阻塞数据包的规则之后。
当iptables / netfilter正在检查,看看应该如何处理数据包。 第一个匹配胜。 在你的情况下,它可能会匹配一个类似于-A INPUT -j REJECT --reject-with icmp-port-unreachable ,这将导致连接被拒绝的消息之前匹配您的允许消息。
解决方法是使用-I将规则插入INPUT链中适当的位置。
根据错误日志,似乎你的服务不听。
为了更有效地解决这个问题,我build议检查如下:
1.检查虚拟机中的服务。
netstat -ant | grep 7778
请确保端口正在侦听。
telnet 127.0.0.1 7778
据我所知,如果你的防火墙有一些缺失的configuration,你会得到以下错误。
telnet:无法连接到远程主机:连接超时