L'instance EC2 n'a pas de DNS public

299

Un gars avec qui je travaille m'a donné les informations d'identification EC2 pour me connecter à sa console EC2. Ce n'est pas moi qui l'ai créé. Certaines instances affichent un nom DNS public et d'autres ont un DNS public vide. Je veux pouvoir me connecter aux instances qui ont un DNS public vide. Je n'ai pas pu comprendre pourquoi ceux-ci apparaissent vides.

user1456508
la source
2
Les instances sont-elles à l'intérieur d'un VPC? Vérifiez s'il existe une valeur à côté du champ ID VPC dans l'écran de description de l'instance.
David Levesque
1
J'ai le même problème. Mes instances sont à l'intérieur d'un VPC, et sur le sous-réseau, j'ai vérifié que le DNS public est disponible. Je n'obtiens toujours aucun nom DNS public. Je peux voir cela dans ma configuration VPC, c'est dire DNS hostnames: no, mais je ne peux pas changer cette valeur et l'ajout d'un nouveau VPC ne me donne pas non plus la sélection.
Clé
J'ai un problème différent lors de la configuration de my-vpc , The DNS hostname: yes, mais ce n'est que Private ID lorsque l'instance est démarrée. Je ne peux obtenir l'adresse IP publique que si une adresse IP élastique est utilisée.
Chetabahana
1
Ce qui m'a aidé était un arrêt et un démarrage de l'instance sans l'IP / DNS public (le redémarrage n'a pas aidé). Une fois l'instance redémarrée, elle a obtenu l'IP publique.
justadev

Réponses:

613

J'ai eu le même problème et je l'ai résolu. Jetez un œil aux instructions étape par étape:

  • Accédez à console.aws.amazon.com
  • Allez dans Services -> VPC
  • Ouvrez vos VPC
  • sélectionnez votre VPC connecté à votre EC2 et
  • sélectionnez Actions => Modifier les noms d'hôtes DNS ---> Changer les noms d'hôtes DNS: en OUI

J'espère que cela t'aides!

À votre santé

Tapis
la source
6
C'est la meilleure réponse. Il faut le vérifier!
Alberto Spelta
2
La section contenant les VPC s'appelle désormais Networking. Et pour éditer, vous faites un clic droit sur le VPC.
nasch
89
+1, vous devez maintenant également définir votre sous-réseau pour permettre l'attribution automatique de l'adresse IP publique. Faites un clic droit sur votre sous-réseau> modifiez l'attribution automatique de l'IP publique> cochez la case
Adam Hey
1
Même lorsque j'ai essayé d'ajouter un Elastic Ip, cela ne fonctionnait pas jusqu'à ce que cette option de modification des noms d'hôte DNS soit définie sur Oui.
RenatoSz
5
@Vignesh Je n'ai pas obtenu d'adresse IP ou DNS publique pour les instances existantes. Arrêter et redémarrer n'a rien changé. La seule chose qui a fonctionné a été de terminer et de recréer l'instance.
Y e z
59

Il existe en fait un paramètre dans le VPC appelé "DNS Hostnames". Vous pouvez modifier le VPC dans lequel l'instance EC2 existe et le remplacer par "Oui". Cela devrait faire l'affaire.

J'ai rencontré ce problème hier et j'ai essayé la réponse ci-dessus de Manny, qui n'a pas fonctionné. Cependant, le paramètre VPC a fonctionné pour moi.

Finalement, j'ai ajouté un EIP et je l'utilise pour me connecter.

Mike T
la source
1
Existe-t-il un moyen de le faire sans modifier le VPC dans son ensemble? Je veux un DNS public pour un nœud dans un VPC, mais je ne veux pas qu'il s'applique à tous les autres nœuds avec une IP élastique dans ce VPC.
Robbie Averill
2
Je pense que vous devriez pouvoir ajouter une adresse IP élastique pour ce nœud, non?
Mike T
Oui, mais cela ne se résoudra pas en interne sans votre suggestion dans la réponse :-)
Robbie Averill
en utilisant "DNS Hostnames" je peux voir Public DNS
Sujit Dhamale
38

On dirait que l'instance a été lancée dans VPC et, ce faisant, la case à cocher pour Automatically assign a public IP address to your instancesn'a pas été cochée. Par conséquent, l'instance n'a pas d'adresse IP publique

Vous pouvez attribuer une adresse IP élastique à cette instance, puis vous connecter à l'aide de cette adresse IP.

