Como o DNS funciona e como soluciono falhas parciais ou intermitentes de DNS?

8 minuto de leitura
0

Como o DNS funciona e como soluciono falhas parciais ou intermitentes de DNS?

Resolução

Visão geral do DNS

O DNS encaminha os usuários para aplicações da Internet, convertendo nomes fáceis de lembrar (como www.example.com) em endereços IP numéricos, como 192.0.2.1. Esse processo é chamado de "resolução de DNS". Um servidor de nomes oficial resolve um nome de domínio para um endereço IP ou vários endereços IP e passa o endereço IP pela cadeia de resolvedores de DNS para o cliente (por exemplo, o computador de alguém solicitando a visualização de um site). O cliente então usa esse endereço IP para se conectar ao servidor em que o site está hospedado. Quando o DNS não está funcionando corretamente, os servidores DNS não conseguem resolver nomes de domínios. Por isso, eles não conseguem fornecer aos clientes o endereço IP do servidor no qual o site está hospedado. Isso significa que esses sites não podem ser acessados pela Internet.

Para obter mais informações, consulte O que é o DNS?

Cenários de falha de DNS parcial, temporária ou intermitente

Em alguns casos, um cliente sofre falhas de DNS por um curto período de tempo ou de maneira intermitente. A seguir estão os cenários comuns que podem causar falha parcial do DNS:

Cenário 1: servidores de nomes configurados incorretamente no registrador

Às vezes, um ou mais servidores de nomes estão configurados incorretamente no registrador. Uma pesquisa no "whois" fornece os servidores de nomes que estão configurados no registrador do domínio. Nesse caso, durante a resolução do DNS, se os servidores de nomes registrados não responderem ou responderem com informações inesperadas, o resolvedor local retornará uma mensagem SERVFAIL. Porém, em alguns casos, os resolvedores locais podem tentar a solicitação com um servidor de nomes diferente e retornar o resultado.

Além disso, os resolvedores locais podem armazenar em cache os servidores de nomes errados durante a vida útil (TTL) e enviar a próxima consulta ao servidor de nomes incorretamente configurado.

Cenário 2: servidores de nomes alterados na zona hospedada

Outro motivo para a falha parcial do DNS é quando o registro NS de um domínio está incorretamente configurado na zona hospedada. Nesse caso, os servidores de nomes existentes foram atualizados ou alguns servidores de nomes adicionais foram adicionados ao valor do registro NS.

Nesse caso, alguns clientes podem enfrentar falhas parciais de DNS quando o resolvedor tentar resolver o domínio usando o servidor de nomes errado.

Cenário 3: o resolvedor de DNS do cliente não consegue resolver o domínio

Às vezes, os clientes definem resolvedores personalizados ou incorretos no arquivo de configuração de resolvedores, como resolv.conf no Linux. Se esse for o caso e você estiver resolvendo o domínio de uma instância do Amazon Elastic Compute Cloud (Amazon EC2) em uma Amazon Virtual Private Cloud (Amazon VPC), a instância do EC2 usará os servidores de nomes definidos em resolv.conf.

Cenário 4: servidor DNS fornecido pela Amazon limitando as consultas de DNS

Os servidores DNS fornecidos pela Amazon impõem um limite de 1024 pacotes por segundo por interface de rede elástica. Os servidores DNS fornecidos pela Amazon rejeitam qualquer tráfego que exceda esse limite. Devido ao controle de utilização do DNS, o DNS atinge o tempo limite intermitentemente. Você pode ativar o armazenamento em cache na instância ou aumentar o temporizador de repetição de DNS na aplicação para resolver esse problema.

Cenário 5: o URL do domínio é resolvido da Internet, mas não da instância do EC2

As consultas de DNS do seu domínio sempre são resolvidas na zona hospedada privada se você tiver feito o seguinte:

Se o registro consultado do seu domínio não estiver presente na zona hospedada privada, a consulta de DNS falhará e não será encaminhada ao domínio público. Como o registro DNS está presente na zona de domínio público, ele é resolvido na Internet.

Solucionar falhas de DNS em sistemas operacionais baseados em Linux

Use o comando dig para realizar uma pesquisa no servidor DNS do cliente que está configurado no arquivo /etc/resolv.conf do host.

$ dig www.amazon.com

; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.37.rc1.49.amzn1 <<>> www.amazon.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 13150
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0

;; QUESTION SECTION:
;www.amazon.com.    IN    A

;; ANSWER SECTION:
www.amazon.com.        41    IN    A    54.239.17.6

;; Query time: 1 msec
;; SERVER: 10.108.0.2#53(10.108.0.2)
;; WHEN: Fri Oct 21 21:43:11 2016
;; MSG SIZE rcvd: 48

No exemplo anterior, a seção de respostas mostra que 54.239.17.6 é o endereço IP do servidor HTTP para www.amazon.com.

Se você adicionar a variável +trace, o comando dig também poderá realizar uma pesquisa recursiva de um registro DNS, conforme mostrado no exemplo a seguir:

$ dig +trace www.amazon.com

; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.37.rc1.49.amzn1 <<>> +trace www.amazon.com
;; global options: +cmd
.        518400    IN    NS    J.ROOT-SERVERS.NET.
.        518400    IN    NS    K.ROOT-SERVERS.NET.
.        518400    IN    NS    L.ROOT-SERVERS.NET.
…
;; Received 508 bytes from 10.108.0.2#53(10.108.0.2) in 31 ms

