Esta é uma pergunta canônica sobre DNS (Domain Name Service).
Se meu entendimento do sistema DNS estiver correto, o registro .com manterá uma tabela que mapeia domínios (www.example.com) para servidores DNS.
Qual a vantagem? Por que não mapear diretamente para um endereço IP?
Se o único registro que precisa ser alterado quando estou configurando um servidor DNS para apontar para um endereço IP diferente, está localizado no servidor DNS, por que o processo não é instantâneo?
Se o único motivo do atraso são os caches de DNS, é possível ignorá-los, para que eu possa ver o que está acontecendo em tempo real?
domain-name-system
sabof
fonte
fonte
You can not able full understand DNS unless you are name Paul Mockapetris, Paul Vixie or Cricket Liu.
twitter.com/DEVOPS_BORAT/status/249006925767909376Respostas:
Na verdade, é mais complicado do que isso - em vez de um "registro central (que) mantém uma tabela que mapeia domínios (www.mysite.com) para servidores DNS", existem várias camadas de hierarquia
Há um registro central (os servidores raiz) que contêm apenas um pequeno conjunto de entradas: os (servidor de nomes) NS registros para todos os domínios de nível superior -
.com
,.net
,.org
,.uk
,.us
,.au
, e assim por diante.Esses servidores contêm apenas registros NS para o próximo nível abaixo. Para pegar um exemplo, os servidores de nomes para o
.uk
domínio só tem entradas para.co.uk
,.ac.uk
e as outras zonas segundo nível em uso no Reino Unido.Esses servidores contêm apenas registros NS para o próximo nível abaixo - para continuar o exemplo, eles informam onde encontrar os registros NS
google.co.uk
. É nesses servidores que você finalmente encontrará um mapeamento entre um nome de hostwww.google.co.uk
e um endereço IP.Como uma ruga extra, cada camada também servirá para registros de 'cola'. Cada registro NS mapeia um domínio para um nome de host - por exemplo, os registros NS para a
.uk
listansa.nic.uk
como um dos servidores. Para chegar ao próximo nível, precisamos descobrir os registros NS denic.uk
are e eles também incluemnsa.nic.uk
. Então agora precisamos saber o IP densa.nic.uk
, mas para descobrir isso, precisamos fazer uma consulta paransa.nic.uk
, mas não podemos fazer essa consulta até conhecermos o IP paransa.nic.uk
...Para resolver esse dilema, os servidores para
.uk
adicionar o registro Ansa.nic.uk
naADDITIONAL SECTION
resposta (resposta abaixo aparada por questões de brevidade):Sem esses registros de cola extra, nunca poderíamos encontrar os servidores de nomes
nic.uk.
e, portanto, nunca poderíamos procurar nenhum domínio hospedado lá.Para voltar às suas perguntas ...
Por um lado, ele permite que as edições de cada zona individual sejam distribuídas. Se você deseja atualizar a entrada
www.mydomain.co.uk
, basta editar as informações nomydomain.co.uk
servidor de nomes do seu. Não há necessidade de notificar os.co.uk
servidores centrais , nem os.uk
servidores nem os servidores de nomes raiz. Se houvesse apenas um único registro central que mapeasse todos os níveis até a hierarquia que tivesse que ser notificado sobre todas as alterações de uma entrada DNS por toda a cadeia, seria absolutamente inundado de tráfego.Antes de 1982, era assim que a resolução de nomes acontecia. Um registro central foi notificado sobre todas as atualizações e eles distribuíram um arquivo chamado
hosts.txt
que continha o nome do host e o endereço IP de todas as máquinas da Internet. Uma nova versão desse arquivo era publicada a cada poucas semanas, e todas as máquinas da Internet precisavam baixar uma nova cópia. Bem antes de 1982, isso estava começando a se tornar problemático e, portanto, o DNS foi inventado para fornecer um sistema mais distribuído.Por outro lado, esse seria um ponto único de falha - se o registro central único fosse desativado, a Internet inteira ficaria offline. Ter um sistema distribuído significa que as falhas afetam apenas pequenas seções da Internet, não a coisa toda.
(Para fornecer redundância extra, na verdade existem 13 clusters de servidores separados que atendem à zona raiz. Quaisquer alterações nos registros de domínio de nível superior precisam ser enviadas para todas as 13; imagine ter que coordenar a atualização de todas as 13 para cada alteração única para qualquer nome de host em qualquer lugar do mundo ...)
Porque o DNS utiliza muito cache para acelerar as coisas e diminuir a carga nos NSes. Sem o armazenamento em cache, toda vez que você visitou
google.co.uk
seu computador, teria que sair para a rede para procurar os servidores.uk
, então.co.uk
, então.google.co.uk
, entãowww.google.co.uk
. Na verdade, essas respostas não mudam muito; portanto, procurá-las sempre é uma perda de tempo e tráfego de rede. Em vez disso, quando o NS retornar registros para o seu computador, ele incluirá um valor TTL, que informa ao computador para armazenar em cache os resultados por alguns segundos.Por exemplo, os registros NS para
.uk
um TTL de 172800 segundos - 2 dias. O Google é ainda mais conservador - os registros NSgoogle.co.uk
têm um TTL de 4 dias. Os serviços que contam com a capacidade de atualizar rapidamente podem escolher um TTL muito menor - por exemplo,telegraph.co.uk
possui um TTL de apenas 600 segundos em seus registros NS.Se você deseja que as atualizações na sua zona sejam quase instantâneas, você pode diminuir o TTL o quanto quiser. Quanto menor a configuração, mais tráfego os servidores verão, pois os clientes atualizam seus registros com mais frequência. Toda vez que um cliente precisar entrar em contato com seus servidores para fazer uma consulta, isso causará algum atraso, pois é mais lento do que procurar a resposta no cache local, portanto, você também deve considerar a troca entre atualizações rápidas e um serviço rápido.
Sim, isso é fácil se você estiver testando manualmente com
dig
ferramentas semelhantes - basta informar qual servidor entrar em contato.Aqui está um exemplo de uma resposta em cache:
A seção de sinalizadores aqui não contém o
aa
sinalizador, portanto, podemos ver que esse resultado veio de um cache e não diretamente de uma fonte autorizada. De fato, podemos ver que ele veio97.107.133.4
, o que é um dos resolvedores de DNS locais da Linode. O fato de a resposta ter sido fornecida em um cache muito próximo a mim significa que foram necessários 0 ms para obter uma resposta; mas, como veremos em breve, o preço pago por essa velocidade é que a resposta está quase cinco minutos desatualizada.Para ignorar o resolvedor do Linode e ir direto à fonte, basta escolher um desses NSes e dizer ao dig para contatá-lo diretamente:
Você pode ver que, desta vez, os resultados foram exibidos diretamente da fonte - observe a
aa
sinalização, que indica que os resultados vieram de uma fonte autorizada. No meu exemplo anterior, os resultados vieram do meu cache local e, portanto, não possuem oaa
sinalizador. Percebo que a fonte autorizada desse domínio define um TTL de 600 segundos. Os resultados que obtive anteriormente de um cache local tinham um TTL de apenas 319 segundos, o que me indica que eles estavam no cache por (600-319) segundos - quase 5 minutos - antes de eu os ver.Embora o TTL aqui seja de apenas 600 segundos, alguns ISPs tentarão reduzir seu tráfego ainda mais, forçando seus resolvedores de DNS a armazenar em cache os resultados por mais tempo - em alguns casos, por 24 horas ou mais. É tradicional (de uma maneira que não sabemos se é realmente necessário, mas vamos ser seguros) assumir que qualquer alteração no DNS que você fizer não será visível em todos os lugares do site. Internet por 24 a 48 horas.
fonte
aa
(resposta autorizada)flag
na resposta. Seaa
estiver presente, a resposta veio diretamente de um servidor de nomes autorizado. (Se estiver faltando, a resposta ainda pode ser nova; alguns servidores de nomes recursivos limpam oaa
sinalizador antes de passar a resposta ao resolvedor do cliente.).uk
servidores. Atualmente, os domínios de segundo nível gerenciados pelo Nominet estão nos mesmos servidores queuk.
, portanto, uma consultaexample.co.uk
aosuk
servidores receberá uma delegação imediatamente, sem ter que passar por uma delegação nosco.uk
servidores.+trace
opção dig irá procurar no servidor de nomes configurado os servidores de nomes raiz, para que ele possa começar a pesquisar. Se o seu servidor de nomes local édnsmasq
(como no Ubuntu), ele não suporta isso, então você receberá um erro. Usedig +trace @8.8.8.8 www.example.com
. 8.8.8.8 é o serviço DNS público do Google. Use 1.1.1.1 para o equivalente do Cloudflare.a) O número de mapeamentos de IP -> host no mundo é REALMENTE grande. Este sistema distribui a responsabilidade de hospedar todos os registros MX e subdomínio e todos os outros registros DNS para o proprietário do nome de domínio. Esse era basicamente o objetivo do nome de domínio.
.com
é realizada por um registro, onde.uk
pode ser realizada por outro. Da mesma formaexample.com
eotherexample.com
pode ser hospedado separadamente, para que os recursos possam ser distribuídos.b) É armazenado em cache, o que reduz o número de ocorrências no host DNS para uma pequena fração do que seria de outra forma. Por padrão, os registros permanecem 2 dias no cache antes de serem descartados. Isso pode ser alterado alterando o TTL (tempo de vida) do registro.
c) Você pode efetivamente impedir que os registros sejam armazenados em cache definindo um TTL muito curto. Isso NÃO é recomendado, a menos que você o esteja usando para DNS dinâmico. O armazenamento em cache reduz muito os acessos no servidor DNS. Para escolher um número adivinhado, estamos falando em cancelar 95% dos pedidos.
fonte
yourdomain.com
é um subdomínio de.com
. Se fosse apenas um grande "arquivo host" (como era antes do DNS e dos elfos ainda andarem na Terra Média), então sim. Você teria apenas um arquivo grande e todo mundo armazenaria isso em cache.local
) provavelmente faz algum sentido limitado.Se você estiver em um sistema * nix, faça o download de uma cópia dos djbdns de Dan Bernstein em http://cr.yp.to/djbdns.html e execute o programa dnstrace para ver como o sistema de consultas recursivas funciona. É muito informativo.
fonte
a) O número de possíveis nomes de domínio é muito grande para um servidor manipular. E não há apenas .com; há .net, .org, .se, .info e muitos outros. Adicione a isso, você pode delegar a responsabilidade por um subdomínio (que é efetivamente o que
com
faz). O DNS menos centralizado facilita o gerenciamento.b) Máquinas ao longo do caminho do usuário para você ter caches DNS, a fim de minimizar o número de solicitações necessárias. Evita, por exemplo, enviar spam à rede com solicitações para o endereço "serverfault.com" toda vez que você obtém uma página do SF. Esses servidores podem até armazenar em cache os resultados "o domínio não existe", e é por isso que pode demorar um pouco até que um novo domínio seja exibido.
c) Embora você possa desativar o cache, geralmente existem outros servidores DNS entre sua máquina e o servidor DNS do seu domínio.com. O servidor DNS do seu ISP, por exemplo, tentará armazenar em cache o máximo possível. Os únicos registros que são atualizados com relativa rapidez pela rede são aqueles com um TTL curto (que basicamente diz "eu sou válido apenas por alguns segundos; depois disso, solicite novamente as informações atuais"). O motivo pelo qual os TTLs são tão altos é que o servidor responsável pelo domínio pode descarregar parte do trabalho para outros servidores. Se você tivesse toda a rede entrando em contato com um ou dois servidores DNS rinky-dink para cada acesso ao seu site, eles seriam praticamente inutilizáveis no segundo em que alguém visse seu site em /., Digg etc.
fonte