Екземпляр EC2 не має загальнодоступних DNS


299

Хлопець, з яким я працюю, дав мені облікові дані EC2, щоб увійти на його консоль EC2. Я не був тим, хто це налаштував. Деякі екземпляри показують загальнодоступне ім’я dns, а інші мають порожній загальнодоступний DNS. Я хочу мати можливість підключитися до примірників, які мають порожній загальнодоступний DNS. Я не зміг зрозуміти, чому вони відображаються як порожні.


2
Чи є екземпляри всередині VPC? Перевірте, чи є значення біля поля ідентифікатора VPC на екрані опису екземпляра.
Девід Левеск

1
У мене така ж проблема. Мої екземпляри знаходяться всередині VPC, і в підмережі я перевірив, чи доступний загальнодоступний DNS. Досі я не отримую публічних імен DNS. Я бачу, що в моїй конфігурації VPC це говорить DNS hostnames: no, але я не можу змінити це значення, і додавання нового VPC також не дає мені вибору.
Гайковий ключ

У мене виникають різні проблеми при налаштуванні my-vpc , The DNS hostname: yes, але це лише Private ID при запуску екземпляра. Я можу отримати публічний IP лише тоді, коли використовується еластичний IP.
Четабахана

1
Що мені допомогло - зупинка та запуск для екземпляра без загальнодоступних IP / DNS (перезавантаження не допомогло). Після того, як екземпляр був перезапущений, він отримав публічну IP-адресу.
justadev

Відповіді:


612

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

  • Перейдіть на console.aws.amazon.com
  • Перейдіть до Сервісів -> VPC
  • Відкрийте свої VPC
  • виберіть VPC, підключений до EC2 та
  • виберіть Дії => Редагувати імена хостів DNS ---> Змінити імена хостів DNS: на ТАК

Сподіваюсь, це допомагає!

Ура


6
Це найкраща відповідь. Це слід перевірити!
Альберто Спелта

2
Розділ, що містить VPC, тепер називається Мережевий. А для редагування ви клацніть правою кнопкою миші на VPC.
нащ

89
+1 вам також зараз потрібно встановити вашу підмережу, щоб дозволити автоматичне призначення загальнодоступних ip. Клацніть правою кнопкою миші вашу підмережу> змінити автоматичне призначення публічного ip> встановіть прапорець
Адам Ей,

1
Навіть коли я намагався додати Elastic Ip, він не працював, поки для цього параметра зміни імен вузлів dns не було встановлено так.
RenatoSz

5
@Vignesh Я не отримав відкритий IP або DNS для існуючих примірників. Зупинка та перезапуск нічого не змінили. Єдине, що працювало - це припинити і відтворити екземпляр.
Y e z

59

В VPC насправді є налаштування під назвою "Імена хостів DNS". Ви можете змінити VPC, в якому існує екземпляр EC2, і змінити це на "Так". Це повинно зробити трюк.

Я вчора зіткнувся з цим питанням і спробував вищевказану відповідь від Менні, яка не спрацювала. Установка VPC, однак, зробив роботу для мене.

Зрештою я додав EIP і використовую це для підключення.


1
Чи є спосіб зробити це без зміни VPC в цілому? Я хочу публічний DNS для одного вузла в VPC, але не хочу, щоб він застосовувався до всіх інших вузлів з еластичним IP в цій VPC.
Роббі

2
Я думаю, ви повинні мати можливість додати еластичний IP для саме цього вузла, ні?
Майк T

Так, але це не вирішиться внутрішньо без вашої пропозиції у відповіді :-)
Роббі Аверілл

використовуючи "Імена хостів DNS", я можу побачити Public DNS
Sujit Dhamale

38

Схоже, екземпляр був запущений у VPC, і при цьому, прапорець для Automatically assign a public IP address to your instances не було встановлено. Отже, екземпляр не має публічної IP-адреси

Ви можете призначити цьому еластичному IP-адресу, а потім увійти за допомогою цього IP-адреси.


1
Я спробував з'єднатись із загальнодоступним ip із шпаклівкою. але він сказав, що "сервер відмовився від нашого ключа". Я перетворив .pem файл у .ppk файл за допомогою
puttygen

1
яке ім’я користувача ви використовуєте? який це AMI? що це за операційна система?
вбивство

3
Чи є спосіб призначити публічний ІС після факту? Я не бачу способу редагувати параметри деталей екземпляра.
Давид Балажич

2
@slayedbylucifer Що з зупиненим екземпляром?
Девід Балажич

3
@ DavidBalažic, ж. для життєвого циклу примірника ви не можете приєднати IP pub. IP-версію Pub можна приєднати лише на момент запуску.
вбитоїблуцифер

30

У моєму випадку я виявив, що відповідь slayedbylucifer та інші, які вказують на те, є дійсними.
Навіть встановлено, що DNS hostname: yesжоден публічний IP не призначається на моєму-pvc (лише приватний IP).

Це, безумовно , що Auto правонаступник Public IP повинен бути встановлений Enable.
Якщо вона не вибрана, то за замовчуванням встановлюється значенняUse subnet setting (Disable)

Призначити публічний IP


23
  1. Перейдіть на консоль AWS.
  2. Перейдіть до Сервісів та виберіть VPC
  3. Натисніть на vpc.
  4. виберіть екземпляр і натисніть Дія.
  5. Виберіть "Змінити ім'я хоста DNS", натисніть "Так".

