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