# dig — DNS-Einträge gezielt abfragen

> Praxis-Guide zu dig — DNS-Auflösung, Eintragstypen, Reverse-Lookup, DNSSEC und Tracing auf der Kommandozeile, mit Diagnose-Beispielen.

Source: https://www.jpkc.com/db/cheatsheets/networking/dig/

<!-- PROSE:intro -->
`dig` ist das Standardwerkzeug für DNS-Diagnosen auf der Kommandozeile: Mit einem Befehl fragst du einzelne Einträge ab, prüfst Mail-Server-Konfigurationen, verfolgst die Delegationskette bis zum autoritativen Nameserver oder verifizierst DNSSEC-Signaturen. Das Tool stammt aus dem BIND-Paket und ist auf nahezu jedem Unix-System vorinstalliert. Dieser Guide zeigt dir die wichtigsten Optionen – vom schnellen A-Record-Lookup bis zum vollständigen Zonentransfer.
<!-- PROSE:intro:end -->

## Grundlegende Abfragen

`dig DOMAIN` — Fragt den A-Eintrag (IPv4-Adresse) einer Domain über den Standard-DNS-Server ab.

```bash
dig example.com
```

`dig DOMAIN TYPE` — Fragt einen bestimmten Eintragstyp ab (A, AAAA, MX, NS, TXT, CNAME, SOA, SRV, CAA, PTR usw.).

```bash
dig example.com MX
```

`dig @SERVER DOMAIN` — Fragt einen bestimmten DNS-Server ab.

```bash
dig @8.8.8.8 example.com
```

`dig @SERVER DOMAIN TYPE` — Fragt einen bestimmten Eintragstyp bei einem bestimmten Server ab.

```bash
dig @1.1.1.1 example.com AAAA
```

`dig DOMAIN ANY` — Fragt alle verfügbaren Eintragstypen ab. Hinweis: Viele Server schränken ANY-Abfragen ein.

```bash
dig example.com ANY
```

## Häufige Eintragstypen

`dig DOMAIN A` — IPv4-Adresseintrag.

```bash
dig example.com A
```

`dig DOMAIN AAAA` — IPv6-Adresseintrag.

```bash
dig example.com AAAA
```

`dig DOMAIN MX` — Mail-Exchange-Einträge. Zeigt Mailserver und ihre Prioritäten.

```bash
dig example.com MX
```

`dig DOMAIN NS` — Nameserver-Einträge. Zeigt die autoritativen DNS-Server.

```bash
dig example.com NS
```

`dig DOMAIN TXT` — Text-Einträge. Enthält oft SPF-, DKIM-, DMARC- und Verifikations-Records.

```bash
dig example.com TXT
```

`dig DOMAIN SOA` — Start of Authority. Zeigt primären Nameserver, Admin-E-Mail, Seriennummer und Timer.

```bash
dig example.com SOA
```

`dig DOMAIN CNAME` — Kanonischer Namenseintrag (Alias).

```bash
dig www.example.com CNAME
```

`dig DOMAIN SRV` — Diensteintrag. Wird für Service-Discovery verwendet (z. B. SIP, XMPP, LDAP).

```bash
dig _sip._tcp.example.com SRV
```

`dig DOMAIN CAA` — Certificate Authority Authorization. Zeigt, welche CAs Zertifikate ausstellen dürfen.

```bash
dig example.com CAA
```

## Ausgabe steuern

`dig +short DOMAIN` — Kurze Ausgabe – nur die Antwort, ohne Header oder Metadaten.

```bash
dig +short example.com
```

`dig +short DOMAIN TYPE` — Kurze Ausgabe für einen bestimmten Eintragstyp.

```bash
dig +short example.com MX
```

`dig +noall +answer DOMAIN` — Zeigt nur den Antwortbereich. Kompakt, aber mit Felddetails.

```bash
dig +noall +answer example.com
```

`dig +noall +answer +authority DOMAIN` — Zeigt Antwort- und Autoritätsbereich.

```bash
dig +noall +answer +authority example.com NS
```

