A instância do EC2 não possui DNS público


299

Um cara com quem trabalho me deu as credenciais do EC2 para fazer logon no console do EC2. Não fui eu quem o montou. Algumas das instâncias mostram um nome de DNS público e outras têm um DNS público em branco. Quero poder conectar-me às instâncias que possuem um DNS público em branco. Não consegui descobrir por que eles aparecem em branco.


2
As instâncias estão dentro de uma VPC? Verifique se há um valor próximo ao campo ID da VPC na tela de descrição da instância.
David Levesque

1
Eu tenho o mesmo problema. Minhas instâncias estão dentro de uma VPC e, na sub-rede, verifiquei se o DNS público estava disponível. Ainda não estou recebendo nomes de DNS públicos. Percebo que na minha configuração da VPC, está dizendo DNS hostnames: no, mas não posso alterar esse valor e adicionar uma nova VPC também não me dá a seleção.
Chave

Tenho um problema diferente ao configurar o my-vpc , The DNS hostname: yes, mas é apenas o Private ID quando a instância é iniciada. Só consigo obter o IP público quando um IP Elastic é usado.
Chetabahana

1
O que me ajudou foi parar e iniciar a instância sem o IP / DNS público (a reinicialização não ajudou). Depois que a instância foi reiniciada, obteve o IP público.
justadev

Respostas:


613

Eu tive o mesmo problema e resolvi. Dê uma olhada nas instruções passo a passo:

  • Acesse console.aws.amazon.com
  • Vá para Serviços -> VPC
  • Abra suas VPCs
  • selecione sua VPC conectada ao seu EC2 e
  • selecione Ações => Editar nomes de host DNS ---> Alterar nomes de host DNS: para SIM

Espero que isto ajude!

Felicidades


6
Esta é a melhor resposta. Deve ser verificado!
Alberto Spelta 22/02

2
A seção que contém VPCs agora é chamada de Rede. E para editar, você clica com o botão direito do mouse na VPC.
Nasch

89
+1 agora você também precisa definir sua sub-rede para permitir a atribuição automática de IP público. Botão direito do mouse sua sub-rede> modificar ip público auto-atribuir> marque a caixa
Adam Hey

1
Mesmo quando tentei adicionar um Elastic Ip, ele não estava funcionando até que a opção de alterar os nomes de host do DNS estivesse definida como yes.
RenatoSz

5
@Vignesh Não recebi um IP ou DNS público para instâncias existentes. Parar e reiniciar não mudou nada. A única coisa que funcionou foi finalizar e recriar a instância.
Y e z

59

Na verdade, existe uma configuração na VPC chamada "DNS Hostnames". Você pode modificar a VPC na qual a instância do EC2 existe e alterá-la para "Sim". Isso deve fazer o truque.

Encontrei esta questão ontem e tentei a resposta acima de Manny, que não funcionou. A configuração VPC, no entanto, fez o trabalho para mim.

Por fim, adicionei um EIP e o uso para conectar.


1
Existe uma maneira de fazer isso sem modificar o VPC como um todo? Quero DNS público para um nó em uma VPC, mas não quero que ele se aplique a todos os outros nós com um IP elástico nessa VPC.
Robbie Averill

2
Eu acho que você deve poder adicionar um IP elástico apenas para esse nó, não?
Mike T

Sim, mas não vai resolver internamente, sem a sua sugestão na resposta :-)
Robbie Averill

usando "DNS Hostnames" eu sou capaz de ver Public DNS
Sujit Dhamale

38

Parece que a instância foi iniciada na VPC e, ao fazê-lo, a caixa de seleção para Automatically assign a public IP address to your instancesnão foi marcada. Portanto, a instância não possui um IP público

Você pode atribuir um IP Elastic a esta instância e, em seguida, efetue login usando esse IP.


1
Eu tentei conectar usando o ip público com putty. mas dizia "servidor recusou nossa chave". Eu converti o arquivo .pem para arquivo .ppk usando puttygen
user1456508

