「接続が拒否されました」というメッセージが表示されるのはなぜですか?

「接続が拒否されました」というメッセージが表示されるのはなぜですか?

たとえば、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 を実行できます:

$ 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

関連情報