Como exatamente os servidores de nomes lidam com subdomínios desconhecidos?

7

Eu possuo um domínio econemon.com . Abaixo está um trecho da entrada DNS (alguns registros omitidos por brevidade):

econemon.com.       1800    IN  NS  ns.stratoserver.net.
econemon.com.       1800    IN  NS  ns2.stratoserver.net.
econemon.com.       1800    IN  A   85.214.92.48

Esses servidores de nomes são os do meu provedor e, até onde eu entendi, são os autores do meu domínio.

Agora, quando vou perguntar a um deles pelo registro de endereço de um subdomínio inexistente, ele responde com o endereço do meu servidor, assim:

$ host -t A nosuchdomain.econemon.com ns.stratoserver.net
Using domain server:
Name: ns.stratoserver.net
Address: 81.169.163.40#53
Aliases: 

nosuchdomain.econemon.com has address 85.214.92.48

Qual é, claro, exatamente o que eu quero para ter hosts virtuais etc. Agora, digamos que eu adicionei uma entrada

econemon.com.    IN  NS  ns.econemon.com

e o registro A adequado para ns.econemon.com na lista, e que o servidor de nomes realmente tinha registros A diferentes para alguns subdomínios, o que aconteceria?

  • uma solicitação de subdomain.econemon.com geraria um endereço diferente dependendo de qual servidor de nome você solicitou? (Eu acho que seria.)
  • Em caso afirmativo, isso pode realmente ser útil para retornar a um "servidor principal" se meu DNS estiver inativo, mas como faço o cliente usar meu servidor de nomes quando ele estiver ativo?
  • isso atrapalharia o cache dos clientes? (Provavelmente)

(Nota: isso está relacionado ao meu outro dois perguntas )

    
por Hanno Fietz 17.06.2009 / 17:39

3 respostas

3

As pesquisas de DNS são sequenciais, começando no final. Assumindo caches vazios, a pesquisa por MISSING.DOMAIN.COM seria algo assim ...

  • o cliente DNS solicitaria MISSING.DOMAIN.COM de um servidor DNS.
  • o servidor DNS solicita o DNS "root" para o domínio MISSING.DOMAIN.COM e recebe de volta um servidor de nomes para o domínio COM.
  • o servidor DNS solicita o servidor de nomes COM para MISSING.DOMAIN.COM e recebe de volta um servidor de nomes para o domínio DOMAIN.COM.
  • o servidor DNS solicita o servidor de nomes DOMAIN.COM para MISSING.DOMAIN.COM. O servidor de nomes DOMAIN.COM não tem resposta, por isso, reporta um endereço para DOMAIN.COM, dependendo da sua configuração.
  • Se houvesse um registro NS para MISSING.DOMAIN.COM, ele seria retornado e o servidor DNS original consultaria o próximo. Se houvesse um registro A para MISSING, o IP seria reportado de volta.

Essa é a essência disso. Na realidade, é muito mais complicado devido ao armazenamento em cache, ao balanceamento de carga e ao fato de que Name Servers podem ser especificados por nome e, portanto, devem ser consultados também.

Para resumir sua pergunta, você pode especificar vários servidores de nomes para um domínio e configurá-los com informações diferentes . A resposta é sim , mas você deve ser cuidadoso e saber o que está fazendo. Você pode usar o DNS para oferecer suporte a balanceamento de carga e pode usá-lo para oferecer suporte a failover lite . Mas você precisa ter cuidado!

EDIT: em um comentário, bortzmeyer apontou algumas simplificações que, em sua opinião, cruzam a linha do erro. Fiz ajustes que espero resolver as preocupações.

    
por 17.06.2009 / 18:24
4

Essa é uma dessas situações "Não acho que essa palavra significa o que você acha que significa". Você está chamando registros de host em um determinado domínio "subdomínios". Eles não são.

Para responder a todas as suas perguntas:

