So verwenden Sie den dig-Befehl unter Linux

Veröffentlicht: 2022-01-29
Ein stilisiertes Terminalfenster auf einem Linux-System.
Fatmawati Achmad Zaenuri/Shutterstock

Mit dem Linux-Befehl dig können Sie DNS-Server abfragen und DNS-Lookups durchführen. Sie können auch die Domain finden, zu der eine IP-Adresse zurückführt. Wir zeigen Ihnen wie!

Wie der dig-Befehl funktioniert

Benutzer verwenden den Linux-Befehl dig , um DNS-Server (Domain Name System) abzufragen. dig ist ein Akronym für Domain Information Groper. Mit dig können Sie DNS-Server nach Informationen zu verschiedenen DNS-Einträgen abfragen, darunter Hostadressen, Mail-Austausch, Nameserver und zugehörige Informationen. Es sollte ein Tool zur Diagnose von DNS-Problemen sein. Sie können es jedoch verwenden, um herumzustöbern und mehr über DNS zu erfahren, das eines der zentralen Systeme ist, das den Internet-Routing-Verkehr verwaltet.

Das Internet verwendet Internet Protocol (IP)-Adressen, um „Standorte“ im Internet zu identifizieren, aber Menschen verwenden Domainnamen. Wenn Sie einen Domänennamen in eine Anwendung wie einen Webbrowser oder einen SSH-Client eingeben, muss etwas vom Domänennamen in die tatsächliche IP-Adresse übersetzt werden. Hier kommt das Domain Name System ins Spiel.

Wenn Sie einen Domänennamen mit einem mit dem Internet verbundenen Programm verwenden, kann Ihr lokaler Router ihn nicht auflösen (es sei denn, er wurde von einer früheren Anfrage zwischengespeichert). Ihr Router fragt also entweder den DNS-Server Ihres Internetdienstanbieters (ISP) oder einen anderen, für den Sie Ihr System konfiguriert haben, ab. Diese werden als DNS-Vorläuferserver bezeichnet.

Wenn der DNS-Server kürzlich dieselbe Anfrage von jemand anderem auf demselben Computer erhalten hat, befindet sich die Antwort möglicherweise in seinem Cache. Wenn dies der Fall ist, sendet es einfach dieselben Informationen an Ihr Programm zurück.

Wenn der DNS-Vorläuferserver die Domain nicht in seinem Cache finden kann, kontaktiert er einen DNS-Root-Nameserver. Ein Root-Server enthält nicht die Informationen, die zum Auflösen von Domänennamen in IP-Adressen erforderlich sind, aber er enthält Listen von Servern, die Ihnen bei Ihrer Anfrage helfen können.

Anzeige

Der Stammserver sieht sich die Top-Level-Domain an, zu der Ihr Domainname gehört, wie z. B. .COM, .ORG, .CO.UK und so weiter. Anschließend sendet er eine Liste der Domänenserver der obersten Ebene, die diese Arten von Domänen verwalten, zurück an den DNS-Vorläuferserver. Der DNS-Precursor-Server kann dann erneut seine Anfrage an einen Top-Level-Domain-Server stellen.

Der Top-Level-Domain-Server sendet die Details des autoritativen Nameservers (wo die Details der Domain gespeichert sind) zurück an den DNS-Vorläuferserver. Der DNS-Server fragt dann den maßgeblichen Nameserver ab, der die Zone der Domäne hostet, die Sie ursprünglich in Ihr Programm eingegeben haben. Der autoritative Nameserver sendet die IP-Adresse an den DNS-Server zurück, der sie wiederum an Sie zurücksendet.

Installation von dig

dig war bereits auf unseren Ubuntu 18.04- und Fedora 30-Computern installiert. Wir mussten es jedoch mit dem folgenden Befehl auf dem Manjaro 18.04-Computer installieren:

 sudo pacman -Sy Bindewerkzeuge 

Erste Schritte mit dig

In unserem ersten Beispiel geben wir die mit einem Domänennamen verknüpften IP-Adressen zurück. Häufig sind mehrere IP-Adressen mit einem einzigen Domänennamen verknüpft. Dies passiert häufig, wenn z. B. Load Balancing verwendet wird.

