¿Cómo puedo encontrar el origen de los registros DNS en conflicto?
¿Cómo puedo encontrar el origen de los registros DNS en conflicto?
Respuestas:
Querrá el registro SOA (Start of Authority) para un nombre de dominio dado, y así es como lo logra utilizando la herramienta de línea de comando nslookup disponible universalmente :
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.
los origen (o servidor de nombres primario en Windows) le dice que ns51.domaincontrol es el servidor de nombres principal para stackoverflow.com .
Al final de la salida, se enumeran todos los servidores autorizados, incluidos los servidores de respaldo para el dominio dado.
dig
pareció (ver respuesta a continuación)
nslookup -type=soa stackoverflow.com
Linux hoy (2019-feb), la sección autoritativa está vacía.
Usó el singular en su pregunta, pero generalmente hay varios servidores de nombres autorizados, el RFC 1034 recomienda al menos dos.
A menos que se refiera a "servidor de nombres primario" y no a "servidor de nombres autorizado". Los servidores de nombres secundarios son autorizados.
Para averiguar los servidores de nombres de un dominio en Unix:
% dig +short NS stackoverflow.com
ns52.domaincontrol.com.
ns51.domaincontrol.com.
Para descubrir el servidor listado como primario (la noción de "primario" es bastante confusa en estos días y generalmente no tiene una buena respuesta):
% dig +short SOA stackoverflow.com | cut -d' ' -f1
ns51.domaincontrol.com.
Para verificar las discrepancias entre los servidores de nombres, mi preferencia va a la check_soa
herramienta anterior, descrita en el libro "DNS & BIND" de Liu & Albitz (editor O'Reilly). El código fuente está disponible en http://examples.oreilly.com/dns5/
% check_soa stackoverflow.com
ns51.domaincontrol.com has serial number 2008041300
ns52.domaincontrol.com has serial number 2008041300
Aquí, los dos servidores de nombres autorizados tienen el mismo número de serie. Bueno.
www.pressero.com
, que es un CNAME para otro sitio: dig + short SOA solo devuelve el objetivo CNAME.
www.pressero.com
, probablemente estaba pensando en registros A (que es el tipo de registro predeterminado dig
si no lo especifica). Pero si es necesario, solo agregue un tail -1
para recuperar el resultado final.
dig +short SOA www.pressero.com
. Esto devuelve solo el objetivo CNAME, no el registro SOA para el pressero.com
dominio, que es lo que esperaba. tail -1
no ayuda a las cosas; dig +short SOA
solo emite una línea.
En * nix:
$ dig -t ns <domain name>
Tengo una herramienta de propagación de DNS diseñada para responder a este tipo de preguntas.
La fuente se publica bajo AGPLv3.
(Sí, la interfaz es bastante básica en este momento :))
También puede encontrar los servidores de nombres para un dominio con el comando "host":
[davidp @ supernova: ~] $ host -t ns stackoverflow.com servidor de nombres stackoverflow.com ns51.domaincontrol.com. servidor de nombres stackoverflow.com ns52.domaincontrol.com.
Descubrí que la mejor manera de agregar siempre la opción + trace:
dig SOA +trace stackoverflow.com
Funciona también con CNAME recursivo alojado en diferentes proveedores. + trace trace implica + norecurse, por lo que el resultado es solo para el dominio que especifique.
El término que debe buscar en Google es "autoritario", no "definitivo".
En Linux o Mac puede utilizar los comandos whois
, dig
, host
, nslookup
o varios otros. nslookup
También podría funcionar en Windows.
Un ejemplo:
$ whois stackoverflow.com
[...]
Domain servers in listed order:
NS51.DOMAINCONTROL.COM
NS52.DOMAINCONTROL.COM
En cuanto al crédito extra: Sí, es posible.
aryeh definitivamente está equivocado, ya que su sugerencia generalmente solo le dará la dirección IP para el nombre de host. Si usa dig
, debe buscar registros NS, así:
dig ns stackoverflow.com
Tenga en cuenta que esto puede preguntarle a su servidor DNS local y, por lo tanto, puede dar respuestas incorrectas o desactualizadas que tiene en su caché.
Hemos creado una herramienta de búsqueda de DNS que le brinda los servidores de nombres autorizados del dominio y sus registros DNS comunes en una sola solicitud.
Ejemplo: https://www.misk.com/tools/#dns/stackoverflow.com
Nuestra herramienta encuentra los servidores de nombres autorizados realizando una búsqueda de DNS en tiempo real (sin caché) en los servidores de nombres raíz y luego siguiendo las referencias del servidor de nombres hasta llegar a los servidores de nombres autorizados. Esta es la misma lógica que utilizan los solucionadores de dns para obtener respuestas autorizadas. Se selecciona (y se identifica) un servidor de nombres autorizado aleatorio en cada consulta que le permite encontrar registros DNS en conflicto realizando múltiples solicitudes.
También puede ver la ruta de delegación del servidor de nombres haciendo clic en "Servidores de nombres autorizados" en la parte inferior de los resultados de búsqueda de DNS del ejemplo anterior.
Ejemplo: https://www.misk.com/tools/#dns/stackoverflow.com@f.root-servers.net
Puedes usar el servicio whois. En un sistema operativo similar a UNIX, ejecutaría el siguiente comando. Alternativamente, puede hacerlo en la web en http://www.internic.net/whois.html .
whois stackoverflow.com
Obtendría la siguiente respuesta.
... texto eliminado aquí ...
Servidores de dominio en el orden indicado: NS51.DOMAINCONTROL.COM NS52.DOMAINCONTROL.COM
Puede usar nslookup o cavar para obtener más información sobre los registros de un dominio determinado. Esto podría ayudarlo a resolver los conflictos que ha descrito.
Desafortunadamente, la mayoría de estas herramientas solo devuelven el registro NS tal como lo proporciona el propio servidor de nombres. Para ser más exactos al determinar qué servidores de nombres son realmente responsables de un dominio, debe usar "whois" y verificar los dominios enumerados allí O usar "cavar [dominio] NS @ [servidor de nombres raíz]" y ejecutarlo recursivamente hasta que obtenga los listados del servidor de nombres ...
Desearía que hubiera una línea de comando simple que pudieras ejecutar para obtener ESE resultado de manera confiable y en un formato consistente, no solo el resultado que se proporciona desde el servidor de nombres en sí. El propósito de esto para mí es poder consultar sobre 330 nombres de dominio que administro para poder determinar exactamente a qué servidor de nombres apunta cada dominio (según la configuración de su registrador).
¿Alguien sabe de un comando usando "dig" o "host" o algo más en * nix?
Los registros SOA están presentes en todos los servidores más arriba en la jerarquía, sobre los cuales el propietario del dominio NO tiene control, y todos en efecto apuntan al único servidor de nombres autorizado bajo el control del propietario del dominio.
El registro SOA en el servidor autorizado en sí mismo, por otro lado, no es estrictamente necesario para resolver ese dominio, y puede contener información falsa (o servidores primarios ocultos o restringidos) y no se debe confiar en él para determinar el servidor de nombres autorizado para un dominio dado
Debe consultar el servidor que tiene autoridad para dominio de nivel superior para obtener información SOA confiable para un dominio secundario determinado.
(La información sobre qué servidor tiene autoridad para qué TLD se puede consultar desde los servidores de nombres raíz).
Cuando tenga información confiable sobre el SOA del servidor autorizado de TLD, puede consultar el servidor de nombres primario en sí mismo (¡el que está en el registro SOA en el servidor de nombres de gTLD!) Para cualquier otro registro NS, y luego verificar todos esos servidores de nombres que tiene al consultar los registros NS, para ver si hay alguna inconsistencia para algún otro registro en particular, en cualquiera de esos servidores.
Todo esto funciona mucho mejor / confiable con Linux y Dig que con nslookup / windows.
Una manera fácil es usar una herramienta de dominio en línea. Mi favorito es Herramientas de dominio (anteriormente whois.sc). Sin embargo, no estoy seguro de si pueden resolver registros DNS conflictivos. Como ejemplo, los servidores DNS para stackoverflow.com son
NS51.DOMAINCONTROL.COM
NS52.DOMAINCONTROL.COM
He encontrado que para algunos dominios, las respuestas anteriores no funcionan. La forma más rápida que he encontrado es primero buscar un registro NS. Si eso no existe, busque un registro SOA. Si eso no existe, resuelva recursivamente el nombre usando dig y tome el último registro NS devuelto. Un ejemplo que se ajusta a esto esanalyticsdcs.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.