So verwenden Sie den dig-Befehl unter Linux
Veröffentlicht: 2022-01-29 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.
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.
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 auchiquery
für eine umgekehrte Abfrage oderstatus
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
undrecursion available
. Rekursion ist eine Form der DNS-Suche (die andere ist iterativ). Möglicherweise sehen Sie auchAA
, 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!
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
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.
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.
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.
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
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.
Linux-Befehle | ||
Dateien | tar · pv · cat · tac · chmod · grep · diff · sed · ar · man · pushd · popd · fsck · testdisk · seq · fd · pandoc · cd · $PATH · awk · join · jq · fold · uniq · journalctl · tail · stat · ls · fstab · echo · less · chgrp · chown · rev · look · strings · type · rename · zip · unzip · mount · umount · install · fdisk · mkfs · rm · rmdir · rsync · df · gpg · vi · nano · mkdir · du · ln · patch · konvertieren · rclone · shred · srm | |
Prozesse | alias · screen · top · nice · renice · progress · strace · systemd · tmux · chsh · history · at · batch · free · which · dmesg · chfn · usermod · ps · chroot · xargs · tty · pinky · lsof · vmstat · timeout · wall · yes · kill · sleep · sudo · su · time · groupadd · usermod · groups · lshw · shutdown · reboot · halt · poweroff · passwd · lscpu · crontab · date · bg · fg | |
Vernetzung | netstat · ping · traceroute · ip · ss · whois · fail2ban · bmon · dig · finger · nmap · ftp · curl · wget · who · whoami · w · iptables · ssh-keygen · ufw |
RELATED: Beste Linux-Laptops für Entwickler und Enthusiasten