Wir verwenden die +short -Abfrageoption, wie unten gezeigt, was uns eine knappe Antwort gibt:

 grabe howtogeek.com +kurz 

Alle mit der Domain howtogeek.com verbundenen IP-Adressen werden für uns aufgelistet. Am anderen Ende des Spektrums ist die Ausgabe ziemlich ausführlich, wenn wir die Abfrageoption +short nicht verwenden.

Anzeige

Also geben wir Folgendes ein, um es durch less zu leiten:

 graben howtogeek.com | weniger 

Die Ausgabe wird wie unten gezeigt in less angezeigt.

Hier ist die vollständige Liste:

 ; <<>> DiG 9.11.3-1ubuntu1.11-Ubuntu <<>> howtogeek.com
;; globale Optionen: +cmd
;; Antwort bekommen:
;; ->>HEADER<<- Opcode: QUERY, Status: NOERROR, ID: 12017
;; Flaggen: qr rd ra; FRAGE: 1, ANTWORT: 4, BEHÖRDE: 0, ZUSÄTZLICH: 1

;; OPT PSEUDOSEKTION:
; EDNS: Version: 0, Flags:; udp: 65494
;; FRAGETEIL:
;howtogeek.com. IN EINEM

;; ANTWORTTEIL:
howtogeek.com. 3551 IN A 151.101.194.217
howtogeek.com. 3551 IN A 151.101.130.217
howtogeek.com. 3551 IN A 151.101.66.217
howtogeek.com. 3551 IN A 151.101.2.217

;; Abfragezeit: 0 ms
;; Server: 127.0.0.53#53(127.0.0.53)
;; WANN: So. 22. März 07:44:37 EDT 2020
;; Empf. MSG-GRÖSSE: 106

Lassen Sie uns das Stück für Stück analysieren.

Header

Schauen wir uns zuerst an, was wir in der Kopfzeile haben:

 ; <<>> DiG 9.11.3-1ubuntu1.11-Ubuntu <<>> howtogeek.com
;; globale Optionen: +cmd
;; Antwort bekommen:
;; ->>HEADER<<- Opcode: QUERY, Status: NOERROR, ID: 12017
;; Flaggen: qr rd ra; FRAGE: 1, ANTWORT: 4, BEHÖRDE: 0, ZUSÄTZLICH: 1

Nun, hier ist, was das alles bedeutet:

  • Erste Zeile: Die Version von dig und die abgefragte Domain.
  • Globale Optionen: Wie wir sehen werden, können Sie mit dig mehrere Domains gleichzeitig abfragen. Diese Zeile zeigt die Optionen, die auf alle Domänenabfragen angewendet wurden. In unserem einfachen Beispiel war es nur die Standardoption +cmd (Befehl).
  • Opcode: Abfrage: Dies ist die Art der angeforderten Operation, die in diesem Fall eine query war. Dieser Wert kann auch iquery für eine umgekehrte Abfrage oder status sein, wenn Sie nur den Status des DNS-Systems testen.
  • Status: Noerror: Es sind keine Fehler aufgetreten und die Anfrage wurde korrekt gelöst.
  • ID: 12017 : Diese zufällige ID bindet Anfrage und Antwort zusammen.
  • Flags: qr rd ra: Diese stehen für query , recursion desired und recursion available . Rekursion ist eine Form der DNS-Suche (die andere ist iterativ). Möglicherweise sehen Sie auch AA , was für Authoritative Answer steht, was bedeutet, dass ein Authoritative Name Server die Antwort bereitgestellt hat.
  • Abfrage: 1: Die Anzahl der Abfragen in dieser Sitzung, die eine war.
  • Antwort: 4: Die Anzahl der Antworten in dieser Antwort, also vier.
  • Autorität: 0: Die Anzahl der Antworten, die von einem autoritativen Nameserver kamen, was in diesem Fall null war. Die Antwort wurde aus dem Cache eines DNS-Vorläuferservers zurückgegeben. Die Antwort enthält keinen maßgeblichen Abschnitt.
  • Zusätzlich: 1: Es gibt eine zusätzliche Information. (Seltsamerweise wird nichts aufgelistet, es sei denn, dieser Wert ist zwei oder höher.)

Opt Pseudosektion

