為什麼我收到「連線被拒絕」?

為什麼我收到「連線被拒絕」?

我正在 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

檢查是否可以透過 public up 存取它。如果可以,那麼您需要檢查route53是否配置正確。如果您不能使用公用 IP,則新增防火牆規則以允許流量。 https://linuxdiaryblog.blogspot.com/2020/06/add-firewall-exception-to-port.html?m=1

相關內容