`dig +nocomments +noquestion +noauthority +noadditional +nostats DOMAIN` — Unterdrückt alle Bereiche außer der Antwort.

```bash
dig +nocomments +noquestion +noauthority +noadditional +nostats example.com
```

`dig +multiline DOMAIN SOA` — Mehrzeilige Ausgabe mit Kommentaren. Nützlich für SOA- und DNSSEC-Einträge.

```bash
dig +multiline example.com SOA
```

`dig +yaml DOMAIN` — Ausgabe im YAML-Format (dig 9.18+).

```bash
dig +yaml example.com
```

`dig +json DOMAIN` — Ausgabe im JSON-Format (dig 9.18+).

```bash
dig +json example.com
```

## Reverse-DNS-Lookup

`dig -x IP` — Reverse-DNS-Lookup – findet den Hostnamen zu einer IP-Adresse.

```bash
dig -x 8.8.8.8
```

`dig -x IP +short` — Kurzer Reverse-Lookup – nur der Hostname.

```bash
dig -x 8.8.8.8 +short
```

`dig -x IPV6` — Reverse-Lookup für eine IPv6-Adresse.

```bash
dig -x 2001:4860:4860::8888
```

## Ablaufverfolgung & Diagnose

`dig +trace DOMAIN` — Verfolgt den vollständigen Delegationspfad von den Root-Servern bis zum autoritativen Server.

```bash
dig +trace example.com
```

`dig +trace +nodnssec DOMAIN` — Tracing ohne DNSSEC-Einträge für eine übersichtlichere Ausgabe.

```bash
dig +trace +nodnssec example.com
```

`dig +stats DOMAIN` — Zeigt Abfragestatistiken (Zeit, Server, Nachrichtengröße).

```bash
dig +stats example.com
```

`dig +qr DOMAIN` — Zeigt die ausgehende Anfrage neben der Antwort.

```bash
dig +qr example.com
```

`dig +identify DOMAIN` — Zeigt den antwortenden Server bei +short-Abfragen.

```bash
dig +short +identify example.com
```

## DNSSEC

`dig +dnssec DOMAIN` — Fordert DNSSEC-Einträge an (RRSIG, DNSKEY, DS, NSEC).

```bash
dig +dnssec example.com
```

`dig DOMAIN DNSKEY` — Fragt die öffentlichen DNSSEC-Schlüssel einer Domain ab.

```bash
dig example.com DNSKEY
```

`dig DOMAIN DS` — Fragt Delegation-Signer-Einträge ab (verknüpft untergeordnete mit übergeordneter Zone).

```bash
dig example.com DS
```

`dig +dnssec +multiline DOMAIN DNSKEY` — Zeigt DNSSEC-Schlüssel mit mehrzeiliger Formatierung und Schlüssel-IDs.

```bash
dig +dnssec +multiline example.com DNSKEY
```

`dig +cd DOMAIN` — Deaktiviert die DNSSEC-Prüfung (CD-Flag). Liefert auch bei fehlgeschlagener Validierung eine Antwort.

```bash
dig +cd example.com
```

`dig +sigchase DOMAIN` — Verfolgt die DNSSEC-Signaturkette (sofern von deiner dig-Version unterstützt).

```bash
dig +sigchase example.com
```

## Netzwerkoptionen

`dig +tcp DOMAIN` — Verwendet TCP statt UDP für die Abfrage.

```bash
dig +tcp example.com
```

`dig +notcp DOMAIN` — Erzwingt UDP (Standard).

```bash
dig +notcp example.com
```

`dig -4 DOMAIN` — Erzwingt ausschließlich IPv4-Transport.

```bash
dig -4 example.com
```

`dig -6 DOMAIN` — Erzwingt ausschließlich IPv6-Transport.

```bash
dig -6 example.com
```

`dig -p PORT @SERVER DOMAIN` — Verwendet einen nicht standardmäßigen DNS-Port.

```bash
dig -p 5353 @127.0.0.1 example.com
```

`dig +time=SECONDS DOMAIN` — Setzt den Abfrage-Timeout in Sekunden (Standard: 5).