1
qual nome de usuário você está usando? que AMI é essa? que sistema operacional é esse?
slayedbylucifer

3
Existe uma maneira de atribuir um IP público após o fato? Não vejo uma maneira de editar as configurações de detalhes da instância.
David Balažic

2
@slayedbylucifer Que tal uma instância interrompida?
David Balažic

3
@ DavidBalažic, Same. para o ciclo de vida de uma instância, você não pode anexar o IP do pub. O IP do pub pode ser anexado somente no momento do lançamento.
precisa saber é o seguinte

30

No meu caso, achei a resposta de slayedbylucifer e outras que apontam para o mesmo são válidas.
Mesmo que esteja definido que DNS hostname: yes, nenhum IP público é atribuído ao my-pvc (apenas IP Privat).

É definitivamente que IP Público Auto atribuir deve ser definido Enable.
Se não estiver selecionado, por padrão, ele definiráUse subnet setting (Disable)

Atribuir IP público


23
  1. Acesse o Console da AWS.
  2. Vá para Serviços e selecione VPC
  3. Clique em vpc.
  4. selecione a instância e clique em Ação.
  5. Selecione Editar nome do host DNS, clique em Sim.

No final, você receberá seu DNS público.


adicionar DNS público à VPC junto com o IP elástico atribuído. Por alguma razão, o IP elástico pode ser pingado do mundo exterior através do Grupo de Segurança, mas bater um aplicativo web como Solr falhou a menos que haja um DNS público atribuído ..
false_memories

22

Esta é a dica fornecida para resolver o problema que não funciona:

Dica - Se sua instância não tiver um nome DNS público, abra o console da VPC, selecione a VPC e verifique a guia Resumo. Se a resolução DNS ou os nomes de host DNS não forem, clique em Editar e altere o valor para sim.

Supondo que você tenha feito isso e ainda não esteja recebendo um IP público, vá para a sub-rede em questão na tela de administrador da VPC e provavelmente descobrirá que "Atribuir IP público automaticamente" não está definido como yes. Modifique essa configuração então, e eu sei que você não deseja criar isso aqui, crie uma nova instância nessa sub-rede. Tanto quanto posso dizer, você não pode modificar isso no host, tentei e tentei, apenas finalizei.


22

Para mim, o problema estava nas configurações de sub-rede.

  1. Abra https://console.aws.amazon.com/vpc
  2. Vá para sub-redes no menu esquerdo
  3. Escolha sua sub-rede
  4. Modifique as configurações de IP de atribuição automática para ativar

14

Está relacionado ao recurso da VPC chamado "DNS Hostnames". Você pode ativar ou desativar. Vá para a VPC, no menu Ações, selecione o item "Editar nomes de host DNS" e escolha "Sim". Depois disso, o DNS público das instâncias do EC2 deve ser exibido.


Posso usar meus nomes personalizados? Porque quando eu envio e-mails da minha instância, o Gmail mostra enviado pelo endereço ec2..ip ... location..etc em vez do meu nome de domínio
mrid 16/04

@mrid, você precisa associar seu DNS ao DNS gerado do EC2. Você pode fazer isso com o serviço AWS Route53, nosso gerenciador de hospedagem / DNS.
Lior Kirshner 16/04

10

Basta iniciar outra instância (e também excluir a em questão, se ela não tiver uso) e, desta vez, verificar "Atribuir automaticamente um endereço IP público à sua instância". Caso contrário, como sugerido pelo slucililífero; atribua um IP elástico (EIP) à instância e efetue login usando esse IP. Porém, tenha cuidado, se você estiver executando o nível gratuito da AWS, um EIP custará dinheiro - esse é um outro tópico.


6

Primeiro de tudo, pode haver duas razões para isso:

  1. Você criou sua própria VPC e esqueceu de ativar o DNS público.

Para resolver isso:

i) Acesse o console do AWS VPC e selecione o VPC que você criou.

