aws private instance não pode resolver o nome do host (VPC com instância NAT)

1

Por favor, note que esta questão é diferente de um aqui onde eles usaram um padrão AMI vs NAT AMI (no meu caso). Também no meu caso, a instância privada pode acessar a Internet através do ipaddress, mas não através da resolução do nome do host.

Aqui está minha configuração:

  • VPC não padrão com 1 sub-rede pública & 1 sub-rede privada.
  • Instância NAT na sub-rede pública com um IP elástico. Usado AMI NAT NAT da Comunidade: amzn-ami-vpc-nat-hvm-2017.09.1.20180108-x86_64-ebs ami-d4a883b1. Amazon Linux AMI 2017.09.1.20180108 x86_64 VPC NAT HVM EBS
  • Grupo de segurança de acordo com a documentação do NAT Security Group anexada à instância do NAT acima
  • A instância privada (na sub-rede privada) pode acessar a Internet por meio da instância NAT, desde que use o endereço IP. Por exemplo: curl http://74.125.135.99/ funciona, mas curl http://www.google.com não funciona

instância privada:

$cat /etc/resolv.conf
# Dynamic resolv.conf(5) file for glibc resolver(3) generated by resolvconf(8)
#     DO NOT EDIT THIS FILE BY HAND -- YOUR CHANGES WILL BE OVERWRITTEN
nameserver 127.0.0.1
search us-east-2.compute.internal

$ curl http://74.125.135.99/
<HTML><HEAD><meta http-equiv="content-type" content="text/html;charset=utf-8">
<TITLE>301 Moved</TITLE></HEAD><BODY>
<H1>301 Moved</H1>
The document has moved
<A HREF="http://www.google.com/">here</A>.
</BODY></HTML>

$ curl http://www.google.com/
curl: (6) Could not resolve host: www.google.com

Exemplo de NAT:

$ cat /etc/resolv.conf
; generated by /sbin/dhclient-script
search us-east-2.compute.internal
options timeout:2 attempts:5
nameserver 10.0.0.2

UPDATE: as seguintes configurações de DNS estão no meu VPC:

DNS resolution: yes
DNS hostnames: yes
    
por mpprdev 15.01.2018 / 05:23

1 resposta

2

A resolução de DNS em um VPC não depende do dispositivo NAT, seja uma instância NAT ou NAT, e devido à maneira como é implementada, é muito difícil, se não impossível, romper o DNS por meio da configuração incorreta da rede, porque o tráfego não precisa ser permitido por meio de grupos de segurança e ACLs de rede.

Se não estiver funcionando, isso sugere que não está ativado.

Verifique se enableDnsSupport está definido como true .

link

Você provavelmente desejará ativar enableDnsHostnames enquanto estiver lá. Ele não torna suas instâncias "públicas", apesar do fato de que a descrição documentada implica que sim.

Raramente há casos para não ativar nenhuma dessas opções.

    
por 15.01.2018 / 06:27