Als nächstes sehen wir im Abschnitt Opt Pseudo Folgendes:

 ;; OPT PSEUDOSEKTION:
; EDNS: Version: 0, Flags:; udp: 65494

Lassen Sie uns das aufschlüsseln:

  • EDNS: Version 0: Die verwendete Version des Erweiterungssystems für DNS. EDNS überträgt erweiterte Daten und Flags, indem es die Größe der UDP-Pakete (User Datagram Protocol) erweitert. Dies wird durch ein Flag mit variabler Größe angezeigt.
  • flags: Es werden keine Flags verwendet.
  • udp : 4096: Die UDP-Paketgröße.

Fragenbereich

Im Frageabschnitt sehen wir Folgendes:

 ;; FRAGETEIL:
;howtogeek.com. IN EINEM

Das bedeutet Folgendes:

  • howtogeek.com: Der Domainname, den wir abfragen.
  • IN: Wir führen eine Internetklassenabfrage durch.
  • A: Sofern wir nichts anderes angeben, fordert dig einen A-Datensatz (Adresse) vom DNS-Server an.

Antwortbereich

Der Abschnitt Antwort enthält die folgenden vier Antworten, die wir vom DNS-Server erhalten haben:

 howtogeek.com. 3551 IN A 151.101.194.217
howtogeek.com. 3551 IN A 151.101.130.217
howtogeek.com. 3551 IN A 151.101.66.217
howtogeek.com. 3551 IN A 151.101.2.217

Hier ist, was diese Antworten bedeuten:

  • 3551: Dies ist die Time to Live (TTL), eine 32-Bit-Ganzzahl mit Vorzeichen, die das Zeitintervall enthält, für das ein Datensatz zwischengespeichert werden kann. Wenn es abläuft, müssen die Daten in einer Antwort auf eine Anfrage verwendet werden, bis sie vom DNS-Server aktualisiert wurden.
  • IN: Wir haben eine Internetklassenabfrage gemacht.
  • A: Wir haben vom DNS-Server nach einem A-Eintrag gefragt.

Abschnitt Statistik

Statistik ist der letzte Abschnitt und enthält die folgenden Informationen:

 ;; Abfragezeit: 0 ms 
;; Server: 127.0.0.53#53(127.0.0.53) 
;; WANN: So. 22. März 07:44:37 EDT 2020 
;; Empf. MSG-GRÖSSE: 106

Hier ist, was wir haben:

  • Abfragezeit: 0 ms: Die Zeit, die zum Erhalt der Antwort benötigt wurde.
  • SERVER: 127.0.0.53#53(127.0.0.53): Die IP-Adresse und Portnummer des DNS-Servers, der geantwortet hat. In diesem Fall zeigt es auf den lokalen Caching-Stub-Resolver. Dadurch werden DNS-Anforderungen an die konfigurierten Upstream-DNS-Server weitergeleitet. Auf dem Manajro-Testcomputer war die hier aufgeführte Adresse 8.8.8.8#53, das ist der öffentliche DNS-Dienst von Google.
  • WANN: So. 22. März 07:44:37 EDT 2020: Als die Anfrage gestellt wurde.
  • MSG SIZE rcvd: 106: Die Größe der vom DNS-Server empfangenen Nachricht.

Selektiv sein

Sie müssen sich nicht mit den beiden Extremen wortkarg und geschwätzig zufrieden geben. Mit dem Befehl dig können Sie Abschnitte selektiv in die Ergebnisse einbeziehen oder aus ihnen ausschließen.

Die folgenden Abfrageoptionen entfernen diesen Abschnitt aus den Ergebnissen:

  • +nocomments: Keine Kommentarzeilen anzeigen.
  • +noauthority: Den Autoritätsbereich nicht anzeigen.
  • +noadditional: Den zusätzlichen Abschnitt nicht anzeigen.
  • +nostats: Statistikbereich nicht anzeigen.
  • +noanswer: Antwortbereich nicht anzeigen.
  • +noall: Nichts anzeigen!
Anzeige

Die +noall Abfrageoption wird normalerweise mit einer der oben genannten kombiniert, um einen Abschnitt in die Ergebnisse aufzunehmen. Anstatt also eine lange Reihe von Abfrageoptionen einzugeben, um mehrere Abschnitte zu deaktivieren, können Sie +noall verwenden, um sie alle zu deaktivieren.