ii) Clique em Ações e ative a Resolução DNS.

            OR
  1. Você não ativou a opção pública de atribuição de ip na configuração do EC2.

Aqui você não pode alterar a configuração; então crie uma imagem ami e recrie a instância a partir disso.


Essas são duas das muitas causas possíveis, certamente não as duas únicas possibilidades.
Madbreaks

6

Aqui vou resumir os problemas mais comuns que ocorrem:

Ao criar uma VPC personalizada, se você deseja que recursos do aws, como instâncias ec2, adquiram endereços IP públicos para que a Internet possa se comunicar com eles, primeiro verifique se a instância ec2 está associada a uma sub-rede pública da VPC personalizada. Isso significa que a sub-rede possui um gateway da Internet associado a ela. Além disso, você precisa garantir que o grupo de segurança da VPC associado à instância ec2 tenha regras que permitam tráfego de entrada para as portas desejadas, como ssh, http e https. MAS aqui estão algumas omissões comuns que ainda ocorrem:

1) Você deve garantir que os nomes de host DNS estejam habilitados para o VPC

2) Você deve garantir que a sub-rede pública vinculada à instância do EC2 tenha seu sinalizador 'atribuição automática de ip público' ativado

3) Se a instância já estiver criada, talvez seja necessário encerrá-la e criar uma nova instância para os campos IP público e DNS público a serem preenchidos.


Quando esse IP público estiver visível na instância lançada, podemos usar esse IP para conectar a instância via putty SSH
rinilnath

5

Depois de verificar as configurações de VPC e sub-rede, minha instância do EC2 ainda não tinha um DNS público. Depois de um dia procurando uma resolução, finalmente descobri.

Eu tive que criar um novo endereço IP elástico e associá-lo à minha instância.

No painel do EC2:

Vá para IPs elásticos na barra lateral.

Clique em Alocar novo endereço e depois em Alocar .

Volte para o painel do EC2. Vá para interfaces de rede .

Selecione a instância do EC2 sem um DNS público. Então Ações - Endereço Associado .

O campo Endereço , selecione o novo endereço IP elástico.

No campo Associar ao endereço IP privado , selecione o endereço IP privado sem DNS público.

Clique em Endereço associado .

Sua instância do EC2 agora deve ter um DNS público.


1
Essa foi a resposta para mim. Minha VPC já foi configurada para ativar o DNS público.
melicent

DNS público exibido, mas ainda não conseguiu se conectar através do scp / putty. mostrando o tempo limite da conexão!
ShivarajRH

2

A alteração na configuração de nomes de host DNS também pode ser feita usando a CLI da AWS:

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

(Onde $ vpc_id é o ID da VPC à qual sua instância está anexada.)

Assim que a VPC for atualizada, a instância obterá um DNS público.


2

Para aqueles que usam CloudFormation, as principais propriedades são EnableDnsSupport e EnableDnsHostnames, que devem ser definidas como true

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

Resposta útil, obrigado. Para sua informação, o padrão para EnableDnsSupport é true, portanto normalmente é suficiente indicar EnableDnsHostnames: true.
jarmod

1

Se a instância estiver na VPC, verifique se "Resolução DNS" e "Nomes de host DNS" estão definidos como "sim". Você pode fazer isso na interface do usuário do console do Aws. HTH!


1

Vá para o console da VPC, selecione sua VPC e clique no menu AÇÕES, selecione Editar nomes de host DNS - selecione Sim. Isso deve consertar.



0

Tentei corrigir o 'DNS não público' quando o EC2 estava em funcionamento, não consegui adicionar um DNS público

isso ocorre mesmo depois de seguir as etapas acima, fazendo mods para a VPC ou a sub-rede

então, tive que fazer modificações na sub-rede e no vpc, antes de iniciar outra instância e, em seguida, iniciar uma nova instância.

a nova instância tinha um DNS público. Foi assim que funcionou para mim.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.