Por que nossos registros DNS não estão se propagando para a Internet?


22

Executamos os servidores de nomes para o nosso domínio em nossa rede. Usamos bind / named. Vamos chamar o domínio exemplo.com . Uma coisa que notei recentemente, quando vou a um site como http://network-tools.com e executo consultas em URLs definidas em nossos servidores de nomes, vejo mudanças instantaneamente.

Por exemplo, se eu adicionar uma entrada ao nosso servidor DNS para o url funny.example.com e procurar esse URL em http://network-tools.com , vejo o IP estático externo apropriado listado imediatamente.

Isso significa que todas as solicitações de DNS relacionadas ao example.com são enviadas diretamente aos nossos servidores DNS.

Minhas suspeitas foram confirmadas no início da semana, quando nossos servidores DNS foram desativados por um período muito curto. E durante esse período, se eu usasse http://network-tools.com para consultar example.com ou qualquer um de seus subdomínios, obteria zero resultado. Obviamente, é porque os servidores DNS estavam inoperantes e não podiam ser alcançados.

Então, isso me leva à minha pergunta. Eu pensei que as alterações em nossos servidores DNS deveriam ser propagadas na Internet para outros servidores DNS. Dessa forma, se nosso DNS cair temporariamente, outros servidores na internet ainda saberão para qual endereço IP exemplo.com aponta.

Estou entendendo mal esse material de DNS? Servidores DNS controlados por terceiros como o nosso não têm permissão para propagar informações de DNS para outros servidores na rede?

Onde devo começar a investigar por que as mudanças não estão sendo divulgadas? No meu firewall, vejo que o tráfego da porta 53 está chegando corretamente aos nossos servidores DNS.

ATUALIZAR

  1. Eu sei que vocês estão dizendo que é impossível publicar suas configurações de DNS instantaneamente, mas tudo o que sei é o seguinte: se eu fizer uma alteração de DNS em nossos servidores DNS e verificar imediatamente em http: // network-tools. com , eu vejo as mudanças imediatamente.

  2. Se eu desligar nossos servidores DNS e tentar verificar qualquer um dos URLs usando http://network-tools.com , o site não poderá encontrar nenhum dos URLs. Mas se eu colocar os servidores DNS novamente online, de repente, o http://network-tools.com poderá encontrar os URLs novamente ... Isso indica que os servidores NÃO estão armazenando em cache nossas configurações de DNS. Estou errado? Além disso, nossas configurações de TTL estão definidas para 900 (15 minutos) no momento e nossos servidores DNS estão em execução há mais de um ano. Portanto, não é como os servidores DNS na Internet ainda não tiveram a chance de armazená-lo em cache. É por isso que os servidores não estão armazenando em cache as configurações porque o TTL está tão baixo no momento? Isso meio que faz sentido se essa é a razão.


7
Como jokerville.com é um nome de domínio registrado real, a menos que esse seja realmente o seu domínio, use-o example.com- ele é oficialmente reservado para esse fim.
precisa saber é

9
O motivo pelo qual o network-tools.com está vendo mudanças imediatamente é que é uma ferramenta de rede e DELIBERATELY não está armazenando em cache os resultados. É uma ferramenta para examinar seus servidores de nomes, não um cliente DNS normal, por isso obedece a regras diferentes.
22660 Michael Jackson

Respostas:


42

Sim, você está entendendo mal o funcionamento do DNS. Vou usar um pouco de ênfase aqui, mas por favor, não se ofenda, pois não há intenção.

REGISTROS DNS NÃO SÃO PROPAGADOS. Eles são armazenados.

Dito isto, aqui está uma explicação simplificada do que acontece:

  1. Você cria um novo registro DNS (A, CNAME, etc)

  2. Um usuário remoto (mais especificamente, um processo \ aplicativo iniciado pelo usuário) tenta acessar um serviço acessado por esse registro DNS (um navegador da Web tentando acessar o site em execução no funny.example.com, por exemplo)

  3. O cliente DNS do usuário envia uma consulta DNS ao servidor DNS, o servidor DNS encontra os servidores de nome (geralmente através de uma série de consultas DNS recursivas) e solicita informações sobre funny.example.com

  4. Seus servidores de nomes respondem com as respostas

  5. O servidor DNS dos usuários envia essas informações ao usuário (mais especificamente ao resolvedor de clientes DNS dos usuários), que, por sua vez, retorna as informações ao processo \ aplicativo. Essas informações vêm com o que é chamado TTL (Time To Live), que informa ao resolvedor do cliente DNS quanto tempo essas informações podem ser mantidas no cache DNS (na memória) e quanto tempo as informações podem ser consideradas atuais e precisas

  6. O resolvedor de cliente DNS do usuário libera essas informações quando o TTL expira. Quaisquer novas solicitações para o (s) registro (s) DNS em questão requerem uma nova pesquisa de DNS e o processo acima se repete.

Portanto, o longo e curto disso é o seguinte:

