Die EC2-Instanz hat kein öffentliches DNS

299

Ein Mann, mit dem ich zusammenarbeite, gab mir die EC2-Anmeldeinformationen, um mich an seiner EC2-Konsole anzumelden. Ich war nicht derjenige, der es eingerichtet hat. Einige Instanzen zeigen einen öffentlichen DNS-Namen an, andere einen leeren öffentlichen DNS. Ich möchte eine Verbindung zu Instanzen herstellen können, die ein leeres öffentliches DNS haben. Ich konnte nicht herausfinden, warum diese als leer angezeigt werden.

user1456508
quelle
2
Befinden sich die Instanzen in einer VPC? Überprüfen Sie im Instanzbeschreibungsbildschirm, ob sich neben dem Feld VPC-ID ein Wert befindet.
David Levesque
1
Ich habe das gleiche Problem. Meine Instanzen befinden sich in einer VPC, und im Subnetz habe ich überprüft, ob das öffentliche DNS verfügbar ist. Trotzdem bekomme ich keine öffentlichen DNS-Namen. Ich kann das in meiner VPC-Konfiguration sehen, DNS hostnames: noaber ich kann diesen Wert nicht ändern, und das Hinzufügen einer neuen VPC gibt mir auch nicht die Auswahl.
Schraubenschlüssel
Ich habe ein anderes Problem beim Einrichten von my-vpc , The DNS hostname: yes, aber es ist nur Private ID, wenn die Instanz gestartet wird. Ich kann die öffentliche IP nur erhalten, wenn eine elastische IP verwendet wird.
Chetabahana
1
Was mir geholfen hat, war ein Stopp und Start für die Instanz ohne die öffentliche IP / DNS (Neustart hat nicht geholfen). Nach dem Neustart der Instanz erhielt sie die öffentliche IP.
Justadev

Antworten:

613

Ich hatte das gleiche Problem und löste es. Schauen Sie sich die Schritt-für-Schritt-Anleitung an:

  • Gehen Sie zu console.aws.amazon.com
  • Gehen Sie zu Dienste -> VPC
  • Öffnen Sie Ihre VPCs
  • Wählen Sie Ihre an Ihren EC2 angeschlossene VPC aus und
  • Wählen Sie Aktionen => DNS-Hostnamen bearbeiten ---> DNS-Hostnamen ändern: auf JA

Hoffe das hilft!

Prost

Matte
quelle
6
Dies ist die beste Antwort. Es sollte überprüft werden!
Alberto Spelta
2
Der Abschnitt mit VPCs heißt jetzt Netzwerk. Zum Bearbeiten klicken Sie mit der rechten Maustaste auf die VPC.
Nasch
89
+1 Sie müssen jetzt auch Ihr Subnetz einstellen, um die automatische Zuweisung der öffentlichen IP zu ermöglichen. Klicken Sie mit der rechten Maustaste auf Ihr Subnetz> ändern Sie die automatische Zuweisung der öffentlichen IP-Adresse> aktivieren Sie das Kontrollkästchen
Adam Hey
1
Selbst als ich versuchte, ein elastisches IP hinzuzufügen, funktionierte es nicht, bis diese Option zum Ändern der DNS-Hostnamen auf Ja gesetzt wurde.
RenatoSz
5
@Vignesh Ich habe keine öffentliche IP oder DNS für vorhandene Instanzen erhalten. Das Stoppen und Neustarten hat nichts geändert. Das einzige, was funktionierte, war das Beenden und Neuerstellen der Instanz.
Y e z
59

In der VPC gibt es eine Einstellung namens "DNS-Hostnamen". Sie können die VPC, in der die EC2-Instanz vorhanden ist, ändern und in "Ja" ändern. Das sollte den Trick machen.

Ich bin gestern auf dieses Problem gestoßen und habe die obige Antwort von Manny ausprobiert, die nicht funktioniert hat. Die VPC - Einstellung jedoch tat Arbeit für mich.

Letztendlich habe ich eine EIP hinzugefügt und benutze diese, um eine Verbindung herzustellen.

