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.

user1456508
fonte
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

Esteira
fonte
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.

Mike T
fonte
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.

slayedbylucifer
fonte
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

Chetabahana
fonte
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.

Jitendra Bhalothia
fonte
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.

Bill Parker
fonte
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
Neftanic
fonte
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.

Lior Kirshner
fonte
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.

Manny Fernandez
fonte
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.

Patrick R
fonte
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.

Donato
fonte
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.

BenR
fonte
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.

Paul Pritchard
fonte
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'
        }]
    }
  }

fonte
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!

Trunal Bhanse
fonte
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.

Kingz
fonte
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.

1082E1984
fonte