slayedbylucifer
la source
1
J'ai essayé de me connecter en utilisant l'IP publique avec du mastic. mais il a dit "le serveur a refusé notre clé". J'ai converti le fichier .pem en fichier .ppk en utilisant puttygen
user1456508
1
quel nom d'utilisateur utilisez-vous? quel AMI est-ce? de quel système d'exploitation s'agit-il?
slayedbylucifer
3
Existe-t-il un moyen d'attribuer une IP publique après coup? Je ne vois pas de moyen de modifier les paramètres des détails de l'instance.
David Balažic
2
@slayedbylucifer Qu'en est-il d'une instance arrêtée?
David Balažic
3
@ DavidBalažic, Same. pour le cycle de vie d'une instance, vous ne pouvez pas attacher IP de pub. L'IP Pub ne peut être attaché qu'au moment du lancement.
slayedbylucifer
30

Dans mon cas, j'ai trouvé la réponse de slayedbylucifer et d'autres qui pointent vers la même chose sont valables.
Même si cela est défini DNS hostname: yes, aucune IP publique n'est attribuée sur my-pvc (uniquement Privat IP).

Il est certain que l' attribution automatique de l'adresse IP publique doit être définie Enable.
S'il n'est pas sélectionné, il est défini par défaut surUse subnet setting (Disable)

Attribuer une adresse IP publique

Chetabahana
la source
23
  1. Accédez à AWS Console.
  2. Allez dans Services et sélectionnez VPC
  3. Cliquez sur vpc.
  4. sélectionnez l'instance et cliquez sur Action.
  5. Sélectionnez Modifier le nom d'hôte DNS, cliquez sur Oui.

À la fin, vous obtiendrez vos DNS publics.

Jitendra Bhalothia
la source
ajouter le DNS public au VPC avec les travaux IP élastiques assignés. Pour une raison quelconque, l'adresse IP élastique peut être envoyée depuis le monde extérieur via le groupe de sécurité, mais frapper une application Web comme Solr a échoué à moins qu'un DNS public ne soit attribué.
false_memories
22

Voici l'astuce fournie pour résoudre le problème qui ne fonctionne pas:

Conseil - Si votre instance n'a pas de nom DNS public, ouvrez la console VPC, sélectionnez le VPC et vérifiez l'onglet Résumé. Si la résolution DNS ou les noms d'hôte DNS sont non, cliquez sur Modifier et définissez la valeur sur oui.

En supposant que vous l'ayez fait et que vous n'obtenez toujours pas d'adresse IP publique, passez au sous-réseau en question dans l'écran d'administration du VPC et vous découvrirez probablement que "Auto-Assign Public IP" n'est pas défini sur oui. Modifiez ensuite ce paramètre, et je sais que vous ne voulez pas ici, créez une nouvelle instance dans ce sous-réseau. Autant que je sache, vous ne pouvez pas modifier cela sur l'hôte, j'ai essayé et essayé, il suffit de le terminer.

Bill Parker
la source
22

Pour moi, le problème était dans les paramètres de sous-réseau.

  1. Ouvrez https://console.aws.amazon.com/vpc
  2. Aller aux sous-réseaux dans le menu de gauche
  3. Choisissez votre sous-réseau
  4. Modifiez les paramètres IP d'attribution automatique pour activer
Neftanic
la source
14

Il est lié à la fonctionnalité du VPC appelée "DNS Hostnames". Vous pouvez l'activer ou le désactiver. Accédez au VPC, sous le menu Actions, sélectionnez l'élément "Modifier les noms d'hôtes DNS", puis choisissez "Oui". Après cela, le DNS public des instances EC2 doit être affiché.

Lior Kirshner
la source
Puis-je utiliser mes noms personnalisés? Parce que lorsque j'envoie des e-mails de mon instance, Gmail affiche envoyé par ec2..ip adresse ... location..etc au lieu de mon nom de domaine
mrid
@mrid, vous devez associer votre DNS au DNS généré de l'EC2. Vous pouvez le faire avec le service AWS Route53, notre gestionnaire d'hébergement / DNS.
Lior Kirshner
10

Lancez simplement une autre instance (et supprimez également celle en question si elle ne sert à rien) et assurez-vous cette fois de cocher "Attribuer automatiquement une adresse IP publique à votre instance". Si ce n'est pas le cas, comme l'a suggéré le bylucifère tué; attribuez une IP élastique (EIP) à l'instance, puis connectez-vous à l'aide de cette IP. Attention cependant, si vous utilisez le niveau AWS gratuit, un EIP vous coûtera de l'argent - c'est un tout autre sujet.

Manny Fernandez
la source
6

Tout d'abord, il peut y avoir deux raisons à cela:

  1. Vous avez créé votre propre VPC et oublié d'activer le DNS public.

Pour résoudre cela:

