Como posso solucionar problemas de resolução de DNS com minha zona hospedada privada do Route 53?

9 minuto de leitura
0

Quero solucionar problemas de resolução de DNS com minha zona hospedada privada do Amazon Route 53.

Resolução

Observação: se você receber erros ao executar comandos da AWS Command Line Interface (AWS CLI), certifique-se de estar usando a versão mais recente da AWS CLI.

Confirmar se você ativou o suporte para DNS na VPC

Para permitir a resolução de registros de zona hospedada privada, você deve ativar o suporte para DNS em sua nuvem privada virtual (VPC). Verifique se DNSSupport e DNSHostnames estão definidas como True na sua VPC.

Confirmar se você associou o ID do VPC correta à zona hospedada privada

Quando você associa uma zona hospedada privada a uma VPC, o Route 53 Resolver cria uma regra automaticamente definida e a associa à VPC. Os recursos dessa VPC podem consultar o Resolver para resolver registros de DNS na zona hospedada privada.

Confirme se você associou a ID da VPC correta à sua zona hospedada privada. Além disso, verifique se você está consultando os registros de recursos do domínio dentro da mesma VPC.

Para uma lista de VPCs associadas a uma zona hospedada, execute o seguinte comando na AWS CLI:

aws route53  list-hosted-zones-by-vpc --vpc-id VPC_ID --vpc-region REGION_ID

Observação: substitua VPC_ID e REGION_ID pelos valores relevantes.

Para uma lista de zonas privadas hospedadas associadas a VPCs específicas, execute o seguinte comando na AWS CLI:

aws route53 get-hosted-zone --id VPC_ID

Observação: substitua VPC_ID pelo seu valor relevante.

Confirme se você configurou regras de encaminhamento para domínios de zona hospedada privada em servidores DNS personalizados para o servidor DNS fornecido pela Amazon (CIDR+2).

Se você configurou servidores DNS personalizados ou servidores do Active Directory nas opções de DHCP para DNS em sua VPC, verifique as seguintes configurações:

  • Na regra de encaminhamento, confirme se seus servidores encaminham consultas de DNS de domínio privado para o endereço IP dos servidores DNS da sua VPC fornecidos pela Amazon. Por exemplo, se o intervalo CIDR principal da sua VPC for 172.31.0.0/16, o endereço IP do servidor DNS da VPC será 172.31.0.2. Esse é o intervalo de rede VPC mais dois.
  • Confirme se o domínio que você configurou nos servidores personalizados é diferente da sua zona hospedada privada. Se o domínio for igual à sua zona hospedada privada, significa que o servidor tem autoridade para esse domínio. Nesse caso, o servidor não entra em contato com o servidor DNS fornecido pela Amazon para domínios de zonas hospedadas privadas.

Revisar as configurações personalizadas em resolv.conf

Se você tiver respostas ou resolução de DNS intermitentes, revise as definições de configuração da sua instância de origem em resolv.conf .

Por exemplo, você configura a opção rotate em resolv.conf para balancear a carga de consultas de DNS entre o servidor de DNS da Amazon e o servidor público de resolução do Google (8.8.8.8). Nesse caso, estas são as configurações de resolv.conf:

options rotate; generated by /usr/sbin/dhclient-script
nameserver 8.8.8.8
nameserver 172.31.0.2

Na sua primeira consulta ao resolvedor público do Google (8.8.8.8), você recebe a resposta esperada de NXdomain. Você recebe essa resposta porque o resolvedor está tentando encontrar a resposta na zona hospedada pública em vez de na zona hospedada privada:

Private hosted Zone Record - resolvconf.local\[ec2-user@ip-172-31-253-89 etc\]$ curl -vks http://resolvconf.local
\* Rebuilt URL to: http://resolvconf.local/
\* Could not resolve host: resolvconf.local

15:24:58.553320 IP ip-172-31-253-89.ap-southeast-2.compute.internal.40043 > dns.google.domain: 65053+ A? resolvconf.local. (34)
15:24:58.554814 IP dns.google.domain > ip-172-31-253-89.ap-southeast-2.compute.internal.40043: 65053 NXDomain 0/1/0 (109)

No entanto, a segunda consulta foi resolvida com êxito. A segunda consulta é bem-sucedida porque acessa o resolvedor de DNS da VPC associado a sua zona hospedada privada:

