Consulta de DNS para CNAME para un servidor

Respuestas:

6

No especificó cuál es su entorno, pero si está utilizando Unix, creo que una combinación de dig y grep debería funcionar. ns.example.comdebe ser el nombre de host de su servidor de nombres, example.comes el dominio del que forma parte su host y HOST es el host para el que desea encontrar todos los registros CNAME. Eso es en realidad un carácter de tabulación en el comando grep, no literalmente <TAB>(puede que tenga que ajustar la cadena grep).

Además, su servidor de nombres debe configurarse para permitir transferencias de zona, cuyos detalles dependerán de la implementación.

dig @ns.example.com example.com axfr |grep 'CNAME<tab>HOST$'

O si está en Windows, podría usar nslookup :

C:\> nslookup
> name ns.example.com
> ls -a example.com FILE

Esto debería generar todos los registros del dominio example.comque ns.example.com"conoce" en ARCHIVO. Luego puede usar la herramienta que desee para ordenar el archivo de texto en busca de los CNAMES correspondientes.

O con este script perl no probado (pero aparentemente correcto) :

#!/usr/bin/perl

use Net::DNS;

($target, $zone) = @ARGV;

$res = new Net::DNS::Resolver;
foreach $rr ($res->axfr($zone)) {
     print $rr->name."\n" if (($rr->type eq "CNAME") && ($rr->rdatastr eq $target."."));
}

Un par de puntos para completar:

  • Como dijo @womble, no hay equivalente de un registro PTR para un CNAME. Tendrá que usar un poco de conciencia contextual al ordenar toda la información de zona para CNAMES que corresponde a los registros A de su host.
  • Esto solo funciona para su servidor DNS (y si tiene permiso para ver la información de la zona). No hay forma de "rastrear" CNAMES para su host que pertenece a otras zonas.
  • Como dice @BillThor, hay otras formas de alias de un nombre de host más allá de CNAMES. Nuevamente, necesitarás un poco de conciencia contextual.

fuente
Pregunta actualizada, estamos en Windows.
PhilPursglove
4

Si tiene acceso a su configuración de DNS, es bastante trivial descubrir estos datos. Sin embargo, cualquiera puede tener un CNAME apuntando a su servidor. No podrás rastrearlos.

Como @wombie ha señalado, no puedes hacer una búsqueda inversa para CNAMES. No hay un equivalente PTR para CNAMES, e incluso si es probable que solo existan algunos registros. Una comprobación rápida de una selección aleatoria de dominios mostrará que los registros PTR a menudo no apuntan al registro A. Del mismo modo, hacer búsquedas inversas de registros PTR para direcciones aleatorias a menudo no encuentra el registro A correspondiente.

EDITAR: CNAME no son la única forma de alias de un sistema. DNS permite que múltiples registros A apunten a la misma dirección. Funcionalmente, esto es lo mismo que agregar un CNAME, pero el método es diferente. Los mismos problemas se aplican fuera de su dominio. Para buscar los distintos registros A, buscaría las direcciones IP del sistema en cuestión.

BillThor
fuente
3

El protocolo DNS no le permite hacer ese tipo de búsqueda "inversa". Deberá salir del protocolo, como usar las sugerencias grep proporcionadas por kce.

womble
fuente
2

usar powershell:

compruebe el nombre primario en su servidor DNS de Microsoft:

Get-WmiObject -Namespace 'root \ MicrosoftDNS' -Class MicrosoftDNS_AType -Filter "IPAddress = 'xx.xx.xx.xx (IP)'" -ComputerName mydnsservername

obtenga todos los nombres de c para ese host de su servidor DNS de Microsoft:

Get-WmiObject -Namespace 'root \ MicrosoftDNS' -Class MicrosoftDNS_CNAMEType -Filter "primaryname = 'nombre primario de la primera consulta terminada con un punto.'" -ComputerName mydnsservername | seleccione el nombre del propietario, nombre primario

Josef Aschauer
fuente
1
  1. Encuentre todas las zonas atendidas por sus máquinas.
  2. Para cada zona, use dnscmdpara exportar los datos de la zona:
    dnscmd a.ns.example.com / zoneexport zone.example.com some-filename-for-this-zone
  3. Busque en los archivos exportados los CNAMEregistros de recursos que apuntan al nombre de dominio de destino.
JdeBP
fuente