com.        172800    IN    NS    a.gtld-servers.net.
com.        172800    IN    NS    b.gtld-servers.net.
com.        172800    IN    NS    c.gtld-servers.net.
…
;; Received 492 bytes from 193.0.14.129#53(193.0.14.129) in 93 ms
amazon.com.        172800    IN    NS    pdns1.ultradns.net.
amazon.com.        172800    IN    NS    pdns6.ultradns.co.uk.
…
;; Received 289 bytes from 192.33.14.30#53(192.33.14.30) in 201 ms
www.amazon.com.    900    IN    NS    ns-1019.awsdns-63.net.
www.amazon.com.    900    IN    NS    ns-1568.awsdns-04.co.uk.
www.amazon.com.    900    IN    NS    ns-277.awsdns-34.com.
…
;; Received 170 bytes from 204.74.108.1#53(204.74.108.1) in 87 ms

www.amazon.com.    60     IN    A    54.239.26.128
www.amazon.com.    1800   IN    NS   ns-1019.awsdns-63.net.
www.amazon.com.    1800   IN    NS   ns-1178.awsdns-19.org.
…
;; Received 186 bytes from 205.251.195.251#53(205.251.195.251) in 7 ms

Também é possível realizar uma consulta que retorne somente os servidores de nomes, conforme mostrado no exemplo a seguir:

$ dig -t NS www.amazon.com

; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.37.rc1.49.amzn1 <<>> -t NS www.amazon.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 48631
;; flags: qr rd ra; QUERY: 1, ANSWER: 4, AUTHORITY: 0, ADDITIONAL: 0

;; QUESTION SECTION:
;www.amazon.com.        IN    NS

;; ANSWER SECTION:
www.amazon.com.        490    IN    NS    ns-1019.awsdns-63.net.
www.amazon.com.        490    IN    NS    ns-1178.awsdns-19.org.
www.amazon.com.        490    IN    NS    ns-1568.awsdns-04.co.uk.
www.amazon.com.        490    IN    NS    ns-277.awsdns-34.com.

;; Query time: 0 msec
;; SERVER: 10.108.0.2#53(10.108.0.2)
;; WHEN: Fri Oct 21 21:48:20 2016
;; MSG SIZE rcvd: 170

No exemplo anterior, www.amazon.com tem os quatro servidores de nomes oficiais a seguir:

  • ns-1019.awsdns-63.net.
  • ns-1178.awsdns-19.org.
  • ns-1568.awsdns-04.co.uk.
  • ns-277.awsdns-34.com.

Qualquer um desses quatro servidores pode responder com autoridade a perguntas sobre o nome do host www.amazon.com. Use o comando dig para direcionar diretamente um servidor de nomes específico. Verifique se cada servidor de nomes oficial de um determinado domínio responde corretamente.

Veja a seguir um exemplo de saída de uma consulta para www.amazon.com em um de seus servidores de nomes oficiais (ns-1019.awsdns-63.net). A resposta do servidor indica que www.amazon.com está disponível em 54.239.25.192:

$ dig www.amazon.com @ns-1019.awsdns-63.net.
; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.37.rc1.49.amzn1 <<>> www.amazon.com @ns-1019.awsdns-63.net.
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 31712
;; flags: qr aa rd; QUERY: 1, ANSWER: 1, AUTHORITY: 4, ADDITIONAL: 0
;; WARNING: recursion requested but not available

;; QUESTION SECTION:
;www.amazon.com.    IN    A

;; ANSWER SECTION:
www.amazon.com.        60    IN    A    54.239.25.192

;; AUTHORITY SECTION:
www.amazon.com.        1800    IN    NS    ns-1019.awsdns-63.net.
www.amazon.com.        1800    IN    NS    ns-1178.awsdns-19.org.
www.amazon.com.        1800    IN    NS    ns-1568.awsdns-04.co.uk.
…

;; Query time: 7 msec
;; SERVER: 205.251.195.251#53(205.251.195.251)
;; WHEN: Fri Oct 21 21:50:00 2016
;; MSG SIZE rcvd: 186

A linha a seguir mostra que ns-576.awsdns-08.net é um servidor de nomes oficial para amazon.com:

;; flags: qr aa rd; QUERY: 1, ANSWER: 1, AUTHORITY: 4, ADDITIONAL: 0

A presença do sinalizador aa indica que o servidor de nomes ns-1019.awsdns-63.net deu uma resposta oficial para o registro de recursos www.amazon.com.

Solucionar falhas de DNS em sistemas operacionais baseados em Windows

Use o utilitário nslookup para retornar o endereço IP associado a um nome de host, conforme mostrado no exemplo a seguir:

C:\>nslookup www.amazon.com
Server:     ip-10-20-0-2.ec2.internal
Address:    10.20.0.2

Non-authoritative answer:
Name:       www.amazon.com
Address:    54.239.25.192

Para determinar os servidores de nomes oficiais para um nome de host usando o utilitário nslookup, use o sinalizador -type=NS:

C:\>nslookup -type=NS www.amazon.com
Server:     ip-10-20-0-2.ec2.internal
Address:    10.20.0.2

Non-authoritative answer:
www.amazon.com    nameserver = ns-277.awsdns-34.com
www.amazon.com    nameserver = ns-1019.awsdns-63.net
www.amazon.com    nameserver = ns-1178.awsdns-19.org
…

Para ver se ns-277.awsdns-34.com para www.amazon.com responde corretamente a uma solicitação para www.amazon.com, use a seguinte sintaxe:

C:\>nslookup www.amazon.com ns-277.awsdns-34.com
Server:     UnKnown
Address:    205.251.193.21

Name:       www.amazon.com
Address:    54.239.25.200

AWS OFICIAL
AWS OFICIALAtualizada há 2 anos