L'istanza EC2 non ha DNS pubblico


299

Un ragazzo con cui lavoro mi ha dato le credenziali EC2 per accedere alla sua console EC2. Non sono stato io a crearlo. Alcune delle istanze mostrano un nome DNS pubblico e altre hanno un DNS pubblico vuoto. Voglio essere in grado di connettermi alle istanze che hanno un DNS pubblico vuoto. Non sono stato in grado di capire perché questi si presentano vuoti.


2
Le istanze sono all'interno di un VPC? Verificare se è presente un valore accanto al campo ID VPC nella schermata di descrizione dell'istanza.
David Levesque,

1
Ho lo stesso problema. Le mie istanze sono all'interno di un VPC e nella sottorete ho verificato che il DNS pubblico sia disponibile. Non ricevo ancora nomi DNS pubblici. Lo vedo nella mia configurazione VPC, sta dicendo DNS hostnames: no, ma non posso cambiare quel valore e l'aggiunta di un nuovo VPC non mi dà neanche la selezione.
Chiave inglese,

Ho un problema diverso quando si installa my-vpc , The DNS hostname: yes, ma è solo un ID privato all'avvio dell'istanza. Posso ottenere l'IP pubblico solo quando viene utilizzato un IP elastico.
Chetabahana,

1
Ciò che mi ha aiutato è stato l'arresto e l'avvio dell'istanza senza l'IP / DNS pubblico (il riavvio non ha aiutato). Dopo il riavvio dell'istanza, ha ottenuto l'IP pubblico.
justadev,

Risposte:


613

Ho avuto lo stesso problema e l'ho risolto. Dai un'occhiata alle istruzioni dettagliate:

  • Vai a console.aws.amazon.com
  • Vai a Servizi -> VPC
  • Apri i tuoi VPC
  • seleziona il tuo VPC collegato a EC2 e
  • selezionare Azioni => Modifica nomi host DNS ---> Cambia nomi host DNS: su SÌ

Spero che questo ti aiuti!

Saluti


6
Questa è la risposta migliore Dovrebbe essere controllato!
Alberto Spelta,

2
La sezione contenente VPC è ora chiamata Networking. E per modificarlo, fai clic con il tasto destro del mouse sul VPC.
nasch

89
+1 ora devi anche impostare la tua sottorete per consentire l'assegnazione automatica dell'ip pubblico. Fare clic con il tasto destro del mouse sulla sottorete> modifica assegnazione automatica ip pubblico> selezionare la casella
Adam Hey

1
Anche quando ho provato ad aggiungere un IP elastico, non funzionava fino a quando quell'opzione per cambiare i nomi host DNS era impostata su Sì.
RenatoSz,

5
@Vignesh Non ho ricevuto un IP pubblico o DNS per istanze esistenti. L'arresto e il riavvio non hanno cambiato nulla. L'unica cosa che ha funzionato è stata terminare e ricreare l'istanza.
Y e z

59

Nel VPC esiste effettivamente un'impostazione denominata "Nome host DNS". È possibile modificare il VPC in cui esiste l'istanza EC2 e impostarlo su "Sì". Questo dovrebbe fare il trucco.

Ho incontrato questo problema ieri e ho provato la risposta di cui sopra da Manny, che non ha funzionato. L'impostazione VPC, tuttavia, ha funzionato per me.

Alla fine ho aggiunto un EIP e lo uso per connettermi.


1
C'è un modo per farlo senza modificare il VPC nel suo insieme? Voglio un DNS pubblico per un nodo in un VPC ma non voglio che si applichi a tutti gli altri nodi con un IP elastico in quel VPC.
Robbie Averill,

2
Penso che dovresti essere in grado di aggiungere un IP elastico solo per quel nodo, no?
Mike T,

Sì, ma non si risolverà internamente senza il tuo suggerimento nella risposta :-)
Robbie Averill

usando "DNS Hostnames" sono in grado di vedere DNS pubblico
Sujit Dhamale,

38

Sembra che l'istanza sia stata avviata in VPC e, nel frattempo, la casella di Automatically assign a public IP address to your instancescontrollo non è stata selezionata. Quindi l'istanza non ha un IP pubblico

È possibile assegnare un IP elastico a questa istanza e quindi accedere utilizzando tale IP.


1
Ho provato a collegarmi usando l'ip pubblico con putty. ma diceva "il server ha rifiutato la nostra chiave". Ho convertito il file .pem in file .ppk usando puttygen
user1456508