Sie können dann die folgenden inklusiven Abfrageoptionen verwenden, um diejenigen, die Sie sehen möchten, wieder zu aktivieren:

  • +Kommentare: Kommentarzeilen anzeigen.
  • +Behörde: Zeigt den Berechtigungsbereich an.
  • +zusätzlich: Zeigt den zusätzlichen Abschnitt an.
  • +stats: Zeigt den Statistikbereich an.
  • +Antwort: Zeigt den Antwortbereich an.
  • +all: Alles anzeigen.

Wir geben Folgendes ein, um eine Anfrage zu stellen und die Kommentarzeilen auszuschließen:

 grabe howtogeek.com + keine Kommentare 

Wenn wir die Abfrageoption +noall allein verwenden, wie unten gezeigt, erhalten wir keine nützliche Ausgabe:

 grabe howtogeek.com +noall 

Wir können selektiv die Abschnitte hinzufügen, die wir sehen möchten. Um den Antwortabschnitt hinzuzufügen, geben wir Folgendes ein:

 grabe howtogeek.com +noall +antwort 

Wenn wir Folgendes eingeben, um +stats zu aktivieren, sehen wir auch den Statistikabschnitt:

 grabe howtogeek.com +noall +antwort +stats 

Anzeige

Die Kombination +noall +answer wird häufig verwendet. Sie können der Befehlszeile nach Bedarf weitere Abschnitte hinzufügen. Wenn Sie vermeiden möchten, jedes Mal, wenn Sie dig verwenden, +noall +answer in die Befehlszeile einzugeben, können Sie sie in eine Konfigurationsdatei namens „.digrc“ einfügen. Es befindet sich in Ihrem Home-Verzeichnis.

Wir geben Folgendes ein, um eines mit echo zu erstellen:

 echo "+noall +antwort" > $HOME/.digrc

Wir können dann Folgendes eingeben, um den Inhalt zu überprüfen:

 Katze .digrc 

Diese beiden Optionen werden nun auf alle zukünftigen Verwendungen von dig angewendet, wie unten gezeigt:

 ubuntu.org ausgraben
 linux.org ausgraben
 grab github.com 

Diese dig -Konfigurationsdatei wird für die verbleibenden Beispiele in diesem Artikel verwendet.

DNS-Einträge

Die an Ihre dig -Anfragen zurückgegebenen Informationen stammen aus verschiedenen Arten von Datensätzen, die auf dem DNS-Server gespeichert sind. Sofern wir nicht nach etwas anderem fragen, fragt dig den A-Datensatz (Adresse) ab. Die folgenden Arten von Datensätzen werden häufig mit dig verwendet:

  • A Record: Verknüpft die Domain mit einer IP-Adresse der Version 4.
  • MX-Eintrag: E-Mail-Austausch zeichnet E-Mails auf, die an Domänen an den richtigen E-Mail-Server gesendet werden.
  • NS-Eintrag: Nameserver-Einträge delegieren eine Domain (oder Subdomain) an eine Reihe von DNS-Servern.
  • TXT-Datensatz: Textdatensätze speichern textbasierte Informationen zur Domain. Typischerweise werden sie verwendet, um gefälschte oder gefälschte E-Mails zu unterdrücken.
  • SOA Record: Beginn of Authority Records können viele Informationen über die Domain enthalten. Hier finden Sie den primären Nameserver, die verantwortliche Partei, einen Zeitstempel für Änderungen, die Häufigkeit von Zonenaktualisierungen und eine Reihe von Zeitlimits für Wiederholungsversuche und Abbrüche.
  • TTL: Time to live ist eine Einstellung für jeden DNS-Eintrag, die angibt, wie lange ein DNS-Vorläuferserver jede DNS-Abfrage zwischenspeichern darf. Wenn diese Zeit abgelaufen ist, müssen die Daten für nachfolgende Anforderungen aktualisiert werden.
  • ANY: Dies weist dig an, jede Art von DNS-Eintrag zurückzugeben, die es kann.
Anzeige

Die Angabe des Datensatztyps A ändert nichts an der Standardaktion, die darin besteht, den Adressdatensatz abzufragen und die IP-Adresse zu erhalten, wie unten gezeigt:

 dig redhat.com A 

