Экземпляр EC2 не имеет публичного DNS

299

Парень, с которым я работаю, дал мне учетные данные EC2 для входа на консоль EC2. Я не был тем, кто это настраивал. Некоторые экземпляры показывают публичное имя DNS, а другие имеют пустой публичный DNS. Я хочу иметь возможность подключаться к экземплярам, ​​которые имеют пустой публичный DNS. Я не смог понять, почему они отображаются как пустые.

user1456508
источник
2
Находятся ли экземпляры внутри VPC? Проверьте, есть ли значение рядом с полем ID VPC на экране описания экземпляра.
Дэвид Левеск
1
У меня та же проблема. Мои экземпляры находятся внутри VPC, и в подсети я проверил общедоступный DNS на доступность. Тем не менее я не получаю публичных DNS-имен. Я вижу, что в моей конфигурации VPC это говорит DNS hostnames: no, но я не могу изменить это значение, и добавление нового VPC также не дает мне выбора.
гаечный ключ
У меня другая проблема при настройке my-vpc , The DNS hostname: yes, но при запуске экземпляра используется только Private ID. Я могу получить Public IP только при использовании Elastic IP.
Четабахана
1
Что помогло мне, так это остановка и запуск экземпляра без публичного IP / DNS (перезагрузка не помогла). После того, как экземпляр был перезапущен, он получил публичный IP.
Юстадев

Ответы:

613

У меня была та же проблема, и я решил ее. Посмотрите на пошаговые инструкции:

  • Перейти к console.aws.amazon.com
  • Перейти к услугам -> VPC
  • Откройте ваши VPC
  • выберите ваш VPC, подключенный к вашему EC2 и
  • выберите Действия => Изменить имена хостов DNS ---> Изменить имена хостов DNS: на ДА

Надеюсь это поможет!

ура

Мат
источник
6
Это лучший ответ. Это должно быть проверено!
Альберто Спелта
2
Раздел, содержащий VPC, теперь называется Networking. И чтобы редактировать, вы щелкаете правой кнопкой мыши на VPC.
нащий
89
+1 теперь вам также нужно настроить свою подсеть, чтобы разрешить автоматическое назначение публичного ip. Щелкните правой кнопкой мыши свою подсеть> измените автоматическое назначение общего IP-адреса> установите флажок
Адам Эй,
1
Даже когда я пытался добавить Elastic Ip, он не работал, пока для этой опции для изменения имен хостов dns не было установлено значение yes.
RenatoSz
5
@ Vignesh Я не получил публичный IP или DNS для существующих экземпляров. Остановка и перезапуск ничего не изменили. Единственное, что сработало, - это завершить и воссоздать экземпляр.
Д е з
59

На самом деле в VPC есть настройка, называемая «DNS-имена хостов». Вы можете изменить VPC, в котором существует экземпляр EC2, и изменить его на «Да». Это должно делать свое дело.

Я столкнулся с этим вопросом вчера и попробовал вышеуказанный ответ от Мэнни, который не сработал. Установка VPC, однако, сделал работу для меня.

В конечном итоге я добавил EIP и использую его для подключения.

Майк Т
источник
1
Есть ли способ сделать это без изменения VPC в целом? Мне нужен общедоступный DNS для одного узла в VPC, но я не хочу, чтобы он применялся ко всем другим узлам с эластичным IP-адресом в этом VPC.
Робби Аверилл
2
Я думаю, вы должны иметь возможность добавить эластичный IP только для этого узла, не так ли?
Майк Т
Да, но это не разрешится внутренне без вашего предложения в ответе :-)
Робби Аверилл
используя «DNS Hostnames», я могу видеть общедоступный DNS
Sujit Dhamale,
38

Похоже, экземпляр был запущен в VPC, и при этом флажок Automatically assign a public IP address to your instancesне был установлен. Следовательно, экземпляр не имеет публичного IP

Вы можете назначить Elastic IP этому экземпляру и затем войти в систему, используя этот IP.

slayedbylucifer
источник
1
Я попытался соединиться, используя публичный IP с замазкой. но он сказал "сервер отказался от нашего ключа". Я преобразовал файл .pem в файл .ppk, используя puttygen
user1456508
1
какое имя пользователя вы используете? что это за AMI? какая это операционная система?
slayedbylucifer
3
Есть ли способ назначить публичный IP по факту? Я не вижу способа изменить настройки сведений об экземпляре.
Давид Балажич
2
@slayedbylucifer А как насчет остановленного экземпляра?
Давид Балажич
3
@ DavidBalažic, То же самое. для жизненного цикла экземпляра вы не можете прикрепить IP-адрес паба. Паб IP можно прикрепить только во время запуска.
Slayedbylucifer
30

