为什么我会收到“连接被拒绝”的消息?

为什么我会收到“连接被拒绝”的消息?

我在 ubuntu EC2 实例上运行一个 hello-world http 服务器,比方说。myurl.com我无法curl从我的客户端访问它:

$ curl myurl.com:4296                     
curl: (7) Failed to connect to myurl.com port 4296: Connection refused

当我尝试访问任何其他端口时,我的连接超时:

$ curl myurl.com:4244                   
curl: (7) Failed to connect to myurl.com port 4244: Operation timed out

我在 AWS 上有以下入站规则:

在此处输入图片描述

我可以在服务器上卷曲它:

$ curl localhost:4296
Hello World

我的网络状态:

$ netstat -a | grep 4296
tcp        0      0 localhost:4296          0.0.0.0:*               LISTEN   

我究竟做错了什么?

答案1

端口 4296 上的进程仅侦听本地主机 / 127.0.0.1地址,因此无法从外部访问。您必须更改配置(或程序本身,如果是您编写的程序)才能监听0.0.0.0- 这将使它继续监听全部地址。

以下是我的系统中的一个例子:

~ # netstat -tnlp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address    Foreign Address   State       PID/Program name    
tcp        0      0 0.0.0.0:22       0.0.0.0:*         LISTEN      1311/sshd           
tcp        0      0 127.0.0.1:631    0.0.0.0:*         LISTEN      1183/cupsd          

这里 SSH 在所有地址上监听端口 22,因此可以从外部访问(当然,如果防火墙和 SG 允许的话)。

另一方面,CUPS 仅在本地主机(127.0.0.1)上监听端口 631,即使防火墙/SG 允许该端口,也无法从外部访问。

希望有帮助:)

答案2

检查您是否可以通过公共 IP 访问它。如果可以,则需要检查 route53 是否配置正确。如果无法通过公共 IP 访问,则添加防火墙规则以允许流量。 https://linuxdiaryblog.blogspot.com/2020/06/add-firewall-exception-to-port.html?m=1

相关内容