Наприкінці ви отримаєте ваш Public 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-налаштувань, щоб увімкнути

14

Він пов'язаний з функцією VPC під назвою "Імена хостів DNS". Ви можете ввімкнути або вимкнути його. Перейдіть до VPC, у меню "Дії" виберіть пункт "Редагувати імена хостів DNS" та виберіть "Так". Після цього слід відкрити загальнодоступний DNS екземплярів EC2.


Чи можу я використовувати власні імена? Тому що, коли я відправити електронну пошту від мого екземпляра, показує Gmail відправити поштою ec2..ip адресу ... location..etc замість мого доменного імені
mrid

@mrid вам потрібно пов’язати свій DNS з генерованим DNS EC2. Ви можете зробити це за допомогою сервісу AWS Route53, нашого менеджера хостингу / DNS.
Ліор Кіршнер

10

Просто запустіть інший екземпляр (а також видаліть відповідний, якщо він не використовує) та переконайтеся, що цього разу ви поставите прапорець "Автоматично призначити загальнодоступну IP-адресу вашому екземпляру". Якщо ні, то, як запропоновано вбивством; призначити екземпляр Elastic IP (EIP), а потім увійти за допомогою цього IP. Але будьте обережні, якщо ви користуєтеся безкоштовним рівнем AWS, EIP обійдеться вам у гроші - це ціла тема.


6

Перш за все, для цього можуть бути дві причини:

  1. Ви створили власну VPC та забули ввімкнути Public DNS.

Щоб вирішити це:

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

ii) Потім натисніть кнопку Дії, а потім увімкніть роздільну здатність DNS.

            OR
  1. Ви не ввімкнули параметр public ip -призначення в конфігурації EC2.

Тут ви не можете змінити налаштування; тому створіть образ ami, а потім відтворіть екземпляр із цього.


Це дві з багатьох можливих причин, безумовно, не єдині дві можливості.
Madbreaks

6

Тут я підсумую найпоширеніші проблеми, які виникають:

Коли ви створюєте власну VPC, якщо ви хочете, щоб такі ресурси, як екземпляри ec2, отримували загальнодоступні IP-адреси, щоб Інтернет міг спілкуватися з ними, спочатку потрібно переконатися, що екземпляр ec2 асоціюється з публічною підмережею користувацької VPC. Це означає, що в підмережі пов'язаний інтернет-шлюз. Також вам потрібно переконатися, що група безпеки VPC, асоційована з екземпляром ec2, має правила, що дозволяють вхідний трафік до потрібних портів, таких як ssh, http та https. Але ось деякі загальні огляди, які все ще трапляються:

1) Ви повинні переконатися, що імена хостів DNS увімкнено для VPC

2) Ви повинні переконатись, що для публічної підмережі, пов’язаної з екземпляром EC2, увімкнено прапор "автоматичного призначення публічного ip"

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


Як тільки цей публічний ip буде видно у запущеному екземплярі, ми можемо використовувати цей IP для підключення екземпляра через шпаклівку SSH
rinilnath

5

Після перевірки параметрів VPC та підмережі мій екземпляр EC2 досі не мав публічного DNS. Після дня пошуку резолюції я нарешті зрозумів це.

Мені довелося створити нову Elastic IP-адресу, а потім пов’язати її зі своїм екземпляром.

З інформаційної панелі EC2:

Перейдіть до еластичних IP-адрес із бічної панелі.

Клацніть Виділити нову адресу , а потім Виділити .

Поверніться до інформаційної панелі EC2. Перейдіть до мережевих інтерфейсів .

Виберіть екземпляр EC2 без загальнодоступної DNS. Потім дії - асоційована адреса .

У полі Адреса виберіть нову еластичну IP-адресу.

У полі Пов’язати приватну IP-адресу виберіть приватну IP-адресу без загальнодоступної DNS-адреси.

Клацніть Асоційована адреса .

Ваш екземпляр EC2 тепер повинен мати загальнодоступний DNS.


1
Це була відповідь для мене. Мій VPC вже створений для включення громадського DNS.
мелігент

Загальнодоступний DNS відображається, але все ще не може підключитися через scp / putty. показує час очікування з'єднання!
ShivarajRH

2

Змінення налаштування DNS-імен хостів також можна здійснити за допомогою CLI 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'
        }]
    }
  }

Корисна відповідь, дякую. FYI за замовчуванням для EnableDnsSupport вірно, тому зазвичай достатньо вказати EnableDnsHostnames: true.
jarmod

1

Якщо екземпляр знаходиться в VPC, переконайтесь, що "DNS-роздільна здатність" та "DNS-імена хостів" встановлені на "так". Це можна зробити в інтерфейсі консолі Aws. HTH!


1

Перейдіть до консолі VPC, виберіть VPC та натисніть меню ДІЇ, виберіть Редагувати імена хостів DNS - виберіть Так. Це повинно це виправити.



0

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

це навіть після виконання вищезазначених кроків, внесення модів до VPC або підмережі

тож мені довелося внести зміни в підмережу та vpc, перш ніж запустити інший екземпляр, і потім запустити новий екземпляр.

новий екземпляр мав публічну DNS. Ось як це працювало для мене.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.