В моем случае я нашел ответ от slayedbylucifer и других, которые указывают на то же самое.
Даже если установлено, что DNS hostname: yesобщедоступный IP-адрес не назначен для my-pvc (только для приватного IP-адреса).

Это определенно, что Auto назначения Public IP должен быть установлен Enable.
Если он не выбран, то по умолчанию устанавливаетсяUse subnet setting (Disable)

Назначить публичный IP

Chetabahana
источник
23
  1. Перейдите в Консоль AWS.
  2. Зайдите в Сервисы и выберите VPC
  3. Нажмите на VCP.
  4. выберите экземпляр и нажмите «Действие».
  5. Выберите «Изменить имя хоста DNS», нажмите «Да».

В конце вы получите ваш публичный днс.

Джитендра Бхалотия
источник
добавление Public DNS в VPC вместе с назначенным Elastic IP работает. По какой-то причине эластичный IP-адрес можно пропинговать из внешнего мира через группу безопасности, но сбой веб-приложения, такого как Solr, не удался, если не назначен общедоступный DNS-сервер.
false_memories
22

Это совет, предоставленный для решения проблемы, которая не работает:

Совет. Если у вашего экземпляра нет общедоступного DNS-имени, откройте консоль VPC, выберите VPC и откройте вкладку Сводка. Если разрешение DNS или имена хостов DNS - нет, нажмите «Изменить» и измените значение на «да».

Предполагая, что вы сделали это, но вы все еще не получаете публичный IP, перейдите к соответствующей подсети на экране администратора VPC, и вы, вероятно, обнаружите, что для «Автоматическое назначение публичного IP» не установлено значение «да». Затем измените этот параметр, и я знаю, что вы не хотите здесь это создавать новый экземпляр в этой подсети. Насколько я могу сказать, вы не можете изменить это на хосте, я пытался и пытался, просто прекратить его.

Билл Паркер
источник
22

Для меня проблема была в настройках подсети.

  1. Откройте https://console.aws.amazon.com/vpc
  2. Перейти в подсети в левом меню
  3. Выберите свою подсеть
  4. Изменить автоматическое назначение настроек IP, чтобы включить
Neftanic
источник
14

Это связано с функцией VPC под названием «DNS-имена хостов». Вы можете включить или отключить его. Перейдите в VPC, в меню «Действия» выберите пункт «Изменить имена хостов DNS», а затем выберите «Да». После этого должен отображаться общедоступный DNS экземпляров EC2.

Лиор Киршнер
источник
Могу ли я использовать свои собственные имена? Потому что, когда я отправляю электронные письма из моего экземпляра, Gmail показывает отправленные по адресу ec2..ip адрес ... location..etc вместо моего доменного имени
mrid
@mrid вам нужно связать свой DNS с созданным DNS в EC2. Вы можете сделать это с помощью сервиса AWS Route53, нашего менеджера хостинга / DNS.
Лиор Киршнер
10

Просто запустите другой экземпляр (а также удалите тот, о котором идет речь, если он не используется) и убедитесь, что на этот раз вы отметили «Автоматически назначать публичный IP-адрес вашему экземпляру». Если нет, то как предположил slayedbylucifer; назначьте Elastic IP (EIP) экземпляру, а затем войдите в систему, используя этот IP. Однако будьте осторожны, если вы используете бесплатный уровень AWS, EIP будет стоить вам денег - это целая другая тема.

Мэнни Фернандес
источник
6

Прежде всего, для этого может быть две причины:

  1. Вы создали свой собственный VPC и забыли включить Public DNS.

Чтобы решить это:

i) Перейдите в консоль AWS VPC и выберите созданный вами VPC.

ii) Затем нажмите Действия и затем включите Разрешение DNS.

            OR
  1. Вы не включили публичную опцию ip-assign в конфигурации EC2.

Здесь вы не можете изменить настройку; поэтому создайте образ ami, а затем воссоздайте экземпляр из этого.

Патрик Р
источник
Это две из многих возможных причин, безусловно, не единственные две возможности.
Madbreaks
6

