EADDRNOTAVAIL только при использовании экземпляра EC2

введите здесь описание изображения

введите здесь описание изображения

введите здесь описание изображения

Приложение моего узла прослушивает порт 8080. Когда я добавляю

app.listen(port,'50.30.217.289');

Я могу получить доступ к приложению из браузера. Но когда я заменяю IP-адрес эластичным IP-адресом моего экземпляра EC2, я получаю сообщение об ошибке:

EADDRNOTAVAIL

Как это исправить ?


person dpm    schedule 10.01.2016    source источник
comment
Я написал сообщение в блоге об одном способе настройки nginx, чтобы сделать сервер разработки доступным из экземпляра EC2: bitsumma.com/2018/11/07/   -  person Alex Reynolds    schedule 07.11.2018


Ответы (2)


То, что вы пытаетесь сделать, не работает в EC2.

Общедоступный IP-адрес сопоставляется с основным частным IP-адресом посредством преобразования сетевых адресов (NAT).

http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/using-instance-addressing.html

Если вы изучите свои сетевые интерфейсы на машине, вы не найдете на них общедоступных IP-адресов. Общедоступные IP-адреса транслируются в частные адреса на интернет-шлюзе. Это делается автоматически без необходимости настройки, для экземпляров с общедоступными IP-адресами.

Чтобы привязать службу к определенному общедоступному адресу, вы привязываете ее к соответствующему частному IP-адресу самого экземпляра.

person Michael - sqlbot    schedule 11.01.2016
comment
То есть это означает, что мой сервер узла на экземпляре ec2 должен работать на частном IP-адресе, в то время как другие браузеры в Интернете должны иметь доступ к экземпляру с использованием гибкого IP-адреса, верно? - person dpm; 11.01.2016
comment
Извините, но я до сих пор не понимаю, как решить эту проблему. - person dpm; 11.01.2016
comment
На ваш вопрос: да, точно. Привязать к частному адресу. - person Michael - sqlbot; 11.01.2016
comment
Это тоже не помогает. Это только заставляет приложение работать на виртуальной машине, но по-прежнему не предоставляет к нему публичный доступ. Моя проблема связана с общественным решением. Кроме того, позже, когда я попытался подключиться к серверу по ssh, время ожидания соединения истекло. - person dpm; 11.01.2016
comment
Так это делается в EC2. Если это не работает, у вас есть проблема с настройками группы безопасности, или вы не используете общедоступный IP-адрес, который фактически связан с вашим экземпляром, или вы используете несколько общедоступных IP-адресов в одном экземпляре, и у вас нет чего-то вроде политика маршрутизации настроена правильно. - person Michael - sqlbot; 11.01.2016
comment
Группа безопасности, которую я создал и связал с ней, имеет разрешения на входящий трафик для HTTP, SSH, RDP, HTTPS и настраиваемое правило для порта 8080. Я также добавил общее правило для всего трафика на всех портах из всех источников. - person dpm; 11.01.2016

EADDRNOTAVAIL означает, что у вашего экземпляра EC2 нет сетевого интерфейса с назначенным IP-адресом, поэтому вы не можете начать его прослушивание.

person mscdex    schedule 10.01.2016
comment
Обновил пост скриншотом. У меня есть сетевой интерфейс, связанный с эластичным IP-адресом, указанным как общедоступный IP-адрес. - person dpm; 11.01.2016
comment
На вашем снимке экрана не показан этот конкретный IP-адрес. В любом случае, вы должны дважды проверить что-то вроде ifconfig на реальном сервере, чтобы быть более уверенным. - person mscdex; 11.01.2016
comment
я добавил больше скриншотов. Сетевой интерфейс и эластичный IP-адрес связаны. Также результат для ipconfig на сервере. У меня много времени на это, и я был бы признателен за любую помощь. Благодарность - person dpm; 11.01.2016
comment
Я думаю, что вы все еще смотрите на неправильный IP-адрес. В исходном коде, который вы разместили, вы пытаетесь использовать «50.30.212.245», но на ваших снимках экрана вы показываете «52.27.160.173». - person mscdex; 11.01.2016
comment
50.30.212.245 — это IP-адрес машины, которую я использую. 52.27.160.173 — это IP-адрес экземпляра ec2. Я хочу, чтобы он работал для моего экземпляра ec2. Я получаю указанную выше ошибку для IP-адреса ec2. - person dpm; 11.01.2016
comment
Ах, хорошо, я неправильно понял ваш вопрос. Итак, вы уверены, что в выводе ipconfig указано «52.27.160.173»? На вашем снимке экрана показаны только частный IP-адрес и адрес IPv6. - person mscdex; 11.01.2016
comment
Нет. '52.27.160.173' не появляется в результате. На снимке экрана показаны все выходные данные ipconfig. Значит, общедоступный IP-адрес не установлен? - person dpm; 11.01.2016
comment
Правильный. Вам необходимо назначить 52.* IP-адрес интерфейсу, если вы хотите начать прослушивание этого адреса. - person mscdex; 11.01.2016