如何调试端口/连接问题?

如何调试端口/连接问题?

我在 Amazon EC2(Fedora Core)上运行一个简单的 WebSocket 服务器。我使用 ec2-authorize 打开了相关端口,并检查它是否已打开。Iptables 肯定没有运行。但是我无法从 EC2 外部连接到该端口。

我尝试了以下操作(我的服务器在端口 7000 上运行):

telnet ec2-public-dns.xx.xx.xx.amazon.com 7000  

(从 EC2 内部:连接良好)

nmap localhost

(输出包括行:7000/tcp open afs3-fileserver)

telnet ec2-public-dns.xx.xx.xx.amazon.com 7000  

(这次是从我的本地机器:我收到“连接被拒绝:无法连接到远程主机”)

奇怪的是:如果我在端口 7000 上启动 Nginx,那么它就可以工作,我可以从 EC2 外部进行连接!而 WebSocket 服务器在端口 80 上失败,而 Nginx 在该端口上工作正常。

对我来说,这表明 WebSocket 服务器存在问题,但我可以从 EC2 内部成功连接到它。(并且它在不同的 VPS 帐户上运行良好)。

我该如何进一步调试?如果有人能阻止我抓狂,我将不胜感激 :)

答案1

您的服务是否可能仅在环回接口上监听?

在你的亚马逊盒子上运行

netstat -lanp|grep LISTEN|grep 7000 

你期望得到如下结果:

tcp        0      0 0.0.0.0:7000              0.0.0.0:*               LISTEN      2216/abc

而不是

tcp        0      0 127.0.0.1:7000          0.0.0.0:*               LISTEN      13798/abc

相关内容