1
quale nome utente stai usando? quale AMI è questo? che sistema operativo è questo?
slayedbylucifer

3
C'è un modo per assegnare un IP pubblico dopo il fatto? Non vedo un modo per modificare le impostazioni dei dettagli dell'istanza.
David Balažic,

2
@slayedbylucifer Che ne pensi di un'istanza bloccata?
David Balažic,

3
@ DavidBalažic, Same. per il ciclo di vita di un'istanza, non è possibile collegare l'IP pub. Pub IP può essere collegato solo al momento del lancio.
slayedbylucifer,

30

Nel mio caso ho trovato valide le risposte di slayedbylucifer e di altre che indicano la stessa cosa.
Anche se è impostato questo DNS hostname: yes, nessun IP pubblico è assegnato su my-pvc (solo IP privato).

E 'sicuramente che Auto assegnare Public IP deve essere impostato Enable.
Se non è selezionato, per impostazione predefinita è impostato suUse subnet setting (Disable)

Assegna IP pubblico


23
  1. Vai alla Console AWS.
  2. Vai a Servizi e seleziona VPC
  3. Fai clic su vpc.
  4. seleziona l'istanza e fai clic su Azione.
  5. Selezionare Modifica nome host DNS fare clic su Sì.

Alla fine otterrai il tuo DNS pubblico.


l'aggiunta di DNS pubblico al VPC insieme all'IP elastico assegnato funziona. Per qualche motivo, l'IP elastico può essere inviato al ping dall'esterno attraverso il gruppo di sicurezza ma colpire un'app Web come Solr non è riuscito a meno che non sia assegnato un DNS pubblico ..
false_memories

22

Questo è il consiglio fornito per risolvere il problema che non funziona:

Suggerimento: se l'istanza non ha un nome DNS pubblico, aprire la console VPC, selezionare il VPC e controllare la scheda Riepilogo. Se la risoluzione DNS o i nomi host DNS sono no, fare clic su Modifica e modificare il valore in yes.

Supponendo di averlo fatto e non si stia ancora ottenendo un IP pubblico, passare alla sottorete in questione nella schermata di amministrazione VPC e probabilmente si scoprirà che "Assegna automaticamente IP pubblico" non è impostato su Sì. Modifica quindi l'impostazione, e so che non vuoi qui, crea una nuova istanza in quella sottorete. Per quanto posso dire che non puoi modificarlo sull'host, ho provato e provato, basta terminarlo.


22

Per me il problema era nelle impostazioni della sottorete.

  1. Apri https://console.aws.amazon.com/vpc
  2. Vai alle sottoreti nel menu a sinistra
  3. Scegli la tua sottorete
  4. Modifica le impostazioni IP di assegnazione automatica per abilitare

14

È correlato alla funzione del VPC chiamata "DNS Hostnames". Puoi abilitarlo o disabilitarlo. Vai al VPC, sotto il menu Azioni seleziona la voce "Modifica nomi host DNS" e quindi scegli "Sì". Dopo averlo fatto, dovrebbe essere visualizzato il DNS pubblico delle istanze EC2.


Posso usare i miei nomi personalizzati? Perché quando invio e-mail dalla mia istanza, Gmail mostra spedito via ec2..ip indirizzo ... location..etc invece del mio nome di dominio
mrid

@mrid devi associare il tuo DNS al DNS generato dell'EC2. Puoi farlo con il servizio AWS Route53, il nostro gestore di hosting / DNS.
Lior Kirshner,

10

Basta avviare un'altra istanza (ed eliminare anche quella in questione se non serve a nulla) e assicurarsi che questa volta selezioni "Assegna automaticamente un indirizzo IP pubblico alla tua istanza". In caso contrario, come suggerito sylbylucifer; assegnare un IP elastico (EIP) all'istanza e quindi accedere utilizzando tale IP. Fai attenzione, tuttavia, se stai eseguendo il livello AWS gratuito, un EIP ti costerà denaro - questo è un altro argomento.


6

Innanzitutto, ci possono essere due ragioni per questo:

  1. Hai creato il tuo VPC personale e hai dimenticato di abilitare il DNS pubblico.

Per risolvere questo:

i) Vai alla console VPC di AWS e seleziona il VPC che hai creato.

