Isso é apenas para propósitos educacionais. Atualmente estou aprendendo sobre DNS, e todas as fontes que li disseram praticamente isso:
Supondo que não haja nenhum acerto de cache, quando solicitado a resolver um nome de domínio, o resolvedor de DNS entrará em contato primeiro com um servidor de nomes raiz, que o apontará para um servidor de nomes TLD, que o apontará para o servidor de nomes que é autoritário para o domínio ele está procurando.
Agora, no meu laptop doméstico, meu sistema operacional está pré-configurado para usar algum servidor DNS, que acho que pertence ao meu ISP, e quando consulto algo usando o nslookup, recebo imediatamente a resposta.
Estou tentando imitar o comportamento de um resolvedor de DNS usando nslookup. Como posso fazer isso?
Ok, eu sei os nomes de domínio (e também os endereços IP) dos servidores de nomes raiz. Como eu sigo a partir daí?
Meu palpite é que o resolvedor de DNS, ao entrar em contato com o servidor raiz, está solicitando um A
registro, mas quando tento fazer a mesma consulta, recebo:
> www.google.com e.root-servers.net
Server: e.root-servers.net
Addresses: 2001:500:a8::e
192.203.230.10
*** e.root-servers.net can't find www.google.com: No response from server
Não tenho certeza se nslookup é a ferramenta para o trabalho. "cavar" é provavelmente melhor. Na verdade, você pode ver todo o funcionamento de uma pesquisa autoritária e todas as etapas com dig com um comando simples -
Se você precisar usar o nslookup, podemos fazer assim -
Retorna os nomes dos servidores TLD, ou seja, [am].root-servers.net. (se você não deseja usar o dig ou não os conhece e precisa fazê-lo desde os primeiros princípios, eles são codificados em servidores DNS recursivos, portanto, você precisaria examinar a configuração deles ou encontrar uma fonte confiável)
Podemos então consultar este servidor e pedir o registro .com ns assim -
(Acho que você pode deixar de fora o . after com. - esse bit final significa que é uma consulta absoluta, não relativa). Isso retorna uma lista dos servidores de nomes .com -
Agora podemos repetir a mesma solicitação de um dos servidores de nomes "com" tld para obter o servidor googls -
que retorna
Este registro é interessante porque especifica os endereços IP para nsX.google.com (Isso é chamado de registro de cola e é codificado no servidor de nomes .com neste caso, porque caso contrário, há um problema de que você precisa de nsX.google.com para encontrar google.com, mas primeiro você precisa encontrar google.com para chegar a nsX.google.com...)
Por fim, podemos consultar um dos servidores de nomes do Google e obter seu endereço:
Nossa resposta:
Se você estiver consultando os servidores raiz, deve ser para
com
. Em seguida, você emite outra pesquisa emgoogle.com
relação a um dos endereços IP retornados. Então você pode finalmente procurarwww.google.com
um servidor dessa lista final.O que você está fazendo é pedir ao servidor raiz para procurar recursivamente por
www.google.com
, algo para o qual eles não estão configurados, eles retornarão apenas os tlds.