
たとえば、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