
Я запускаю http-сервер hello-world на экземпляре ubuntu EC2, скажем, 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 прослушивает порт 631 только на локальном хосте (127.0.0.1), и даже если брандмауэр/SG разрешит этот порт, он не будет доступен извне.
Надеюсь, это поможет :)
решение2
Проверьте, можете ли вы получить к нему доступ с помощью public up. Если можете, то вам нужно проверить, правильно ли настроен route53. Если вы не можете получить доступ и с public ip, то добавьте правило брандмауэра, чтобы разрешить трафик. https://linuxdiaryblog.blogspot.com/2020/06/add-firewall-exception-to-port.html?m=1