i) Accédez à la console AWS VPC et sélectionnez le VPC que vous avez créé.

ii) Cliquez ensuite sur Actions puis activez la résolution DNS.

            OR
  1. Vous n'avez pas activé l'option publique ip-assign dans la configuration EC2.

Ici, vous ne pouvez pas modifier le paramètre; créez donc une image ami puis recréez l'instance à partir de cela.

Patrick R
la source
Ce sont deux des nombreuses causes possibles, certainement pas les deux seules possibilités.
Madbreaks
6

Ici, je vais résumer les problèmes les plus courants qui se produisent:

Lorsque vous créez un VPC personnalisé, si vous souhaitez que des ressources aws telles que des instances ec2 acquièrent des adresses IP publiques afin qu'Internet puisse communiquer avec elles, vous devez d'abord vous assurer que l'instance ec2 est associée à un sous-réseau public du VPC personnalisé. Cela signifie que le sous-réseau est associé à une passerelle Internet. En outre, vous devez vous assurer que le groupe de sécurité du VPC associé à l'instance ec2 dispose de règles autorisant le trafic entrant vers les ports souhaités, tels que ssh, http et https. MAIS voici quelques oublis courants qui se produisent toujours:

1) Vous devez vous assurer que les noms d'hôtes DNS sont activés pour le VPC

2) Vous devez vous assurer que le drapeau de sous-réseau public lié à l'instance EC2 a activé son attribution automatique d'IP publique.

3) Si l'instance est déjà créée, vous devrez peut-être la terminer et créer une nouvelle instance pour que les champs IP public et DNS public soient remplis.

Donato
la source
Une fois que cette adresse IP publique est visible dans l'instance lancée, nous pouvons utiliser cette adresse IP pour connecter l'instance via putty SSH
rinilnath
5

Après avoir vérifié les paramètres VPC et de sous-réseau, mon instance EC2 n'avait toujours pas de DNS public. Après une journée de recherche d'une résolution, je l'ai finalement compris.

J'ai dû créer une nouvelle adresse IP élastique, puis l'associer à mon instance.

Depuis le tableau de bord EC2:

Accéder aux adresses IP élastiques dans la barre latérale.

Cliquez sur Attribuer une nouvelle adresse , puis sur Attribuer .

Revenez au tableau de bord EC2. Accédez aux interfaces réseau .

Sélectionnez l'instance EC2 sans DNS public. Puis Actions - Adresse associée .

L' adresse champ , sélectionnez la nouvelle adresse IP élastique.

L' associé à une adresse IP privée champ , sélectionnez l'adresse IP privée sans DNS public.

Cliquez sur Associate Address .

Votre instance EC2 devrait maintenant avoir un DNS public.

BenR
la source
1
Ce fut la réponse pour moi. Mon VPC était déjà configuré pour activer le DNS public.
melicent
DNS public affiché, mais toujours incapable de se connecter via scp / putty. montrant le délai de connexion!
ShivarajRH
2

La modification du paramètre DNS Hostnames peut également être effectuée à l'aide de l'AWS CLI:

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

(Où $ vpc_id est l'ID du VPC auquel votre instance est attachée.)

Dès que le VPC est mis à jour, l'instance obtiendra un DNS public.

Paul Pritchard
la source
2

Pour ceux qui utilisent CloudFormation, les propriétés clés sont EnableDnsSupport et EnableDnsHostnames qui doivent être définies sur true

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

la source
Réponse utile, merci. Pour info, la valeur par défaut pour EnableDnsSupport est true, il est donc généralement suffisant d'indiquer EnableDnsHostnames: true.
jarmod
1

Si l'instance est en VPC, assurez-vous que "résolution DNS" et "noms d'hôtes DNS" sont définis sur "oui". Vous pouvez le faire dans l'interface utilisateur de la console Aws. HTH!

Trunal Bhanse
la source
1

Accédez à la console VPC, sélectionnez votre VPC, puis cliquez sur le menu ACTIONS, sélectionnez Modifier les noms d'hôte DNS - sélectionnez Oui. Cela devrait le réparer.

Kingz
la source
0

J'ai essayé de corriger le «pas de DNS public» une fois que l'EC2 était opérationnel, je ne pouvais pas ajouter de DNS public

c'est même après avoir suivi les étapes ci-dessus en faisant des mods sur le VPC ou le sous-réseau

donc, j'ai dû apporter des modifications au sous-réseau et au vpc, avant de démarrer une autre instance, puis ALORS démarrer une nouvelle instance.

la nouvelle instance avait un DNS public. Voilà comment cela a fonctionné pour moi.

1082E1984
la source