Re: [GTER] Dúvida em operaçãoDNS

Everton da Silva Marques EMarques at diveo.net.br
Thu Nov 25 10:18:01 -02 2004


> -----Mensagem original-----
> De: Alexandre Hautequest [mailto:hquest at onda.com.br]
> 
> O funcionamento básico de um DNS está diretamente ligado aos 
> root-servers. Imaginando que, meu cliente DNS solicite alguma
> coisa, o  aplicativo servidor "pode" consultar se o requerido
> domínio é um domínio local,

Se a informação existe localmente, ela sempre é usada,
seja do cache local, seja de zonas locais.

> e entregar imediatamente ao cliente a informação solicitada,
> ou consultar um dos root-servers pela informação desejada.

Os root servers são as raízes da hierarquia de busca.
Pense neles como raízes de uma árvore de busca que
contém informações associadas aos vértices. Os
registros NS são os ponteiros que unem os vértices
da árvore.

> Portanto, acredito que tal funcionamento entre a resolução 
> inicial de um nome de domínio varia entre as implementações
> do serviço de servidor DNS. Esta afirmação está correta,
> ou é definido algum "padrão" que rege estes passos iniciais?

O algoritmo é definido nos RFCs. Divergências existem na
prática por conta de múltiplas interpretações, de gostos
pessoais, de bugs, de evolução das especificações.

O algoritmo de mais alto nível deve ser parecido com isso:
- Se possuir a informação localmente (cache ou zona),
  use-a.
- Se o nome em questão estiver sujeito a uma
  cláusula de encaminhamento, consulte os
  servidores indicados.
- Se oferecer serviço recursivo, trilhe a
  hierarquia de nomes, a partir da raiz,
  até os vértices em que estão as informações.
  Coloque a resposta no cache.
- Se não oferecer serviço recursivo, contente-se
  em devolver registros NS.
- Envie a resposta.

> Continuando, como é feita a separação da carga pelos 
> root-servers? Existe algum critério que diga "os
> domínios .br são servidos, por exemplo, pelo (cluster)
> f.root-servers.net", ou é algo do estilo "round-robin",
> ora consulto o servidor a, ora o b, e por ai vai?

Conceitualmente, não há informações úteis nos root
servers. Eles são apenas a raíz da árvore, com ponteiros
(registros NS) para o próximo nível.

Os clusters dos root servers já fazem um balanceamento "interno".

Os resolvedores (incluindo a porção resolvedora dos servidores)
podem ser burrinhos e espalhar a carga apenas através de
round-robin. Ou usar outros critérios, como o BIND, que tenta
concentrar o número maior de consultas nos servidores que
historicamente estão respondendo mais rapidamente.

> Após isto, o servidor root-server me entrega a informação 
> solicitada, ou me reencaminha ao servidor TLD do país
> (aproveitando: o  equipamento, por exemplo, ns1.dns.br,
> é a autoridade máxima de informações para os domínios
> .br, ou .com.br, ou não é nada), ou me encaminha
> diretamente ao servidor DNS definido com o tipo NS
> especificado na zona do domínio?

Um servidor raíz não oferece outra informação que o
ponteiro (registro NS) para os próximos servidores
da hierarquia responsáveis pelo nome que você
perguntar. Portanto, a sua segunda opção: ele
sempre entrega a referência, na esperança de que
você a guarde no cache e use como atalho para
consultas futuras.

> E qual a prioridade de escolha entre os servidores primários e
> secundários/terciários de um domínio? Existe algum "peso" 
> para eles, ou é uma mera "redundância", para o caso de
> o "principal" falhar!?

Apenas redundância.

Não existe prioridade. Ou o servidor escolhido é aleatório,
para os resolvedores burros que fazem round-robin; ou é
tipicamente baseada nos tempos de resposta, como no BIND.

Essa noção de master/slaves é apenas referente ao serviço
de replicação: espera-se que o administrador use esses
termos para referir-se ao mecanismo que transporta uma
zona mestre para possivelmente múltiplos servidores
escravos.



More information about the gter mailing list