Como posso encontrar as origens de registros DNS conflitantes?
Como posso encontrar as origens de registros DNS conflitantes?
Respostas:
Você deseja o registro SOA (Start of Authority) para um determinado nome de domínio, e é assim que você o realiza usando a ferramenta de linha de comando nslookup universalmente disponível :
command line> nslookup
> set querytype=soa
> stackoverflow.com
Server: 217.30.180.230
Address: 217.30.180.230#53
Non-authoritative answer:
stackoverflow.com
origin = ns51.domaincontrol.com # ("primary name server" on Windows)
mail addr = dns.jomax.net # ("responsible mail addr" on Windows)
serial = 2008041300
refresh = 28800
retry = 7200
expire = 604800
minimum = 86400
Authoritative answers can be found from:
stackoverflow.com nameserver = ns52.domaincontrol.com.
stackoverflow.com nameserver = ns51.domaincontrol.com.
A linha de origem (ou servidor de nomes primário no Windows) informa que o ns51.domaincontrol é o principal servidor de nomes do stackoverflow.com .
No final da saída, todos os servidores autorizados, incluindo servidores de backup para o domínio especificado, são listados.
dig
pareciam, para mim (veja resposta abaixo)
nslookup -type=soa stackoverflow.com
no linux hoje (2019-fev), a seção autoritativa está vazia.
Você usou o singular na sua pergunta, mas normalmente existem vários servidores de nomes com autoridade, o RFC 1034 recomenda pelo menos dois.
A menos que você queira dizer "servidor de nome primário" e não "servidor de nome com autoridade". Os servidores de nomes secundários são oficiais.
Para descobrir os servidores de nomes de um domínio no Unix:
% dig +short NS stackoverflow.com
ns52.domaincontrol.com.
ns51.domaincontrol.com.
Para descobrir o servidor listado como primário (a noção de "primário" é bastante nebulosa atualmente e normalmente não tem uma boa resposta):
% dig +short SOA stackoverflow.com | cut -d' ' -f1
ns51.domaincontrol.com.
Para verificar discrepâncias entre servidores de nomes, minha preferência vai para a check_soa
ferramenta antiga , descrita no livro "DNS & BIND" de Liu & Albitz (editor O'Reilly). O código fonte está disponível em http://examples.oreilly.com/dns5/
% check_soa stackoverflow.com
ns51.domaincontrol.com has serial number 2008041300
ns52.domaincontrol.com has serial number 2008041300
Aqui, os dois servidores de nomes com autoridade têm o mesmo número de série. Boa.
www.pressero.com
, que é um CNAME para outro site - dig + SOA curto apenas retorna o destino CNAME.
www.pressero.com
, provavelmente estava pensando nos registros A (que é o tipo de registro padrão dig
se você não o especificar). Mas, se necessário, basta adicionar a tail -1
para recuperar o resultado final.
dig +short SOA www.pressero.com
. Isso retorna apenas o destino CNAME - não o registro SOA do pressero.com
domínio, o que eu esperava. tail -1
não ajuda as coisas; dig +short SOA
está emitindo apenas uma linha.
Em * nix:
$ dig -t ns <domain name>
Eu tenho uma ferramenta de propagação de DNS projetada para responder a esse tipo de perguntas.
A fonte é liberada sob o AGPLv3.
(Sim, a interface é bastante básica no momento :))
Você também pode descobrir os servidores de nomes para um domínio com o comando "host":
[davidp @ supernova: ~] $ host -t ns stackoverflow.com servidor de nomes stackoverflow.com ns51.domaincontrol.com. servidor de nomes stackoverflow.com ns52.domaincontrol.com.
Eu achei que a melhor maneira de adicionar sempre a opção + trace:
dig SOA +trace stackoverflow.com
Também funciona com CNAME recursivo hospedado em outro provedor. + trace trace implica + norecurse, portanto, o resultado é apenas para o domínio que você especificar.
O termo que você deve pesquisar no Google é "autoritário", não "definitivo".
No Linux ou Mac, você pode usar os comandos whois
, dig
, host
, nslookup
ou vários outros. nslookup
também pode funcionar no Windows.
Um exemplo:
$ whois stackoverflow.com
[...]
Domain servers in listed order:
NS51.DOMAINCONTROL.COM
NS52.DOMAINCONTROL.COM
Quanto ao crédito extra: Sim, é possível.
aryeh está definitivamente errado, pois sua sugestão geralmente só fornece o endereço IP para o nome do host. Se você usar dig
, precisará procurar registros NS, da seguinte maneira:
dig ns stackoverflow.com
Lembre-se de que isso pode solicitar ao servidor DNS local e, portanto, fornecer respostas erradas ou desatualizadas que ele possui em seu cache.
Criamos uma ferramenta de pesquisa de DNS que fornece os servidores de nomes autoritativos do domínio e seus registros de DNS comuns em uma solicitação.
Exemplo: https://www.misk.com/tools/#dns/stackoverflow.com
Nossa ferramenta localiza os servidores de nomes autoritativos executando uma pesquisa de DNS em tempo real (não armazenada em cache) nos servidores de nomes raiz e seguindo as referências do servidor de nomes até chegarmos aos servidores de nomes autoritativos. Essa é a mesma lógica que os resolvedores de DNS usam para obter respostas autorizadas. Um servidor de nomes autoritativo aleatório é selecionado (e identificado) em cada consulta, permitindo encontrar registros de DNS conflitantes executando várias solicitações.
Você também pode exibir o caminho da delegação do servidor de nomes clicando em "Servidores de Nomes Autoritativos" na parte inferior dos resultados da pesquisa de DNS do exemplo acima.
Exemplo: https://www.misk.com/tools/#dns/stackoverflow.com@f.root-servers.net
Você pode usar o serviço whois. Em um sistema operacional semelhante ao UNIX, você executaria o seguinte comando. Como alternativa, você pode fazê-lo na web em http://www.internic.net/whois.html .
whois stackoverflow.com
Você obteria a seguinte resposta.
... texto removido aqui ...
Servidores de domínio na ordem listada: NS51.DOMAINCONTROL.COM NS52.DOMAINCONTROL.COM
Você pode usar o nslookup ou o escav para descobrir mais informações sobre registros para um determinado domínio. Isso pode ajudá-lo a resolver os conflitos que você descreveu.
Infelizmente, a maioria dessas ferramentas retorna apenas o registro NS, conforme fornecido pelo próprio servidor de nomes. Para ser mais preciso na determinação de quais servidores de nomes são realmente responsáveis por um domínio, você deve usar "whois" e verificar os domínios listados lá OU usar "dig [domain] NS @ [root name server]" e executar esse recursivamente até obter as listagens de servidores de nomes ...
Eu gostaria que houvesse uma linha de comando simples que você pudesse executar para obter esse resultado de forma confiável e em um formato consistente, não apenas o resultado fornecido pelo próprio servidor de nomes. O objetivo disso para mim é poder consultar cerca de 330 nomes de domínio que eu gerencio para que eu possa determinar exatamente para qual servidor de nome cada domínio está apontando (conforme as configurações de registrador).
Alguém sabe de um comando usando "dig" ou "host" ou qualquer outra coisa no * nix?
Os registros SOA estão presentes em todos os servidores mais acima na hierarquia, sobre a qual o proprietário do domínio NÃO possui controle, e todos eles apontam para o único servidor de nome autorizado sob controle do proprietário do domínio.
Por outro lado, o registro SOA no próprio servidor autoritativo não é estritamente necessário para resolver esse domínio e pode conter informações falsas (ou servidores primários ocultos ou de outra forma restritos) e não deve ser utilizado para determinar o servidor de nomes autoritativo para um determinado domínio.
Você precisa consultar o servidor com autoridade para o domínio de nível superior para obter informações confiáveis de SOA para um determinado domínio filho.
(As informações sobre qual servidor tem autoridade para qual TLD pode ser consultado nos servidores de nomes raiz).
Quando você tiver informações confiáveis sobre a SOA no servidor autoritário do TLD, poderá consultar o próprio servidor de nomes primário autoritativo (aquele que está no registro SOA no servidor de nomes gTLD!) Para qualquer outro registro NS e prosseguir com a verificação de todos os os servidores de nome que você obteve ao consultar os registros NS, para verificar se há alguma inconsistência em qualquer outro registro específico, em qualquer um desses servidores.
Tudo isso funciona muito melhor / é confiável no linux e no dig do que no nslookup / windows.
Uma maneira fácil é usar uma ferramenta de domínio online. O meu favorito é as Ferramentas de Domínio (anteriormente whois.sc). Não tenho certeza se eles podem resolver registros DNS conflitantes. Como exemplo, os servidores DNS de stackoverflow.com são
NS51.DOMAINCONTROL.COM
NS52.DOMAINCONTROL.COM
Eu descobri que, para alguns domínios, as respostas acima não funcionam. A maneira mais rápida que encontrei é primeiro verificar um registro NS. Se isso não existir, verifique se há um registro SOA. Se isso não existir, resolva recursivamente o nome usando dig e pegue o último registro NS retornado. Um exemplo que se encaixa nisso éanalyticsdcs.ccs.mcafee.com.
host -t NS analyticsdcs.ccs.mcafee.com.
host -t SOA analyticsdcs.ccs.mcafee.com.
dig +trace analyticsdcs.ccs.mcafee.com. | grep -w 'IN[[:space:]]*NS' | tail -1
host analyticsdcs.ccs.mcafee.com. gtm2.mcafee.com.