Здесь я обобщу наиболее распространенные проблемы, которые возникают:

Когда вы создаете пользовательский VPC, если вы хотите, чтобы ресурсы aws, такие как экземпляры ec2, получали общедоступные IP-адреса, чтобы Интернет мог взаимодействовать с ними, сначала вы должны убедиться, что экземпляр ec2 связан с общедоступной подсетью пользовательского VPC. Это означает, что с подсетью связан интернет-шлюз. Также необходимо убедиться, что в группе безопасности VPC, связанной с экземпляром ec2, есть правила, разрешающие входящий трафик на нужные порты, такие как ssh, http и https. НО вот некоторые общие упущения, которые все еще происходят:

1) Вы должны убедиться, что DNS-имена хостов включены для VPC

2) Необходимо убедиться, что в общедоступной подсети, связанной с экземпляром EC2, включен флаг «Автоматическое назначение публичного IP».

3) Если экземпляр уже создан, вам может потребоваться прервать его и создать новый экземпляр для заполнения общедоступных полей IP и общедоступных DNS.

Донато
источник
Как только этот публичный ip виден в запущенном экземпляре, мы можем использовать этот IP для подключения экземпляра через SSH-
замазку
5

После проверки параметров VPC и Subnet у моего экземпляра EC2 все еще не было общедоступного DNS. После дня поиска решения я наконец понял это.

Мне пришлось создать новый Elastic IP-адрес, а затем связать его с моим экземпляром.

С панели управления EC2:

Перейдите на Elastic IPs из боковой панели.

Нажмите Выделить новый адрес , затем Выделите .

Вернитесь к приборной панели EC2. Перейти к сетевым интерфейсам .

Выберите экземпляр EC2 без общедоступного DNS. Тогда Действия - Ассоциированный Адрес .

В поле Адрес выберите новый эластичный IP-адрес.

В поле « Связать с частным IP-адресом» выберите частный IP-адрес без общедоступного DNS.

Нажмите Связать адрес .

Ваш экземпляр EC2 теперь должен иметь публичный DNS.

BenR
источник
1
Это был ответ для меня. Мой VPC уже настроен для включения публичного DNS.
Меликент
Общий DNS отображается, но все еще не может подключиться через scp / putty. показывает время ожидания подключения!
ShivarajRH
2

Изменить настройку DNS-имен хостов также можно с помощью интерфейса командной строки AWS:

aws ec2 modify-vpc-attribute --vpc-id $vpc_id --enable-dns-hostnames '{"Value": true}'

(Где $ vpc_id - это идентификатор VPC, к которому прикреплен ваш экземпляр.)

Как только VPC обновляется, экземпляр получает общедоступный DNS.

Пол Притчард
источник
2

Для тех, кто использует CloudFormation, ключевыми свойствами являются EnableDnsSupport и EnableDnsHostnames, которые должны быть установлены в true

VPC: {
    Type: 'AWS::EC2::VPC',
    Properties: {
      CidrBlock: '10.0.0.0/16',
      EnableDnsSupport: true,
      EnableDnsHostnames: true,
      InstanceTenancy: 'default',
      Tags: [
        {
          Key: 'env',
          Value: 'dev'
        }]
    }
  }

источник
Полезный ответ, спасибо. К сведению, по умолчанию для EnableDnsSupport установлено значение true, поэтому обычно достаточно указать EnableDnsHostnames: true.
Джармод
1

Если экземпляр находится в VPC, убедитесь, что для параметра «Разрешение DNS» и «Имена узлов DNS» установлено значение «Да». Вы можете сделать это в пользовательском интерфейсе консоли Aws. НТН!

Trunal Bhanse
источник
1

Перейдите в консоль VPC, выберите свой VPC и нажмите меню «ДЕЙСТВИЯ», ​​выберите «Изменить имена хостов DNS» - выберите «Да». Это должно исправить это.

Kingz
источник
0

Я попытался исправить «нет общедоступного DNS», как только EC2 был запущен, я не мог добавить общедоступный DNS

это даже после выполнения описанных выше шагов, делая моды для VPC или подсети

Итак, мне пришлось внести изменения в подсеть и vpc, прежде чем запускать другой экземпляр, а затем запустить новый экземпляр.

новый экземпляр имел публичный DNS. Вот как это работает для меня.

1082E1984
источник