ii) Quindi fare clic su Azioni e quindi abilitare Risoluzione DNS.

            OR
  1. Non hai abilitato l'opzione pubblica ip-assegnato nella configurazione EC2.

Qui non è possibile modificare l'impostazione; quindi crea un'immagine ami e quindi ricrea l'istanza da quella.


Queste sono due delle molte possibili cause, certamente non le uniche due possibilità.
Madbreaks,

6

Qui riassumerò i problemi più comuni che si verificano:

Quando si crea un VPC personalizzato, se si desidera che risorse aws come istanze ec2 acquisiscano indirizzi IP pubblici in modo che Internet possa comunicare con essi, è necessario innanzitutto assicurarsi che l'istanza ec2 sia associata a una sottorete pubblica del VPC personalizzato. Ciò significa che alla sottorete è associato un gateway Internet. Inoltre, è necessario assicurarsi che il gruppo di sicurezza del VPC associato all'istanza ec2 abbia regole che consentano il traffico in entrata verso le porte desiderate, come ssh, http e https. MA qui ci sono alcuni svantaggi comuni che si verificano ancora:

1) È necessario assicurarsi che i nomi host DNS siano abilitati per il VPC

2) È necessario assicurarsi che la subnet pubblica collegata all'istanza EC2 abbia il suo flag di "auto-assegnazione dell'ip pubblico" abilitato

3) Se l'istanza è già stata creata, potrebbe essere necessario terminarla e creare una nuova istanza per popolare i campi IP pubblico e DNS pubblico.


Una volta che questo IP pubblico è visibile nell'istanza avviata, possiamo usare questo IP per connettere l'istanza tramite putty SSH
rinilnath

5

Dopo aver verificato le impostazioni VPC e sottorete, la mia istanza EC2 non aveva ancora un DNS pubblico. Dopo una giornata di ricerca di una risoluzione, ho finalmente capito.

Ho dovuto creare un nuovo indirizzo IP elastico, quindi associarlo alla mia istanza.

Dal cruscotto EC2:

Vai a IP elastici dalla barra laterale.

Fai clic su Assegna nuovo indirizzo , quindi Assegna .

Torna alla Dashboard EC2. Vai a Interfacce di rete .

Seleziona l'istanza EC2 senza un DNS pubblico. Quindi Azioni - Indirizzo associato .

L' indirizzo campo , selezionare il nuovo indirizzo IP elastico.

L' Associato a indirizzo IP privato , seleziona l'indirizzo IP privato senza DNS pubblico.

Fai clic su Indirizzo associato .

L'istanza EC2 ora dovrebbe avere un DNS pubblico.


1
Questa è stata la risposta per me. Il mio VPC era già impostato per abilitare il DNS pubblico.
Melicent,

DNS pubblico visualizzato, ma ancora impossibile connettersi tramite scp / putty. mostrando il timeout della connessione!
ShivarajRH,

2

La modifica dell'impostazione dei nomi host DNS può essere effettuata anche utilizzando l'interfaccia della riga di comando di AWS:

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

(Dove $ vpc_id è l'ID del VPC a cui è collegata la tua istanza.)

Non appena il VPC viene aggiornato, l'istanza acquisirà un DNS pubblico.


2

Per coloro che utilizzano CloudFormation, le proprietà chiave sono EnableDnsSupport e EnableDnsHostnames che devono essere impostate su true

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

Risposta utile, grazie. Cordiali saluti, il valore predefinito per EnableDnsSupport è true, quindi in genere è sufficiente indicare EnableDnsHostnames: true.
jarmod,

1

Se l'istanza è in VPC, assicurarsi che sia "Risoluzione DNS" sia "Nomi host DNS" siano impostati su "Sì". Puoi farlo nell'interfaccia utente della console di Aws. HTH!


1

Vai alla console VPC, seleziona il tuo VPC e fai clic sul menu AZIONI, seleziona Modifica nomi host DNS - seleziona Sì. Questo dovrebbe risolverlo.



0

Ho provato a riparare il "DNS pubblico" una volta che l'EC2 era attivo e funzionante, non ho potuto aggiungere un DNS pubblico

questo avviene anche dopo aver seguito i passaggi precedenti apportando modifiche al VPC o alla sottorete

così, ho dovuto apportare modifiche alla sottorete e al vpc, prima di avviare un'altra istanza, e quindi avviare una nuova istanza.

la nuova istanza aveva un DNS pubblico. È così che ha funzionato per me.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.