```bash
dig +time=10 example.com
```

`dig +retry=N DOMAIN` — Legt die Anzahl der Wiederholungsversuche fest (Standard: 2).

```bash
dig +retry=5 example.com
```

`dig +bufsize=N DOMAIN` — Setzt die EDNS-UDP-Puffergröße (für große Antworten).

```bash
dig +bufsize=4096 example.com
```

## Batch- und Mehrfachabfragen

`dig DOMAIN1 DOMAIN2 DOMAIN3` — Fragt mehrere Domains in einem einzigen Aufruf ab.

```bash
dig google.com github.com example.com
```

`dig -f FILE` — Liest Domains aus einer Datei (eine pro Zeile) und fragt jede ab.

```bash
dig -f domains.txt
```

`dig +short DOMAIN A DOMAIN AAAA DOMAIN MX` — Fragt mehrere Eintragstypen für eine Domain ab.

```bash
dig +short example.com A example.com AAAA example.com MX
```

## Zonentransfer

`dig @NS DOMAIN AXFR` — Fordert einen vollständigen Zonentransfer an (erfordert Autorisierung).

```bash
dig @ns1.example.com example.com AXFR
```

`dig @NS DOMAIN IXFR=SERIAL` — Fordert einen inkrementellen Zonentransfer ab einer bestimmten Seriennummer an.

```bash
dig @ns1.example.com example.com IXFR=2024010101
```

## Typische Einsatzmuster

`dig +short DOMAIN NS | while read ns; do echo "$ns:"; dig +short @$ns DOMAIN; done` — Prüft, ob alle Nameserver dieselbe Antwort liefern.

```bash
dig +short example.com NS | while read ns; do echo "$ns:"; dig +short @$ns example.com; done
```

`dig +short DOMAIN TXT | grep 'v=spf'` — Prüft den SPF-Eintrag einer Domain.

```bash
dig +short example.com TXT | grep 'v=spf'
```

`dig +short _dmarc.DOMAIN TXT` — Prüft die DMARC-Richtlinie einer Domain.

```bash
dig +short _dmarc.example.com TXT
```

`dig +short SELECTOR._domainkey.DOMAIN TXT` — Prüft einen DKIM-Eintrag.

```bash
dig +short google._domainkey.example.com TXT
```

`dig +noall +answer +ttlid DOMAIN` — Prüft die verbleibende TTL eines gecachten Eintrags.

```bash
dig +noall +answer example.com
```

`dig @ns1.DOMAIN DOMAIN SOA +short` — Liest die Zonen-Seriennummer direkt vom autoritativen Server.

```bash
dig @ns1.example.com example.com SOA +short
```

<!-- PROSE:outro -->
## Fazit

`dig` ist unverzichtbar für jeden, der DNS-Probleme schnell diagnostizieren oder Konfigurationen verifizieren muss. Kombiniert mit `+short` für Skripte und `+trace` für die vollständige Delegationskette deckt das Tool praktisch jeden DNS-Diagnosefall ab – ohne grafische Oberfläche, ohne unnötige Abhängigkeiten.

## Weiterführende Links

- [dig – BIND 9 Dokumentation](https://bind9.readthedocs.io/en/latest/manpages.html#dig-dns-lookup-utility) – offizielle Referenz (englisch)
- [dig(1) – Manpage](https://linux.die.net/man/1/dig) – alle Optionen im Überblick (englisch)
- [Domain Name System – Wikipedia](https://de.wikipedia.org/wiki/Domain_Name_System) – Hintergrund und Funktionsweise
<!-- PROSE:outro:end -->

## Verwandte Kommandos

- [nslookup](https://www.jpkc.com/db/cheatsheets/networking/nslookup/) – einfache DNS-Abfragen, interaktiv oder als Einzeiler
- [host](https://www.jpkc.com/db/cheatsheets/networking/host/) – kompaktes DNS-Lookup-Tool für schnelle Antworten
- [ping](https://www.jpkc.com/db/cheatsheets/networking/ping/) – Erreichbarkeit prüfen, nachdem DNS aufgelöst ist