[ec2-user@ip-172-31-253-89 etc]$ curl -vks http://resolvconf.local* Rebuilt URL to: http://resolvconf.local/
*   Trying 1.1.1.1...
* TCP_NODELAY set
* Connected to resolvconf.local (1.1.1.1) port 80 (#0)

15:25:00.224761 IP ip-172-31-253-89.ap-southeast-2.compute.internal.51578 > 172.31.0.2.domain: 7806+ A? resolvconf.local. (34)
15:25:00.226527 IP 172.31.0.2.domain > ip-172-31-253-89.ap-southeast-2.compute.internal.51578: 7806 1/0/0 A 1.1.1.1 (50)

Confirmar se as zonas privadas hospedadas não têm namespaces sobrepostos

Quando várias zonas têm namespaces sobrepostos (como example.com e test.example.com), o Resolver direciona o tráfego para a zona hospedada com base na correspondência mais específica. Se houver uma zona correspondente, mas nenhum registro que corresponda ao nome de domínio e ao tipo na solicitação, o Resolver não encaminhará a solicitação. Em vez disso, o Resolver retornará NXDOMAIN (domínio inexistente) para o cliente.

Confirme se você configurou o registro correto na zona hospedada privada mais específica para uma resolução de DNS bem-sucedida.

Por exemplo, digamos que você tenha duas zonas privadas hospedadas com os seguintes registros:

Nome da zona hospedada privadaNome do registroValor
localoverlap.privatevpc.local60.1.1.1
privatevpc.localoverlap.privatevpc.local50.1.1.1

A solicitação recebe a seguinte resposta da zona hospedada privada correspondente mais específica:

[ec2-user@IAD-BAS-INSTANCE ~]$ dig overlap.privatevpc.local +short50.1.1.1

Confirmar se não há delegação de zona configurada na zona hospedada privada

Zonas privadas hospedadas não oferecem suporte para delegação de zonas. Se a delegação estiver configurada, o cliente receberá o código de resposta “Servfail” do resolvedor da VPC.

Use a AWS CLI para confirmar que a delegação da zona não está configurada na zona privada hospedada, como no exemplo a seguir:

Zona hospedada privada: abc.com Registro NS de delegação para: kc.abc.com Registro de recurso: test.kc.abc.com

[ec2-user@ip-172-31-0-8 ~]$ dig test.kc.abc.com;; ->>HEADER<<- opcode: QUERY, status: SERVFAIL, id: 63414
;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 0, ADDITIONAL: 0
;; QUESTION SECTION:
;test.kc.abc.com        IN      A
;; Query time: 15 msec
;; SERVER: 172.31.0.2#53(172.31.0.2)
;; WHEN: Fri Apr 16 15:57:37 2021
;; MSG SIZE  rcvd: 48

Confirmar se a política de roteamento do registro do recurso tem suporte em zonas hospedadas privadas.

Confirme se você configurou uma política de roteamento no seu registro de recursos que tenha suporte por uma zona hospedada privada:

  • Roteamento simples
  • Roteamento por failover
  • Roteamento por resposta com vários valores
  • Roteamento ponderado
  • Roteamento baseado em latência
  • Roteamento por geolocalização

Confirme se a regra do Resolver e seu endpoint de entrada são resolvidas para VPCs diferentes

Quando o endpoint de saída em uma regra do Resolver aponta para um endpoint de entrada que compartilha uma VPC com a regra, o resultado é um loop. Nesse loop, a consulta passa continuamente entre os endpoints de entrada e saída.

Você ainda pode associar a regra de encaminhamento a outras VPCs que são compartilhadas com outras contas. Para fazer isso, use o AWS Resource Access Manager (AWS RAM). As zonas privadas hospedadas associadas ao hub ou a uma VPC central são resolvem desde consultas até endpoints de entrada. Uma regra de resolução de encaminhamento não altera essa resolução, como no exemplo a seguir:

VPC do hub: VPC A - CIDR 172.31.0.0/16 VPC spoke: VPC B - CIDR 172.32.0.0/16 Endereço IP de entrada: Endereços IP de destino 172.31.253.100 e 172.31.2.100 na regra de encaminhamento: Regra 172.31.253.100 e 172.31.2.100 associada a VPCs: Cliente VPC A e VPC B: 172-32-254-37

ubuntu@ip-172-32-254-37:~$ dig overlap.privatevpc.local;; ->>HEADER<<- opcode: QUERY, status: SERVFAIL, id: 9007
;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 0, ADDITIONAL: 1
;; QUESTION SECTION:
;overlap.privatevpc.local. IN A
;; Query time: 2941 msec
;; SERVER: 172.32.0.2#53(172.32.0.2)

Nessa saída, a solicitação de DNS salta continuamente entre os endpoints de entrada e saída. A solicitação verifica a regra associada à VPC A e envia a consulta de volta ao endpoint de saída. Depois de várias tentativas, a consulta atinge o tempo limite e responde com um código de resposta Servfail.

Para corrigir esse problema e interromper o loop, remova a associação VPC do hub (VPC A) com a regra. Em seguida, você recebe uma resposta bem-sucedida da zona hospedada privada:

ubuntu@ip-172-32-254-37:~$ dig overlap.privatevpc.local;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 58606
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1
;overlap.privatevpc.local. IN A
;; ANSWER SECTION:
overlap.privatevpc.local. 0 IN A 50.1.1.1
;; Query time: 5 msec
;; SERVER: 172.32.0.2#53(172.32.0.2)

Confirme se o resolvedor on-premises envia uma solicitação recursiva

Se você usar consultas on-premises para o Route 53 Resolver, poderá encaminhar consultas de DNS de resolvedores em sua rede para um resolvedor VPC. Para fazer isso, use o endpoint de entrada do Resolver. Essa ação permite que você resolva nomes de domínio para recursos da AWS, como registros em uma zona hospedada privada.

Em alguns casos, você pode descobrir que a zona hospedada privada não está sendo resolvida com êxito a partir do resolvedor on-premises. Esse comportamento ocorre porque o resolvedor on-premises está enviando uma consulta iterativa em vez de uma solicitação recursiva. O endpoint de entrada está oferecendo suporte a consultas recursivas para resoluções de DNS bem-sucedidas.

Para verificar o tipo de resolução, use uma captura de pacote no resolvedor de DNS (on-premises). Em seguida, revise os sinalizadores de DNS (recursão desejada = 0). Para testar a resolução, envie uma solicitação iterativa com o comando +norecurse dig ou defina norecurse com nslookup:

Endereço IP do terminal de entrada: 172.31.253.150

Endereço IP do resolvedor on-premises: 10.0.4.210

Uma consulta iterativa com falha ao endereço IP de entrada resulta na seguinte saída:

[ec2-user@IAD-BAS-INSTANCE ~]$ dig @172.31.253.150 overlap.privatevpc.local +norecurse; <<>> DiG 9.11.0rc1 <<>> @172.31.253.150 overlap.privatevpc.local +norecurse
; (1 server found)
;; global options: +cmd
;; connection timed out; no servers could be reached

Uma consulta recursiva bem-sucedida resulta na seguinte saída:

[ec2-user@IAD-BAS-INSTANCE ~]$ dig @172.31.253.150 overlap.privatevpc.local;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 19051
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0
;; QUESTION SECTION:
;overlap.privatevpc.local.      IN      A
;; ANSWER SECTION:
overlap.privatevpc.local. 0     IN      A       50.1.1.1
;; Query time: 200 msec
;; SERVER: 172.31.253.150#53(172.31.253.150)

Confirme se você configurou as prioridades de regras corretas para o DNS fornecido pela Amazon

Quando a instância do cliente envia uma consulta ao Resolver (servidor DNS fornecido pela AWS), o Resolver verifica as regras da instância para onde rotear a solicitação.

Em geral, a regra mais específica tem prioridade. Se houver uma regra do Resolver test.example.com e uma zona hospedada privada longest.test.example.com, verifique se o domínio longest.test.example.com correspondente à zona hospedada privada.

Se as regras estiverem no mesmo nível de domínio, elas terão a seguinte prioridade:

  1. Regra do resolvedor
  2. Regra de zona hospedada privada
  3. Regra interna

Por exemplo, se houver uma regra do Resolver test.example.com e uma zona hospedada privada test.example.com, a regra do Resolver terá prioridade. A consulta é encaminhada para os servidores ou endereços IP de destino que estão configurados na regra.

Informações relacionadas

Trabalhar com zonas hospedadas privadas

Quais opções do Amazon VPC eu preciso ativar para usar minha zona hospedada privada?

Evite configurações de loop com endpoints Resolver

AWS OFICIAL
AWS OFICIALAtualizada há 8 meses