C'è un modo per interrogare le nostre voci DNS interne per scoprire tutte le voci CNAME che puntano a un determinato server?
Modifica: siamo un ambiente Windows, Server 2003.
C'è un modo per interrogare le nostre voci DNS interne per scoprire tutte le voci CNAME che puntano a un determinato server?
Modifica: siamo un ambiente Windows, Server 2003.
Risposte:
Non hai specificato quale sia il tuo ambiente ma se stai usando Unix penso che una combinazione di dig e grep dovrebbe funzionare. ns.example.com
dovrebbe essere il nome host del tuo nameserver, example.com
è il dominio di cui fa parte l'host e HOST è l'host per il quale desideri trovare tutti i record CNAME. Questo è in realtà un carattere di tabulazione nel comando grep, non letteralmente <TAB>
(potrebbe essere necessario regolare la stringa grep).
Inoltre, il server dei nomi deve essere configurato per consentire i trasferimenti di zona, i cui dettagli dipenderanno dall'implementazione.
dig @ns.example.com example.com axfr |grep 'CNAME<tab>HOST$'
O se sei su Windows puoi usare nslookup :
C:\> nslookup
> name ns.example.com
> ls -a example.com FILE
Ciò dovrebbe generare tutti i record per il dominio example.com
che ns.example.com
"conosce" su FILE. È quindi possibile utilizzare qualsiasi strumento che si desidera ordinare attraverso il file di testo cercando i CNAMES corrispondenti.
O con questo script perl non testato (ma apparentemente corretto) :
#!/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 paio di punti per completezza:
Se hai accesso alla tua configurazione DNS, è piuttosto banale scoprire questi dati. Tuttavia, chiunque può avere un CNAME che punta al tuo server. Non sarai in grado di rintracciarli.
Come ha sottolineato @wombie, non puoi fare una ricerca inversa per CNAMES. Non esiste un equivalente PTR per CNAMES e anche se lì dove è probabile esistano solo alcuni record. Un rapido controllo di una selezione casuale di domini mostrerebbe spesso che i record PTR non rimandano al record A. Allo stesso modo, fare ricerche inverse di record PTR per indirizzi casuali spesso non trova il record A corrispondente.
EDIT: i CNAME non sono l'unico modo per alias un sistema. Il DNS consente a più record A di indicare lo stesso indirizzo. Funzionalmente è come aggiungere un CNAME ma il metodo è diverso. Gli stessi problemi si applicano al di fuori del tuo dominio. Per cercare i vari record A, dovresti cercare gli indirizzi IP del sistema in questione.
usa powershell:
controlla il nome principale sul tuo server DNS Microsoft:
Get-WmiObject -Namespace 'root \ MicrosoftDNS' -Class MicrosoftDNS_AType -Filter "IPAddress = 'xx.xx.xx.xx (IP)'" -ComputerName mydnsservername
ottieni tutti i nomi per quell'host dal tuo server DNS Microsoft:
Get-WmiObject -Namespace 'root \ MicrosoftDNS' -Class MicrosoftDNS_CNAMEType -Filter "primaryname = 'primaryname dalla prima query terminata con un punto." "-ComputerName mydnsservername | selezionare il proprio nome, nome principale
dnscmd
per esportare i dati della zona:dnscmd a.ns.example.com / zoneexport zone.example.com some-nomefile-per-questa-zona
CNAME
record di risorse che puntano al nome di dominio di destinazione.