DNS-Suche mit Platzhaltern?

8

Irgendetwas wie nslookupoder digbietet die Möglichkeit, basierend auf etwas zu suchen, das im Namen enthalten ist ... wie eine Platzhaltersuche oder so?

Ich versuche, ein kleines Skript mit einem GUI-Wrapper für unser Helpdesk-Team zu erstellen. Im Idealfall möchte ich, dass sie den Nachnamen des Benutzers suchen können (etwas, das immer im DNS-Eintrag vorhanden ist), und dann ein Pulldown mit den möglichen Optionen füllen, aus denen sie auswählen können.

Ich bin nicht in der Lage, einen Weg zu finden, um effektiv das Äquivalent von nslookup *miller*... zu haben. Es wäre großartig, dann zurück zu kommen

Name: sf-jacobmiller.localdomain.com
Address: 10.10.10.121

Name: sf-justinmiller.localdomain.com
Address: 10.10.10.144

..was ich dann in einen Pulldown analysieren könnte, aus dem sie auswählen können.

Ich habe noch nicht untersucht, was verfügbar ist, mit ldapsearchdem ich möglicherweise das tun kann, wonach ich suche. Meine einzige Voraussetzung ist, dass dies in OSX integriert ist und ich nichts anderes installieren muss, sonst bin ich offen für alle Lösungen, die Sie anbieten können. Vielen Dank

Versuchen Sie es erneut
quelle

Antworten:

11

Sie können eine vollständige Liste der Einträge in einer Zone mit einer Zonenübertragung erhalten. Sie müssen dies für autorisierte Systeme in Ihrem DNS-Server zulassen.

Sobald dies erledigt ist, können Sie die Übertragung ausführen und das Ergebnis abrufen:

dig axfr localdomain.com | grep -i miller
Shane Madden
quelle
So einfach und unkompliziert, wie ich es mir erhofft hatte. Vielen Dank
TryTryAgain
Ich möchte Ihre Antwort grep -iso bearbeiten , dass sie die Groß- und Kleinschreibung nicht berücksichtigt. Andernfalls wurde mir klar, dass der Fall zu viele Probleme verursachen würde. Ich kann eine so kleine Änderung jedoch nicht vornehmen. Nochmals vielen Dank für diese elegante Lösung, genau das, wonach ich gesucht habe.
TryTryAgain
6

Auf einem Nameserver können Sie von Natur aus keine Zone durchsuchen oder abfragen, für welche Zonen er maßgeblich ist. Abgesehen von dem offensichtlichen Grund, Angriffsvektoren zu reduzieren (Sie können keine HTTP / 1.1-Anforderung an einen Host senden, wenn Sie dessen Namen nicht kennen), gibt es dafür einen sehr guten Grund: Eine Zone kann selbst Platzhalter enthalten Für jeden Host in einer solchen Zone ist das wie durch Null teilen.

Wenn Sie den Nameserver betreiben, dessen Datensätze Sie durchsuchen möchten, können Sie eine Zonenübertragung auf einen lokalen Nameserver durchführen und die Datensätze direkt durchsuchen. Sie müssen die Textdatensätze weiterhin in dem Format analysieren, in dem sie übertragen werden, da ein lokaler Nameserver nicht anders reagiert.

Dartonw
quelle
6

Sie können einen DNS-Server nur fragen, ob er einen bestimmten Eintrag hat. Nein, es wird kein solches Tool für DNS geben.

Bearbeiten

Zonetransfer ist natürlich eine Möglichkeit, wenn es verfügbar ist.

Christopher Perrin
quelle
Sieht so aus, als ob Sie sich als falsch erwiesen haben, wie ich erwartet hatte.
TryTryAgain
3
@TryTryAgain Eigentlich ist er im Allgemeinen ganz richtig: Beachten Sie die Schlüsselwörter in der Antwort, die Sie akzeptiert haben : need to allow this for authorized systems in your DNS server. Wenn Sie beispielsweise versuchen, eine Zonenübertragung für serverfault.com(oder so ziemlich jede Zone, die Sie nicht kontrollieren oder für die Sie keine Vereinbarungen mit den DNS-Administratoren getroffen haben), erhalten Sie keine Ergebnisse.
voretaq7
4
@TryTryAgain Die Formulierung wirkt auch etwas unhöflich. Wenn die Antwort so offensichtlich wäre, wie Sie es klingen lassen, hätten Sie die Frage nicht posten müssen. Wir sind alle hier, um uns gegenseitig zu helfen ... normalerweise.
Andrew B
1

Als ich mit der überprüften Antwort einverstanden war, dachte ich, dass eine for-Schleife eine Alternative für jemanden sein könnte, der nicht berechtigt ist, eine Zonenübertragung durchzuführen. Wenn Sie den IP-Bereich kennen:

name="mthebeau"
net="123.45.67."
for ip in $( seq 1 255 ); do {
    sleep 1; # be kind to the server, unauthorized user
    text="$( nslookup $net$ip 2>&1 | grep "$name" )";
    if [ -z "$text" ]; then continue; fi;
    echo "$text";
}; do

Ich habe diese Antwort nachgeschlagen, weil ich meinen Desktop für einen lokalen Benutzer öffnen wollte, dessen IP- und Computername ich nicht kannte.

user456228
quelle