Mike T.
quelle
1
Gibt es eine Möglichkeit, dies zu tun, ohne die VPC als Ganzes zu ändern? Ich möchte öffentliches DNS für einen Knoten in einer VPC, möchte aber nicht, dass es auf jeden anderen Knoten mit einer elastischen IP in dieser VPC angewendet wird.
Robbie Averill
2
Ich denke, Sie sollten in der Lage sein, eine elastische IP nur für diesen Knoten hinzuzufügen, nicht wahr?
Mike T
Ja, aber es wird nicht intern ohne Ihren Vorschlag in der Antwort gelöst :-)
Robbie Averill
Mit "DNS-Hostnamen" kann ich Public DNS
Sujit Dhamale
38

Klingt so, als ob die Instanz in VPC gestartet wurde und dabei das Kontrollkästchen für Automatically assign a public IP address to your instancesnicht aktiviert wurde. Daher hat die Instanz keine öffentliche IP

Sie können dieser Instanz eine elastische IP zuweisen und sich dann mit dieser IP anmelden.

Slayedbylucifer
quelle
1
Ich habe versucht, eine Verbindung über die öffentliche IP mit Putty herzustellen. aber es hieß "Server hat unseren Schlüssel abgelehnt". Ich habe die .pem-Datei mit puttygen
user1456508 am
1
Welchen Benutzernamen verwenden Sie? Welcher AMI ist das? Welches Betriebssystem ist das?
Slayedbylucifer
3
Gibt es eine Möglichkeit, eine öffentliche IP nachträglich zuzuweisen? Ich sehe keine Möglichkeit, die Einstellungen für Instanzdetails zu bearbeiten.
David Balažic
2
@slayedbylucifer Was ist mit einer gestoppten Instanz?
David Balažic
3
@ DavidBalažic, Same. Für den Lebenszyklus einer Instanz können Sie keine Pub-IP anhängen. Pub IP kann nur zum Zeitpunkt des Starts angehängt werden.
Slayedbylucifer
30

In meinem Fall fand ich die Antwort von Slayedbylucifer und anderen, die darauf hinweisen, gültig.
Auch wenn festgelegt ist, dass DNS hostname: yesauf my-pvc keine öffentliche IP zugewiesen ist (nur private IP).

Es ist definitiv so, dass die automatische Zuweisung der öffentlichen IP festgelegt werden muss Enable.
Wenn es nicht ausgewählt ist, wird es standardmäßig auf gesetztUse subnet setting (Disable)

Öffentliche IP zuweisen

Chetabahana
quelle
23
  1. Wechseln Sie zur AWS-Konsole.
  2. Gehen Sie zu Dienste und wählen Sie VPC
  3. Klicken Sie auf vpc.
  4. Wählen Sie die Instanz aus und klicken Sie auf Aktion.
  5. Wählen Sie DNS-Hostnamen bearbeiten und klicken Sie auf Ja.

Am Ende erhalten Sie Ihre öffentlichen DNS.

Jitendra Bhalothia
quelle
Das Hinzufügen von öffentlichem DNS zur VPC zusammen mit der zugewiesenen elastischen IP funktioniert. Aus irgendeinem Grund kann die elastische IP von der Außenwelt über die Sicherheitsgruppe gepingt werden, aber das Aufrufen einer Web-App wie Solr ist fehlgeschlagen, es sei denn, es ist ein öffentlicher DNS zugewiesen.
false_memories
22

Dies ist der Tipp zur Behebung des Problems, das nicht funktioniert:

Tipp - Wenn Ihre Instanz keinen öffentlichen DNS-Namen hat, öffnen Sie die VPC-Konsole, wählen Sie die VPC aus und überprüfen Sie die Registerkarte Zusammenfassung. Wenn entweder DNS-Auflösung oder DNS-Hostnamen Nein ist, klicken Sie auf Bearbeiten und ändern Sie den Wert in Ja.

