Como funciona o servidor de nomes DNS?

14

Temos dois servidores DNS listados em nosso registro NS. Ontem à noite, um dos nossos servidores DNS caiu. Como esperado, alguns servidores DNS não estavam resolvendo nossos nomes de host. Supus que isso seria temporário e começaria a funcionar assim que o TTL de nossos registros NS expirasse (1 hora).

Mais de uma hora depois, eu ainda recebia o tempo limite do DNS de desktops que usavam os servidores Earthlink, Verizon e OpenDNS. Eu testei para ver se o outro servidor DNS estava respondendo:

dig @ns2.example.com www.example.com +short

Isso funcionou.

Minhas perguntas:

  1. Alguém tem uma resposta sobre por que outros servidores DNS não estavam atingindo nosso outro servidor DNS mesmo depois que o TTL expirou?
  2. Os servidores DNS preferem o servidor DNS principal de um domínio (a partir do SOAregistro)?
  3. Existe algum algoritmo usado para escolher um servidor de nomes nos registros NS disponíveis? Estou assumindo que isso seja específico da implementação, mas talvez haja alguns padrões que se apliquem aqui.
Belmin Fernandez
fonte
O TTL não tem nada a ver com nada. Como nenhum registro foi alterado, isso não tem efeito relevante.
David Schwartz
Ah, eu vejo isso agora. Doh.
Belmin Fernandez 31/10/11

Respostas:

17

Esta é uma irritação infeliz. Supõe-se que vários servidores DNS aumentem a confiabilidade, mas, na prática, freqüentemente têm o efeito inverso.

O problema é que o cliente aguarda apenas uma resposta e o servidor aguarda a mesma quantidade de tempo. Digamos que você tenha dois servidores DNS, A e B. Digamos A está funcionando e B falhou. Isto acontece:

  1. O cliente se conecta ao servidor de nomes Z e solicita as informações. Z escolhe B e envia uma consulta.

  2. O tempo limite do cliente expirou porque o servidor de nomes Z não respondeu.

  3. O cliente tenta o servidor de nomes Y. Y escolhe B e envia uma consulta.

  4. O servidor de nomes Z atinge o tempo limite e tenta A. Ele obtém a resposta certa, mas o cliente não está mais esperando.

  5. O tempo limite do cliente expirou porque o servidor de nomes Y não respondeu.

  6. O cliente desiste, pois ambos os servidores de nomes falham em responder.

  7. O servidor de nomes Y expira e tenta A. Ele obtém a resposta certa, mas o cliente não está mais esperando.

E não há boa solução. Quanto mais você esperar para ver se um servidor de nomes responde, mais você precisará esperar, porque o servidor de nomes que você está aguardando espera mais. Indiscutivelmente, o problema era que Y e Z não desistiram de B rápido o suficiente.

Essencialmente, se algum dos seus servidores de nomes estiver fora do ar, alguns clientes, por pura má sorte, expirarão porque tentaram apenas os ruins.

Pelo lado positivo, se você tiver dois servidores de nomes e um falhar, cerca de 75% dos servidores de nomes obterão uma resposta, em vez de 0%.

David Schwartz
fonte
Eu vejo o que você quer dizer. Eek. Portanto, o servidor de nomes do cliente ( Z) não armazenará em cache qual servidor de nomes ele usou pela última vez que funcionou?
Belmin Fernandez 31/10/11
1
Alguns servidores de nomes fazem isso e às vezes isso ajuda. Geralmente depende da maneira precisa pela qual o servidor de nomes falhou. Você deve se lembrar que tudo isso está em cima do UDP, para que a falha em obter uma resposta (mesmo após uma retransmissão ou duas) não prove que há algo errado com o servidor de nomes.
David Schwartz
Li na minha cópia do DNS e do BIND (Paul Albitz e Cricket Lui, O'Rielly p278) que os servidores Bind 8.2.3 escolhem o servidor que responde mais rapidamente em sua lista de encaminhadores, o que significa que, se o servidor da lista falhar, ele é praticamente descartado automaticamente. A ligação 9 ainda não implementa isso, consulta os servidores de encaminhamento em ordem de lista. Alguém sabe se isso mudou?
31411 Jaydee
Só para esclarecer, para aqueles menos versados ​​nas configurações de DNS (demorei um pouco para entender isso), os servidores de nomes DNS Z e Y neste exemplo são provavelmente servidores de nomes recursivos baseados na rede do cliente, por exemplo, os servidores DNS que um provedor de serviços de Internet fornece para seus clientes via DHCP. E o problema surge quando esses servidores têm um valor de tempo limite maior que o resolvedor DNS do cliente (por exemplo, sistema operacional do dispositivo.)
Jordan Rieger