Seus registros DNS não se propagam. Nenhum outro servidor DNS possui uma cópia dos seus registros ou zonas DNS. Um cliente ou servidor DNS pode armazenar em cache informações sobre seus registros ou zonas DNS (com base nas consultas DNS dos seus registros e zonas DNS) no cache DNS. Essas informações são armazenadas em cache temporariamente e serão removidas do cache DNS quando o TTL expirar.

Se seus servidores de nomes estiverem inoperantes, somente os clientes DNS que tiverem um de seus registros DNS em cache poderão resolvê-los e somente até o TTL expirar. Além disso, quando o TTL expirar (necessário um novo lokkup de DNS), esses clientes DNS não poderão mais resolver seus registros DNS.


Boa explicação e posso adicionar um exemplo de protocolo em que há propagação (ao contrário do DNS): BGP.
Bortzmeyer

11

ajudaria bastante se você nos dissesse seu nome de domínio real, poderíamos responder sua pergunta com referência à sua configuração real e apontar quaisquer falhas.

Costumo confiar em http://dns.squish.net/ para diagnosticar problemas de DNS rapidamente. Isso lhe dirá com certeza onde estão os seus problemas depois que você fez uma alteração - basicamente se a sua delegação do upstream estiver correta e todos os seus servidores de nomes 2-3 tiverem a mesma resposta e alguém não estiver vendo o novo registro, eles apenas terão que esperar a rede local para ver as alterações. Se esse verificador indicar que um de seus servidores não está dando a mesma resposta que os outros, você precisará corrigir esse problema.

Não há como publicar alterações de DNS instantaneamente - bem, você pode publicá-las instantaneamente, mas o resto do mundo ficará para trás de acordo com a configuração TTL de cada registro, por exemplo, se você definiu um registro TTL de 86400 segundos ( um dia) e você fizer uma alteração, outras pessoas verão o registro antigo por um dia inteiro, porque o cache local não solicitará até que a cópia do registro expire.

Sugiro que, antes de qualquer alteração importante no DNS, você reduza o TTL para 600 (10 minutos) para incentivar os caches da Internet a não manter registros antigos por muito tempo. Mas alguns caches ignoram isso ou assumem 1 dia ou até 1 semana.

Uma resposta divagadora a uma pergunta divagadora, espero que tenha algo útil nela.


1
+1. Só para esclarecer, apenas os clientes DNS que já possuem as informações em cache, para os quais o TTL não expirou, serão afetados por uma alteração. Quaisquer novos pedidos, para os quais não há dados no cache, serão resolvidos imediatamente.
joeqwerty

fyi: dead link - squish.net/dnscheck
Aaron Esau

8

Sim, o velho ditado "Alterações no DNS pode levar de 24 a 48 horas para se propagar pela Internet" seria mais preciso "As alterações no DNS podem ser armazenadas em cache em qualquer servidor DNS que tenha consultado esse registro nos últimos 86400 segundos".

Se você quiser garantir a redundância do seu DNS no caso de o servidor ficar offline, procure o serviço DNS de backup (como em dyndns.com) ou crie seu próprio NS secundário.


5

Todos os servidores DNS na Internet são "controlados por terceiros" (suponho que você considere os servidores DNS raiz de alguma forma "proprietários" da Internet, mas não há nenhuma razão técnica para criar sua própria raiz privada).

Seu servidor DNS fornece um "tempo de vida" sugerido (TTL) em cada resposta que fornece. Os resolvedores remotos (outros servidores DNS que executam resolução recursiva para clientes, bibliotecas de resolvedores de clientes etc.) devem armazenar em cache a resposta para esse TTL antes de descartá-lo do cache.

Se você não vê as alterações feitas nos registros existentes refletidas em consultas do mundo real, provavelmente significa que seus valores TTL são altos o suficiente para que você não espere o tempo suficiente para ver as respostas existentes envelhecerem no resolvedor caches em torno da rede.

Alguns antecedentes da falha do servidor: Por que é chamado "propagação" de DNS?


2

Quando alguém (ou algum computador) na Internet, por assim dizer, deseja se conectar a uma de suas máquinas, solicita ao servidor de nomes local um endereço IP correspondente ao nome do host em que está interessado.

Portanto, se você disser a alguém "ei, dê uma olhada no meu site legal http://www.example.com ", o computador do outro cara perguntará ao servidor de nomes local "ei, qual é o endereço IP de www.example.com?"

Supondo que o servidor de nomes local nunca tenha procurado a resposta para essa pergunta antes, ele solicitará aos servidores de nomes raiz que descubram quais servidores lidam com pesquisas para ".com". Quando obtém essa resposta, perguntará aos servidores quais servidores lidam com pesquisas para "example.com". Quando receber essa resposta, solicitará a esses servidores um endereço IP para "www.example.com".