Angenommen, Sie haben dies getan und erhalten immer noch keine öffentliche IP-Adresse. Wechseln Sie dann im VPC-Administratorbildschirm zu dem betreffenden Subnetz, und Sie werden wahrscheinlich feststellen, dass "Öffentliche IP automatisch zuweisen" nicht auf "Ja" gesetzt ist. Ändern Sie diese Einstellung dann, und ich weiß, dass Sie dies hier nicht möchten, erstellen Sie eine neue Instanz in diesem Subnetz. Soweit ich Ihnen sagen kann, dass Sie dies auf dem Host nicht ändern können, habe ich versucht und versucht, es einfach zu beenden.

Bill Parker
quelle
22

Für mich lag das Problem in den Subnetzeinstellungen.

  1. Öffnen Sie https://console.aws.amazon.com/vpc
  2. Gehen Sie zu den Subnetzen im linken Menü
  3. Wählen Sie Ihr Subnetz
  4. Ändern Sie die automatisch zugewiesenen IP-Einstellungen, um sie zu aktivieren
Neftanic
quelle
14

Es hängt mit der VPC-Funktion "DNS-Hostnamen" zusammen. Sie können es aktivieren oder deaktivieren. Gehen Sie zur VPC, wählen Sie im Menü Aktionen den Eintrag "DNS-Hostnamen bearbeiten" und dann "Ja". Danach sollte das öffentliche DNS der EC2-Instanzen angezeigt werden.

Lior Kirshner
quelle
Kann ich meine benutzerdefinierten Namen verwenden? Denn wenn ich E-Mails von meiner Instanz sende, zeigt Google Mail die E-Mail an ec2..ip address ... location..etc anstelle meines Domainnamens an
mrid
@mrid Sie müssen Ihr DNS mit dem generierten DNS des EC2 verknüpfen. Sie können dies mit dem AWS Route53-Dienst tun, unserem Hosting- / DNS-Manager.
Lior Kirshner
10

Starten Sie einfach eine andere Instanz (und löschen Sie auch die betreffende Instanz, wenn sie keine Verwendung hat) und stellen Sie sicher, dass Sie diesmal "Ihrer Instanz automatisch eine öffentliche IP-Adresse zuweisen" aktivieren. Wenn nicht, dann wie von Slayedbylucifer vorgeschlagen; Weisen Sie der Instanz eine elastische IP (EIP) zu und melden Sie sich dann mit dieser IP an. Seien Sie jedoch vorsichtig, wenn Sie die kostenlose AWS-Stufe ausführen, kostet Sie eine EIP Geld - das ist ein ganz anderes Thema.

Manny Fernandez
quelle
6

Erstens kann es zwei Gründe dafür geben:

  1. Sie haben Ihre eigene VPC erstellt und vergessen, Public DNS zu aktivieren.

Um dies zu lösen:

i) Gehen Sie zur AWS VPC-Konsole und wählen Sie die von Ihnen erstellte VPC aus.

ii) Klicken Sie dann auf Aktionen und aktivieren Sie die DNS-Auflösung.

            OR
  1. Sie haben die öffentliche IP-Zuweisungsoption in der EC2-Konfiguration nicht aktiviert.

Hier können Sie die Einstellung nicht ändern. Erstellen Sie also ein Ami-Image und erstellen Sie die Instanz daraus neu.

Patrick R.
quelle
Dies sind zwei von vielen möglichen Ursachen, sicherlich nicht die einzigen zwei Möglichkeiten.
Madbreaks
6

Hier fasse ich die häufigsten Probleme zusammen:

Wenn Sie eine benutzerdefinierte VPC erstellen und möchten, dass aws-Ressourcen wie ec2-Instanzen öffentliche IP-Adressen abrufen, damit das Internet mit ihnen kommunizieren kann, müssen Sie zunächst sicherstellen, dass die ec2-Instanz einem öffentlichen Subnetz der benutzerdefinierten VPC zugeordnet ist. Dies bedeutet, dass dem Subnetz ein Internet-Gateway zugeordnet ist. Außerdem müssen Sie sicherstellen, dass die Sicherheitsgruppe der VPC, die der ec2-Instanz zugeordnet ist, über Regeln verfügt, die eingehenden Datenverkehr zu den gewünschten Ports wie ssh, http und https zulassen. ABER hier sind einige häufige Versehen, die immer noch auftreten:

