Gibt es eine Möglichkeit, unsere internen DNS-Einträge abzufragen, um alle CNAME-Einträge zu ermitteln, die auf einen bestimmten Server verweisen?
Bearbeiten: Wir sind eine Windows-Umgebung, Server 2003.
Gibt es eine Möglichkeit, unsere internen DNS-Einträge abzufragen, um alle CNAME-Einträge zu ermitteln, die auf einen bestimmten Server verweisen?
Bearbeiten: Wir sind eine Windows-Umgebung, Server 2003.
Antworten:
Sie haben nicht angegeben, was Ihre Umgebung ist, aber wenn Sie Unix verwenden, denke ich, dass eine Kombination aus dig und grep funktionieren sollte. ns.example.com
sollte der Hostname Ihres Nameservers sein, example.com
ist die Domain, zu der Ihr Host gehört, und HOST ist der Host, für den Sie alle CNAME-Einträge suchen möchten. Das ist eigentlich ein Tabulatorzeichen im Befehl grep, nicht wörtlich <TAB>
(möglicherweise müssen Sie die Zeichenfolge grep anpassen).
Außerdem muss Ihr Nameserver so konfiguriert sein, dass Zonenübertragungen möglich sind, deren Einzelheiten von der Implementierung abhängen.
dig @ns.example.com example.com axfr |grep 'CNAME<tab>HOST$'
Oder wenn Sie unter Windows arbeiten, können Sie nslookup verwenden :
C:\> nslookup
> name ns.example.com
> ls -a example.com FILE
Dies sollte alle Datensätze für die Domäne example.com
, ns.example.com
die über FILE "Bescheid weiß", ausgeben. Sie können dann mit jedem beliebigen Werkzeug die Textdatei nach den entsprechenden CNAMES durchsuchen.
Oder mit diesem ungetesteten (aber scheinbar korrekt aussehenden) Perl- Skript :
#!/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."."));
}
Ein paar Punkte für die Vollständigkeit:
Wenn Sie Zugriff auf Ihre DNS-Konfiguration haben, ist es eher trivial, diese Daten zu ermitteln. Jeder kann jedoch einen CNAME haben, der auf Ihren Server verweist. Sie können diese nicht verfolgen.
Wie @wombie bereits betont hat, können Sie CNAMES nicht in umgekehrter Reihenfolge suchen. Es gibt kein PTR-Äquivalent für CNAMES, und selbst wenn dort, wo es wahrscheinlich ist, nur einige Datensätze existieren würden. Eine schnelle Überprüfung einer zufälligen Auswahl von Domänen ergab, dass PTR-Datensätze häufig nicht auf den A-Datensatz verweisen. Ebenso wird beim Rückwärtssuchen von PTR-Datensätzen nach zufälligen Adressen häufig nicht der entsprechende A-Datensatz gefunden.
BEARBEITEN: CNAMEs sind nicht die einzige Möglichkeit, ein System als Alias zu kennzeichnen. Mit DNS können mehrere A-Einträge auf dieselbe Adresse verweisen. Funktionell ist dies dasselbe wie das Hinzufügen eines CNAME, aber die Methode ist anders. Die gleichen Probleme treten auch außerhalb Ihrer Domain auf. Um nach den verschiedenen A-Einträgen zu suchen, müssen Sie nach den IP-Adressen des betreffenden Systems suchen.
benutze Powershell:
Suchen Sie auf Ihrem Microsoft DNS-Server nach dem Primärnamen:
Get-WmiObject -Namespace 'root \ MicrosoftDNS' -Klasse MicrosoftDNS_AType -Filter "IPAddress = 'xx.xx.xx.xx (IP)'" -ComputerName mydnsservername
Rufen Sie alle cnames für diesen Host von Ihrem Microsoft DNS-Server ab:
Get-WmiObject -Namespace 'root \ MicrosoftDNS' -Klasse MicrosoftDNS_CNAMEType -Filter "primaryname = 'primaryname aus der ersten mit einem Punkt abgeschlossenen Abfrage."
dnscmd
die Zonendaten zu exportieren:dnscmd a.ns.example.com / zoneexport zone.example.com Dateiname für diese Zone
CNAME
Ressourceneinträgen, die auf den Zieldomänennamen verweisen.