Quando os servidores, por exemplo.com, respondem com um endereço IP para www.exemplo.com, também fornecem ao servidor de nomes solicitante uma dica sobre quanto tempo deve se lembrar da resposta a esta pergunta. Essa dica é chamada de "TTL", ou "tempo de vida", e é medida em segundos. Não há garantia de que qualquer servidor prestará atenção ao TTL - alguns servidores de nomes podem ser configurados para nunca se lembrar das respostas às pesquisas e sempre repetirão o processo, mesmo que solicitado várias vezes por segundo. Outros servidores de nomes podem ser configurados para manter a resposta por um longo tempo, mesmo que você tenha sugerido que os dados sejam mantidos apenas por um curto período de tempo, talvez porque desejem minimizar o tráfego de rede. O TTL é apenas uma sugestão, não um requisito ou uma garantia.

A resposta literal à sua pergunta - por que seus registros DNS não estão se propagando para a Internet - é que eles não estão fazendo isso porque não deveriam.

Além disso, se você estiver visualizando suas próprias informações de DNS usando um site projetado para pesquisar ou depurar informações de DNS, é provável que o site não armazene em cache os dados por muito tempo, ou mesmo por muito tempo, independentemente da sugestão de TTL, porque o objetivo do site é provavelmente fornecer informações sobre o que o sistema DNS diz AGORA, não há 5, 50 ou 500 segundos atrás. É por isso que suas alterações são refletidas imediatamente e o serviço pára de funcionar assim que você desconecta seus servidores de nomes.

Eu suspeito que sua pergunta subjacente possa ser "como posso configurar as coisas para que, se meu servidor DNS for reiniciado ou seu disco rígido morrer, outras pessoas na Internet ainda poderão ver minhas páginas da web?"

A resposta para essa pergunta é configurar vários servidores de nomes para o seu domínio e executá-los em máquinas diferentes - idealmente, não apenas em computadores físicos diferentes, mas com conexões de rede diferentes, talvez até em cidades, estados, países ou continentes. A maioria desses servidores de nomes será configurada como "escravos", o que significa que eles procuram um servidor de nomes "mestre" em busca de suas informações e depois repetem essas informações para quem solicitar dados.

Portanto, em seus dados WHOIS com o registrador de nomes de domínio, você pode configurar quatro servidores de nomes para o seu domínio:

ns1.example.com ns2.example.com ns1.otherguy.com ns2.otherguy.com

onde ns1.example.com é o seu servidor DNS atual. O ns2.example.com pode ser outra máquina em sua empresa / organização - idealmente não na mesma sub-rede e no mesmo rack de servidor (ou sob a mesa do mesmo funcionário) que o ns1.example.com.

O ns1.example.com será considerado o servidor "principal" e, quando você desejar alterar seu DNS, fará suas alterações nessa máquina.

O ns2.example.com será configurado como um servidor "escravo", que apenas copia os dados que você configurou no ns1.example.com - mas o mundo exterior não se importa com a distinção mestre / escravo, ns2.example .com será considerado tão "oficial" quanto o ns1.example.com.

ns1.otherguy.com e ns2.otherguy.com são máquinas configuradas em outro lugar - talvez você faça um acordo com um amigo / colega de outra organização para executar servidores de nomes um para o outro, ou talvez você configure com dyndns.com ou everydns.net ou qualquer outro provedor de DNS gratuito ou comercial. No entanto, se você resolver isso, você configurará essas máquinas como escravas, para que elas extraam as informações de DNS por exemplo.com de ns1.example.com (seu "mestre"), e elas servirão essas informações de DNS para qualquer máquina na máquina. Internet que pede.

Depois que seu registrador de domínio publicar os novos registros NS do seu domínio (que devem ser aproximadamente instantaneamente), quando alguém na Internet perguntar qual servidor de nomes de domínio lida com "example.com", eles receberão quatro respostas -

ns1.example.com, ns2.example.com, ns1.otherguy.com, ns2.otherguy.com

Dependendo de como o servidor de nomes do outro cara estiver configurado, ele poderá tratar esses quatro como uma lista e perguntar-lhes um de cada vez como acessar "www.example.com" - ou pode perguntar a todos os quatro a mesma pergunta no ao mesmo tempo, e basta pegar a resposta da máquina que responder primeiro. De qualquer forma, se o ns1.example.com estiver inativo porque o disco rígido morreu ou você decidiu reiniciar ou o que seja, as outras três máquinas estarão disponíveis para responder à pergunta e seu site continuará visível.

A maneira mais fácil de resolver esse problema é se inscrever com um provedor de serviços DNS que manipulará o DNS para seu domínio - o preço varia de gratuito a milhares (provavelmente até dezenas ou centenas de milhares) de dólares por mês, dependendo do nível de serviço que você deseja. Você pode obter um serviço razoavelmente confiável por US $ 30 / ano ou mais. Os serviços gratuitos não são terríveis e, portanto, têm uma boa relação custo-benefício, mas se você depender do seu site para ganhar dinheiro, poderá conseguir US $ 30 pelo DNS de um ano .

Em seguida, siga as instruções do provedor de serviços DNS para alterar os registros NS no seu registrador de nomes de domínio e você estará pronto.


0

O armazenamento em cache feito por outros servidores DNS depende do TTL atribuído ao registro. No seu caso, o TTL pode ser muito baixo ou alto. Você poderia nos fornecer mais informações sobre sua configuração de DNS?

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.