Como localizo o servidor de nomes com autoridade para um nome de domínio?

317

Como posso encontrar as origens de registros DNS conflitantes?

Binarytales
fonte

Respostas:

413

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.

Antti Kissaniemi
fonte
158
nslookup -type = soa stackoverflow.com
Ben Amada
6
No Windows, no entanto, não consigo ver a resposta "Respostas autoritativas". Eu tenho o Windows 8 e o Ubuntu 12 lado a lado e, em seguida, o mesmo comando para o mesmo domínio funciona corretamente no Ubuntu, mas não no Windows.
Mario Awad
1
cuidado que isso mostra não mostra necessariamente alterações recentes configurações de DNS, porém utilizando digpareciam, para mim (veja resposta abaixo)
rogerdpack
6
O que significa se não houver resposta autorizada, mas a resposta não autorizada estiver correta?
Overmind
6
Se você roda nslookup -type=soa stackoverflow.comno linux hoje (2019-fev), a seção autoritativa está vazia.
simpleuser 27/02/19
174

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_soaferramenta 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.

bortzmeyer
fonte
5
dig + short nem sempre dá a resposta que eu espero. Por exemplo, um site definido como www.pressero.com, que é um CNAME para outro site - dig + SOA curto apenas retorna o destino CNAME.
Ross Presser
Como você faz um NS autoritativo?
Overmind
1
@Overmind você não faz um NS "autoritário". Se um servidor de nomes estiver configurado como autoritário para alguns domínios, significa que ele possui arquivos de zona localmente (geralmente arquivos de texto simples, mas também podem ser feitos de maneira diferente) para esses domínios e responde à consulta por eles. Para serem úteis, eles precisam ser listados como registros NS na zona pai de cada domínio em que têm autoridade; caso contrário, ninguém os consultaria por padrão.
Patrick Mevzek 5/0318
@RossPresser, a resposta estava falando sobre registros NS / SOA e duvido que você faça isso www.pressero.com, provavelmente estava pensando nos registros A (que é o tipo de registro padrão digse você não o especificar). Mas, se necessário, basta adicionar a tail -1para recuperar o resultado final.
Patrick Mevzek 5/0318
@PatrickMevzek Como afirmei no meu comentário, usei dig +short SOA www.pressero.com. Isso retorna apenas o destino CNAME - não o registro SOA do pressero.comdomínio, o que eu esperava. tail -1não ajuda as coisas; dig +short SOAestá emitindo apenas uma linha.
Ross Presser
40

Em * nix:

$ dig -t ns <domain name>
aryeh
fonte
3
Ele pediu os servidores de nomes, não o endereço IPv4. Assim, tipo (-t) deve ser NS, não A.
Bortzmeyer
1
por que não digitar SOA @bortzmeyer?
Randy L
Uh, porque isso retorna o SOA em vez do resultado NS?
tripleee 12/03
17

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.
David Precious
fonte
@ cacho Isso é verdade; Posso acrescentar isso, se tiver uma chance.
David Precious
1
Está quebrado, mostra "502 Bad Gateway nginx / 1.14.2"
Marco Demaio
8

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.

Alex
fonte
Observação: Se você estiver executando um servidor NS local, como dnsmasq + rastreamento não vai retornar nada ...
Daniel Sokolowski
Este comando fornece 53 linhas, 3652 bytes de saída, muitos dos quais são valores aleatórios. Como alguém deve interpretar a saída para determinar qual é o servidor de nomes autoritativo?
theferrit32
Eu li de baixo para cima. O registro SOA é o que você procura. Você pode esperar que a SOA tenha menos dados.
Alex
6

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, nslookupou vários outros. nslookuptambé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.


fonte
6
Esses comandos não são equivalentes. Nada diz que as informações fornecidas por whois estão atualizadas. Freqüentemente, não é porque as pessoas atualizam os registros NS no arquivo de zona sem notificar o registro ou o registrador.
22448 bortzmeyer
Eu nunca disse que eles eram;) Você pode alterar os registros NS na sua zona o quanto quiser, desde que a zona pai não seja atualizada, nada será alterado. E uma atualização da zona pai geralmente anda de mãos dadas com uma atualização dos dados whois (pelo menos com meus provedores).
5

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/[email protected]

Nitin Agarwal
fonte
2

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.

Chris de Vries
fonte
2
Nada diz que as informações fornecidas por whois estão atualizadas. Freqüentemente, não é porque as pessoas atualizam os registros NS no arquivo de zona sem notificar o registro ou o registrador.
22448 bortzmeyer
Embora não seja uma resposta direta à pergunta, "whois" é útil porque indica quem deve ser o servidor de nomes em algum lugar (mesmo que por qualquer motivo que atualmente não seja).
someoneelse
1

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?


fonte
2
Simples. Vamos supor que o domínio seja exemplo.org. Primeiro, você precisa encontrar os servidores de nome ".org" com 'dig + short NS org.'. Então você consulta um deles (qualquer um, todos eles são autorizados). Vamos escolher d0.org.afilias-nst.org. Você consulta com 'dig @ d0.org.afilias-nst.org NS example.org.'.
22449 bortzmeyer
O fato de o resolvedor retornar, por padrão, os servidores de nomes listados pelo próprio domínio é uma coisa boa. Essa é a informação oficial. A delegação na zona pai NÃO é autoritativa.
22449 bortzmeyer
E o ponteiro para whois é um arenque vermelho. As informações do servidor de nomes whois geralmente são obsoletas. O recurso autoritativo é o DNS.
Tripleee
1
Whois é completamente arbitrário. O valor que você vê na lista whois não tem vínculos técnicos com o DNS. Muitas vezes está desatualizado ou errado. Eu chegaria ao ponto de dizer que dados whois quase nunca deveriam ser confiáveis. Existem registros 'thin' e 'thick'. Os dois registros espessos bem conhecidos são os registros .com e .net. Esses registros contêm todos os dados do DNS e podem servir como resposta a whois. Quase outros registros são comuns e executam seus próprios registros whois. Estes dados estão frequentemente errados.
Mark
1

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.

Dennis
fonte
0

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
Kyle Cronin
fonte
0

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.

  1. Verifique se há um registro NS

host -t NS analyticsdcs.ccs.mcafee.com.

  1. Se nenhum NS for encontrado, verifique se há um registro SOA

host -t SOA analyticsdcs.ccs.mcafee.com.

  1. Se nem NS nem SOA, faça recursividade completa e pegue o último NS retornado

dig +trace analyticsdcs.ccs.mcafee.com. | grep -w 'IN[[:space:]]*NS' | tail -1

  1. Teste se o servidor de nomes retornado funciona

host analyticsdcs.ccs.mcafee.com. gtm2.mcafee.com.

dannyw
fonte