Um die Mail-Exchange-Datensätze abzufragen, verwenden wir das folgende MX-Flag:

 Graben Sie yahoo.com MX 

Das Nameserver-Flag gibt die folgenden Namen der Root-Nameserver zurück, die der Top-Level-Domain zugeordnet sind:

 dig fedora.com NS 

Um den Beginn des Normdatensatzes abzufragen, geben wir das folgende SOA-Flag ein:

 dig manjaro.com SOA 

Das TTL-Flag zeigt uns die Lebensdauer der Daten im Cache des DNS-Servers. Wenn wir eine Reihe von Anfragen stellen, sehen wir, wie sich die Lebensdauer auf Null reduziert und dann auf ihren Ausgangswert zurückspringt.

Wir geben Folgendes ein:

 dig usa.gov TTL 

Um die Textdatensätze anzuzeigen, geben wir das TX-Flag ein:

 dig usa.gov TXT 

Angeben des DNS-Servers

Wenn Sie für Ihre Anfrage einen bestimmten DNS-Server verwenden möchten, können Sie ihn mit dem at-Zeichen ( @ ) als Befehlszeilenparameter an dig übergeben.

Anzeige

Mit dem Standard-DNS-Server (siehe unten) verweist dig auf den lokalen Caching-Stub-Resolver unter 127.0.0.53.

 dig usa.gov +stats

Jetzt geben wir Folgendes ein, um den öffentlichen DNS-Server von Google unter 8.8.8.8 zu verwenden:

 dig @8.8.8.8 usa.gov +stats 

Verwenden von dig mit mehreren Domänen

Wir können mehrere Domains übergeben, um auf der Befehlszeile zu dig , wie unten gezeigt:

 dig ubuntu.org fedora.org manjaro.com 

Wenn Sie regelmäßig eine Reihe von Domains überprüfen, können Sie diese in einer Textdatei speichern und an dig übergeben. Alle Domänen in der Datei werden der Reihe nach überprüft.

Unsere Datei heißt „domains.txt“. Wir verwenden cat , um seinen Inhalt anzuzeigen, und übergeben es dann mit der Option -f (Datei) an dig . Wir geben Folgendes ein:

 cat-domains.txt
 dig -f domains.txt 

Umgekehrte DNS-Lookups

Wenn Sie eine IP-Adresse haben und wissen möchten, wohin sie führt, können Sie eine Reverse-DNS-Suche versuchen. Wenn es zu einem Server aufgelöst wird, der bei einem DNS-Server registriert ist, können Sie möglicherweise seine Domäne herausfinden.

Anzeige

Ob dies möglich ist, hängt vom Vorhandensein eines PTR (Pointer Record) ab. PTRs lösen eine IP-Adresse in einen vollständig qualifizierten Domänennamen auf. Da diese jedoch nicht obligatorisch sind, sind sie nicht immer in einer Domäne vorhanden.

Mal sehen, ob wir herausfinden können, wohin uns die IP-Adresse 209.51.188.148 führt. Wir geben Folgendes ein, indem wir die Option -x (umgekehrte Suche) verwenden:

 dig -x 209.51.188.148 

Presto! Die IP-Adresse wird zu gnu.org aufgelöst.

Da ein PTR ein DNS-Eintrag ist und wir wissen, dass dig bestimmte DNS-Einträge anfordern kann, könnten wir nicht einfach dig bitten, den PTR für uns abzurufen? Ja, das können wir, aber es erfordert etwas mehr Arbeit.

Wir müssen die IP-Adresse in umgekehrter Reihenfolge angeben und .in-addr.arpa am Ende anhängen, wie unten gezeigt:

 dig ptr 148.188.51.209.in-adr.arpa 

Anzeige

Wir erhalten das gleiche Ergebnis; es hat nur etwas mehr Mühe gekostet.

Kannst du es graben?

Wir alle nutzen das Internet täglich, und neugierige Köpfe haben sich oft gefragt, wie die Magie entsteht, wenn wir den Namen einer Website in einen Browser eingeben. Mit dig können Sie die Prozesse der Netzwerkbeschwörung untersuchen.

RELATED: Beste Linux-Laptops für Entwickler und Enthusiasten