1) Sie müssen sicherstellen, dass DNS-Hostnamen für die VPC aktiviert sind

2) Sie müssen sicherstellen, dass für das mit der EC2-Instanz verknüpfte öffentliche Subnetz das Flag "Automatische Zuweisung der öffentlichen IP" aktiviert ist

3) Wenn die Instanz bereits erstellt wurde, müssen Sie sie möglicherweise beenden und eine neue Instanz erstellen, damit die öffentlichen IP- und öffentlichen DNS-Felder ausgefüllt werden.

Donato
quelle
Sobald diese öffentliche IP in der gestarteten Instanz sichtbar ist, können wir diese IP verwenden, um die Instanz über Putty SSH zu verbinden
rinilnath
5

Nach Überprüfung der VPC- und Subnetzeinstellungen verfügte meine EC2-Instanz noch nicht über ein öffentliches DNS. Nachdem ich einen Tag lang nach einer Lösung gesucht hatte, fand ich es endlich heraus.

Ich musste eine neue elastische IP-Adresse erstellen und sie dann meiner Instanz zuordnen.

Aus dem EC2-Dashboard:

Gehen Sie in der Seitenleiste zu Elastic IPs .

Klicken Sie auf Neue Adresse zuweisen und dann auf Zuweisen .

Kehren Sie zum EC2-Dashboard zurück. Gehen Sie zu Netzwerkschnittstellen .

Wählen Sie die EC2-Instanz ohne öffentlichen DNS aus. Dann Aktionen - Adresse zuordnen .

Das Adressfeld, wählen Sie die neue elastische IP - Adresse.

Der Associate private IP - Adresse Feld, wählen Sie die private IP - Adresse ohne öffentlichen DNS.

Klicken Sie auf Adresse zuordnen .

Ihre EC2-Instanz sollte jetzt über ein öffentliches DNS verfügen.

BenR
quelle
1
Das war die Antwort für mich. Meine VPC wurde bereits eingerichtet, um öffentliches DNS zu aktivieren.
Melicent
Öffentliches DNS wird angezeigt, kann jedoch keine Verbindung über scp / putty herstellen. Verbindungs-Timeout anzeigen!
ShivarajRH
2

Die Änderung der Einstellung DNS-Hostnamen kann auch über die AWS-CLI vorgenommen werden:

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

(Wobei $ vpc_id die ID der VPC ist, an die Ihre Instanz angehängt ist.)

Sobald die VPC aktualisiert wird, erhält die Instanz einen öffentlichen DNS.

Paul Pritchard
quelle
2

Für Benutzer von CloudFormation sind die Schlüsseleigenschaften EnableDnsSupport und EnableDnsHostnames, die auf true gesetzt werden sollten

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

quelle
Hilfreiche Antwort, danke. Zu Ihrer Information, der Standardwert für EnableDnsSupport ist true, daher reicht es normalerweise aus, EnableDnsHostnames anzugeben: true.
Jarmod
1

Wenn sich die Instanz in VPC befindet, stellen Sie sicher, dass sowohl "DNS-Auflösung" als auch "DNS-Hostnamen" auf "Ja" gesetzt sind. Sie können dies in der Benutzeroberfläche der Aws-Konsole tun. HTH!

Trunal Bhanse
quelle
1

Gehen Sie zur VPC-Konsole, wählen Sie Ihre VPC aus, klicken Sie auf das Menü AKTIONEN, wählen Sie DNS-Hostnamen bearbeiten - wählen Sie Ja. Das sollte es beheben.

Kingz
quelle
0

Ich habe versucht, das Problem "kein öffentliches DNS" zu beheben, sobald der EC2 in Betrieb war. Ich konnte kein öffentliches DNS hinzufügen

Dies ist auch nach dem Befolgen der obigen Schritte, um Modifikationen an der VPC oder dem Subnetz vorzunehmen

Daher musste ich Änderungen am Subnetz und am VPC vornehmen, bevor ich eine andere Instanz startete, und dann eine neue Instanz starten.

Die neue Instanz hatte ein öffentliches DNS. So hat es bei mir funktioniert.

1082E1984
quelle