Uma solicitação para um determinado servidor de nomes retornará o que ele acha que é a resposta apropriada. Parece que você está sugerindo que você poderia adicionar outro servidor DNS como autoritativo para o seu domínio "econemon.com", que teria alguns registros "A" nele que os outros não. Essa não é uma configuração comum ou recomendada do DNS. Você geralmente quer que todos os servidores DNS autoritativos para um determinado domínio tenham os mesmos registros (a menos que você saiba por que está fazendo isso ... também conhecido como DNS de "split-horizon").

Não há uma razão geralmente útil para fazer o que você descreve. Você não pode influenciar a escolha do servidor DNS do resolvedor do computador cliente. Não iria "bagunçar" o cache - o cache funcionaria como deveria. Isso criaria resultados inconsistentes, dependendo do servidor DNS com o qual um cliente conversou, e isso geralmente é ruim.

Um subdomínio seria algo como um domínio "subdomain.example.com" que continha registros de host como "www.subdomain.example.com". O que você está falando são apenas hosts em um domínio.

    
por 17.06.2009 / 17:50
3

Parece que você tem um registro de caractere curinga de DNS para seu domínio.

*.econemon.com.  IN A 81.169.163.40

Isso significa que, se uma consulta resultar em nenhum registro, você obterá um registro A para 81.169.163.40. Na verdade, é mais complicado do que isso. Se houver QUALQUER registro para um "rótulo" (um nome de domínio totalmente qualificado ou FQDN), isso desativará o registro curinga desse rótulo. Portanto, se você tiver um registro MX para foo.econemon.com, uma consulta para o registro A do foo.econemon.com não resultará em nada.

Os registros de curingas são um tanto raros e podem confundir certos sistemas de software. Eu não recomendo usá-los. No entanto, seu ISP está usando-os para que você não precise incomodá-los para atualizar os registros DNS toda vez que você adicionar um subdomínio. Isso faz sentido.

Agora, a sua pergunta ...

O que parece que você está perguntando é: "Se eu tiver um servidor de nomes com dados diferentes dos outros, o que acontecerá?"

Bem, se você tem 2 que o seu ISP é executado com determinados dados, e 1 que você executa com dados diferentes, então há uma chance de 2: 1 de obter dados do seu servidor de ISPs. O sistema DNS não fica procurando por outros servidores de nomes se não encontrar os dados desejados no primeiro. Em outras palavras, você não pode perguntar ao papai se a mamãe disse "não".

Este é um conceito importante no DNS. O DNS precisa ser FAST. Portanto, nunca faça 2 consultas quando 1 for fazer.

É por isso que você deve ter os mesmos dados de zona exatos para um domínio em cada um dos servidores de nome do domínio. (A menos que você tenha algum esquema de balanceamento de carga).

  • would a request for subdomain.econemon.com yield a different address depending on which name server you asked? (I guess it would.)

Sim

  • if so, this might actually be useful to fall back to a "main server" if my DNS was down, but how do I make the client to use my name server when it's up?

Os servidores de nomes são tentados em ordem aleatória. Se o primeiro não responder, o cliente DNS tentará o próximo. Quando todos tiverem sido tentados, o cliente recebe um erro de DNS. Uma vez que cada servidor DNS enviou uma consulta, mas geralmente esperamos 30 segundos (acho) por uma resposta, se você tem 100 servidores de nomes, você estará esperando 50 minutos antes dos erros do cliente. É por isso que normalmente não tenho mais de 3 nameservers para um domínio. Mais não é melhor.

  • would this mess up caching on the clients? (Probably.)

Não realmente. O software é muito robusto. O princípio da robustez de Postel ("seja conservador no que você envia, liberal no que você aceita") entra em jogo aqui. Tem benefícios. Faça consultas para www.yahoo.com, www.microsoft.com e www.google.com. Você verá que cada servidor de nomes fornece endereços IP diferentes dependendo de onde você está no mundo (e outros fatores). Se isso confundisse os clientes, esses sites não sobreviveriam!

    
por 17.06.2009 / 19:40