DNS Knowledge Base – Statische Netze, ARP, Zonen, TTL

Quellen

  • RFC 9499 – DNS Terminology (März 2024, aktuell)
  • RFC 1034/1035 – DNS Original Spezifikation (1987)
  • RFC 2308 – Negative Caching
  • RFC 1918 – Private Address Space

Teil 1: Bevor DNS – Das Netz selbst verstehen

Warum das wichtig ist

DNS löst Namen in IP-Adressen auf. Aber bevor ein Paket von A nach B kommt,
muss das Netz selbst funktionieren. Kein ARP → kein Layer 2 → kein DNS.
Dieser Teil erklärt die Schicht unter DNS.


1.1 IP-Adressen: Die Klassen-Ära (historisch aber lebendig)

Vor CIDR (Classless Inter-Domain Routing) gab es feste Klassen.
Sie sind heute noch überall – in altem Code, alten Geräten, FreeBSD-Configs.

Klasse A: 1.0.0.0   – 126.255.255.255  /8   16.777.214 Hosts
Klasse B: 128.0.0.0 – 191.255.255.255  /16  65.534 Hosts
Klasse C: 192.0.0.0 – 223.255.255.255  /24  254 Hosts
Klasse D: 224.0.0.0 – 239.255.255.255  Multicast (kein Unicast)
Klasse E: 240.0.0.0 – 255.255.255.255  Reserviert (experimentell)

Sonderfall: 127.x.x.x → Loopback (nie im Netz sichtbar)

Warum Klasse A endet bei 126:

127.x.x.x ist Loopback → 127.0.0.1 = "ich selbst"
0.x.x.x   ist Netzadresse → reserviert
→ Klasse A: nur 1–126 nutzbar

RFC 1918 – Private Adressräume (kein Internet-Routing)

10.0.0.0     – 10.255.255.255    /8   (ein komplettes Klasse-A-Netz)
172.16.0.0   – 172.31.255.255    /12  (16 Klasse-B-Netze)
192.168.0.0  – 192.168.255.255   /16  (256 Klasse-C-Netze)

Diese Adressen werden im Internet nie geroutet.
→ Ideal für RZ-interne Infrastruktur.


1.2 Subnetting und Netmask – kein DHCP, alles statisch

Die Netmask definiert welcher Teil einer IP-Adresse Netz ist
und welcher Host.

IP:      192.168.10.42
Maske:   255.255.255.0   (/24)
         ─────────────
Netz:    192.168.10.0    → Netzadresse (nicht vergebar!)
Host:    .42             → dieser Rechner
Bcast:   192.168.10.255  → Broadcast (nicht vergebar!)
Nutzbar: 192.168.10.1 – 192.168.10.254 → 254 Hosts

CIDR-Notation

/8   = 255.0.0.0         → 16.777.214 Hosts (Klasse A)
/16  = 255.255.0.0       → 65.534 Hosts     (Klasse B)
/19  = 255.255.224.0     → 8.190 Hosts      (dein RZ!)
/24  = 255.255.255.0     → 254 Hosts        (Klasse C)
/25  = 255.255.255.128   → 126 Hosts
/26  = 255.255.255.192   → 62 Hosts
/27  = 255.255.255.224   → 30 Hosts
/28  = 255.255.255.240   → 14 Hosts
/30  = 255.255.255.252   → 2 Hosts (Point-to-Point Links)
/32  = 255.255.255.255   → 1 Host (Loopback, Virtual IP)

/19 auseinandergenommen (dein RZ-Netz)

Netz:    10.0.0.0/19
Maske:   255.255.224.0
Bereich: 10.0.0.1 – 10.0.31.254
Bcast:   10.0.31.255
Hosts:   8.190

Typische Aufteilung im RZ:
10.0.0.0/24   → Management / IPMI
10.0.1.0/24   → Produktiv Server
10.0.2.0/24   → Backup / Storage
10.0.10.0/24  → DMZ
10.0.20.0/24  → Monitoring

1.3 ARP – Address Resolution Protocol

ARP ist die Brücke zwischen Layer 3 (IP) und Layer 2 (MAC).

DNS sagt: "www.example.com ist 10.0.1.50"
ARP sagt: "10.0.1.50 hat die MAC-Adresse aa:bb:cc:dd:ee:ff"

Ohne ARP kein Ethernet-Frame. Ohne Frame kein Paket.
ARP ist das stille Grundrauschen jedes Netzes.

ARP-Ablauf (vereinfacht)

Server A (10.0.1.10) will zu Server B (10.0.1.20):

1. A prüft: Ist B im gleichen Subnetz?
   10.0.1.10 /24 → Netz 10.0.1.0 → 10.0.1.20 ist drin → ja!

2. A schickt ARP Request (Broadcast):
   "Wer hat 10.0.1.20? Sag es 10.0.1.10"
   → Ziel-MAC: ff:ff:ff:ff:ff:ff (alle im Segment)

3. B antwortet (Unicast):
   "10.0.1.20 bin ich: aa:bb:cc:dd:ee:ff"

4. A speichert das im ARP-Cache
   Pakete fließen jetzt direkt.

ARP-Cache anzeigen und pflegen

# ARP-Cache anzeigen
arp -n                           # Linux
arp -an                          # macOS / FreeBSD
ip neigh show                    # Linux modern

# Statischen ARP-Eintrag setzen (statisches Netz!)
arp -s 10.0.1.20 aa:bb:cc:dd:ee:ff

# ARP-Cache leeren
ip neigh flush all               # Linux
arp -d 10.0.1.20                 # einzelnen Eintrag löschen

# ARP-Requests live beobachten
tcpdump -n -i eth0 arp

ARP im RZ: Segmentierte vs. unsegmentierte Netze

UNSEGMENTIERTES NETZ (flaches Layer 2):
─────────────────────────────────────
Alle Server im gleichen Broadcast-Domain.
z.B. 10.0.0.0/16 ohne VLANs

Problem:
→ Jeder ARP-Broadcast geht an ALLE 65.534 möglichen Hosts
→ Bei 200 Servern: ARP-Gewitter bei vielen Neuverbindungen
→ ARP-Spoofing einfach möglich
→ Ein Fehler kann das gesamte Netz lahmlegen

SEGMENTIERTES NETZ (VLANs / Subnets):
──────────────────────────────────────
Jedes Subnetz = eigene Broadcast-Domain.
z.B. /24 pro Funktionsbereich

Vorteil:
→ ARP-Broadcasts bleiben im Segment
→ Routing zwischen Segmenten → kontrollierbar
→ Firewall-Regeln zwischen Segmenten möglich
→ Ausfall eines Segments isoliert

ARP-Probleme im RZ-Alltag

# Problem: Duplicate IP – zwei Hosts, gleiche IP
# Symptom: Verbindungsabbrüche, flapping ARP
# Diagnose:
arping -I eth0 10.0.1.50   # Wer antwortet auf diese IP?
# Wenn zwei MACs antworten → Duplicate IP gefunden

# Problem: Stale ARP – alter Eintrag nach IP-Umzug
# Symptom: Verbindung zu neuem Host schlägt fehl
# Lösung:
ip neigh flush dev eth0

# ARP-Cache Timeout prüfen (Linux)
cat /proc/sys/net/ipv4/neigh/default/gc_stale_time
# Standard: 60 Sekunden

Teil 2: DNS – Grundkonzepte (RFC 9499 konform)

Was DNS ist

DNS (Domain Name System) ist ein verteiltes, hierarchisches
Namensauflösungssystem. Es übersetzt menschenlesbare Namen
(www.example.com) in maschinenlesbare Adressen (93.184.216.34).

Anfrage:   "Was ist die IP von www.example.com?"
DNS:       "93.184.216.34"
Protokoll: UDP Port 53 (Standard) / TCP Port 53 (Transfers, große Antworten)

Die DNS-Hierarchie

.                          ← Root (der unsichtbare Punkt am Ende)
├── com.
│   ├── example.com.
│   │   ├── www.example.com.
│   │   └── mail.example.com.
│   └── google.com.
├── de.
│   └── heise.de.
└── net.
    └── iana.net.

Jede Ebene hat eigene Nameserver.
Jede Delegation ist ein Schnitt in der Hierarchie.

DNS-Komponenten (RFC 9499 Terminologie)

Begriff RFC 9499 Definition Praxis
Resolver Fragt andere DNS-Server /etc/resolv.conf
Recursive Resolver Löst vollständig auf, cached Dein DNS-Server
Authoritative Server Kennt die Zone, gibt definitive Antwort BIND named
Stub Resolver Fragt nur weiter, löst nicht selbst auf glibc im OS
Forwarder Leitet Anfragen an anderen Server weiter Split-DNS
Zone Verwaltungseinheit im DNS example.com Zone
FQDN Fully Qualified Domain Name www.example.com. (mit Punkt!)

2.1 Resource Records – Die Bausteine

Jeder DNS-Eintrag ist ein Resource Record (RR) mit diesem Format:

NAME        TTL    CLASS  TYPE   RDATA
www         3600   IN     A      93.184.216.34
mail        3600   IN     MX     10 smtp.example.com.
example.com 86400  IN     SOA    ns1.example.com. admin.example.com. ...

Die wichtigsten Record-Typen

A      → IPv4-Adresse          www     IN A     93.184.216.34
AAAA   → IPv6-Adresse          www     IN AAAA  2606:2800:220:1:...
CNAME  → Alias (Canonical Name) ftp    IN CNAME www.example.com.
MX     → Mail Exchange          @      IN MX    10 mail.example.com.
NS     → Nameserver             @      IN NS    ns1.example.com.
PTR    → Reverse DNS            50.1.0.10.in-addr.arpa. IN PTR server01.example.com.
SOA    → Start of Authority     @      IN SOA   ns1 admin 2026032601 ...
TXT    → Text (SPF, DKIM, etc.) @      IN TXT   "v=spf1 mx -all"
SRV    → Service Locator        _sip._tcp IN SRV 10 5 5060 sip.example.com.
CAA    → Certificate Authority  @      IN CAA   0 issue "letsencrypt.org"

SOA Record – das Herz jeder Zone

example.com.  86400  IN  SOA  ns1.example.com.  hostmaster.example.com. (
    2026032601  ; Serial    → YYYYMMDDNN Format, bei jeder Änderung erhöhen!
    3600        ; Refresh   → Slave fragt Master alle 3600s (1h)
    900         ; Retry     → Bei Fehler: retry nach 900s (15min)
    604800      ; Expire    → Slave verwirft Zone nach 604800s (7 Tage) ohne Master
    300         ; Minimum   → Negative TTL (NXDOMAIN wird 300s gecacht)
)

2.2 TTL – Time To Live

TTL ist keine Netzwerk-TTL (IP-Hop-Count). DNS-TTL ist Zeit in Sekunden.

TTL = wie lange darf ein Resolver diesen Eintrag cachen?

Hohe TTL (86400 = 1 Tag):
→ Gut: weniger DNS-Traffic, schnellere Auflösung
→ Schlecht: Änderungen brauchen 24h bis sie überall ankommen

Niedrige TTL (60 = 1 Minute):
→ Gut: Änderungen propagieren schnell
→ Schlecht: mehr DNS-Traffic, Lastspitzen

RZ-Empfehlungen:
→ Stabile Server:     86400   (1 Tag)
→ Lastverteilung:     300     (5 Minuten)
→ Vor Migrationen:    300     (erst reduzieren, dann umziehen, dann wieder erhöhen!)
→ Negative TTL (SOA): 300–900 (NXDOMAIN nicht zu lang cachen)

TTL-Praxis: Migration ohne Downtime

Tag -2:  TTL auf 300 senken
         → warten bis alte TTL überall abläuft
         → (max. alter TTL-Wert in Sekunden warten!)

Tag 0:   IP ändern
         → alle Caches laufen in max. 300s ab
         → neuer Server bekommt Traffic

Tag +1:  TTL wieder auf 86400 erhöhen

2.3 Zonen und Zonentransfer

Was eine Zone ist

Eine Zone ist der Verwaltungsbereich eines Authoritative Servers.
Sie enthält alle RRs für eine Domäne.

Zonefile: /etc/bind/zones/example.com
Inhalt:
$ORIGIN example.com.
$TTL 86400

@       IN  SOA  ns1.example.com. hostmaster.example.com. (
                 2026032601 3600 900 604800 300 )

@       IN  NS   ns1.example.com.
@       IN  NS   ns2.example.com.

ns1     IN  A    10.0.0.53
ns2     IN  A    10.0.0.54
@       IN  A    10.0.1.10
www     IN  A    10.0.1.10
mail    IN  A    10.0.1.20
@       IN  MX   10 mail.example.com.

Zonentransfer: Master → Slave (AXFR/IXFR)

AXFR (Full Zone Transfer):
→ Komplette Zone wird übertragen
→ Auslöser: Slave fragt nach Refresh-Intervall (SOA)
→ Serial im SOA gestiegen → Transfer startet
→ Serial gleich → kein Transfer

IXFR (Incremental Zone Transfer):
→ Nur Änderungen seit letztem Transfer
→ Effizienter bei großen Zonen
→ Nicht alle BIND-Versionen unterstützen es vollständig
# Manueller Zonentransfer testen
dig AXFR example.com @ns1.example.com

# Häufiges Problem aus den Logs:
# "retry limit for master 10.0.0.53 exceeded"
# → Master nicht erreichbar → Port 53 TCP prüfen!
# (Zonentransfer läuft über TCP, nicht UDP!)

# Zonentransfer-Log prüfen
journalctl -u named | grep -i transfer
journalctl -u named | grep -i "zone.*transfer"

Zonentransfer absichern (TSIG)

# TSIG Key generieren
tsig-keygen -a hmac-sha256 transfer-key

# In named.conf:
key "transfer-key" {
    algorithm hmac-sha256;
    secret "BASE64SECRET==";
};

zone "example.com" {
    type master;
    allow-transfer { key "transfer-key"; };
};

Teil 3: BIND/named – Konfiguration

named.conf Grundstruktur

/etc/bind/named.conf                ← Hauptkonfiguration (Debian/Ubuntu)
/etc/named.conf                     ← RHEL/Rocky/Fedora
/etc/named.conf                     ← Arch
/usr/local/etc/namedb/named.conf    ← FreeBSD!
# named.conf Aufbau:
options {
    listen-on     { 10.0.0.53; 127.0.0.1; };
    listen-on-v6  { none; };
    directory     "/var/cache/bind";        # Debian
    # directory   "/var/named";             # RHEL
    recursion     yes;
    allow-recursion { 10.0.0.0/19; localhost; };
    allow-query   { any; };
    forwarders    { 9.9.9.9; 149.112.112.112; };  # Quad9
    forward       only;                            # oder: first
};

# Eigene Zone (autoritativ):
zone "example.com" {
    type master;
    file "/etc/bind/zones/example.com";    # Debian
    # file "/var/named/example.com.zone";  # RHEL
    allow-transfer { 10.0.0.54; };         # Slave-IP
    notify yes;
};

# Slave-Zone:
zone "example.com" {
    type slave;
    masters { 10.0.0.53; };
    file "/var/cache/bind/example.com.slave";
};

# Reverse-Zone:
zone "0.0.10.in-addr.arpa" {
    type master;
    file "/etc/bind/zones/10.0.0.rev";
};

3.1 Split-DNS (RFC 9499: Private DNS)

Split-DNS liefert intern andere Antworten als extern.

Extern: www.example.com → 93.184.216.34 (öffentliche IP)
Intern: www.example.com → 10.0.1.10     (interne IP)

Warum?
→ Interne Server sollen intern direkt kommunizieren
→ Kein Hairpin-NAT am Router nötig
→ Interne Dienste nicht nach außen exponiert
# named.conf mit views:
view "internal" {
    match-clients { 10.0.0.0/19; localhost; };
    recursion yes;

    zone "example.com" {
        type master;
        file "/etc/bind/zones/example.com.internal";
    };
};

view "external" {
    match-clients { any; };
    recursion no;

    zone "example.com" {
        type master;
        file "/etc/bind/zones/example.com.external";
    };
};

3.2 Reverse DNS (PTR Records)

PTR-Records sind das Gegenstück zu A-Records.

A-Record:   server01.example.com. → 10.0.1.50
PTR-Record: 10.0.1.50 → server01.example.com.

Die Reverse-Zone für 10.0.1.0/24:
Zonename: "1.0.10.in-addr.arpa"
          ↑ IP-Oktette umgekehrt!

Für 10.0.0.0/19 (mehrere /24):
→ Mehrere Reverse-Zonen nötig:
  "0.0.10.in-addr.arpa"   (für 10.0.0.x)
  "1.0.10.in-addr.arpa"   (für 10.0.1.x)
  usw.
# Reverse-Zonefile:
$ORIGIN 1.0.10.in-addr.arpa.
$TTL 86400

@   IN  SOA  ns1.example.com. hostmaster.example.com. (
             2026032601 3600 900 604800 300 )

@   IN  NS   ns1.example.com.
@   IN  NS   ns2.example.com.

50  IN  PTR  server01.example.com.
51  IN  PTR  server02.example.com.
53  IN  PTR  ns1.example.com.
54  IN  PTR  ns2.example.com.

3.3 Distro-Unterschiede: named/BIND

Debian / Ubuntu

# Paket
apt install bind9 bind9utils bind9-doc

# Konfigurationspfade
/etc/bind/named.conf               # Hauptconfig
/etc/bind/named.conf.options       # Options-Block
/etc/bind/named.conf.local         # eigene Zonen
/etc/bind/zones/                   # Zonefiles

# Service
systemctl restart named
systemctl status named

# AppArmor! (Ubuntu Besonderheit)
# named läuft im AppArmor-Profil
# Zonefile außerhalb /etc/bind/ → AppArmor verweigert Zugriff!
aa-status | grep named

# named-checkconf / named-checkzone
named-checkconf
named-checkzone example.com /etc/bind/zones/example.com

# Zone neu laden ohne Restart
rndc reload example.com
rndc reload                        # alle Zonen

RHEL / Rocky / AlmaLinux

# Paket
dnf install bind bind-utils

# Konfigurationspfade
/etc/named.conf                    # Hauptconfig
/var/named/                        # Zonefiles!
/var/named/example.com.zone

# Service
systemctl restart named

# SELinux! (RHEL Besonderheit)
# named darf nur in /var/named schreiben
# Zonefile woanders → SELinux verweigert
ls -Z /var/named/                  # SELinux-Kontext prüfen
restorecon -v /var/named/*.zone    # Kontext reparieren

# named-checkconf / named-checkzone
named-checkconf /etc/named.conf
named-checkzone example.com /var/named/example.com.zone

FreeBSD

# BIND im Basissystem (je nach Version)
# oder via Ports
pkg install bind918

# Konfigurationspfade – KOMPLETT ANDERS!
/usr/local/etc/namedb/named.conf   # Hauptconfig
/usr/local/etc/namedb/master/      # Zonefiles
/usr/local/etc/namedb/slave/       # Slave-Zonen

# /etc/rc.conf Eintrag nötig:
named_enable="YES"

# Service
service named start
service named restart

# rndc funktioniert gleich wie auf Linux
rndc reload
rndc status

Vergleichsmatrix

Aspekt Debian/Ubuntu RHEL/Rocky FreeBSD
Paket bind9 bind bind918 (Port)
Hauptconfig /etc/bind/named.conf /etc/named.conf /usr/local/etc/namedb/named.conf
Zonefiles /etc/bind/zones/ /var/named/ /usr/local/etc/namedb/master/
Sicherheits-Framework AppArmor SELinux keins (Jail optional)
Aktivierung systemctl enable named systemctl enable named named_enable="YES" in rc.conf

Teil 4: DNS-Diagnose – Das tägliche Handwerk

dig – der wichtigste DNS-Werkzeug

# Einfache Abfrage
dig www.example.com

# Nur die Antwort (kein Header-Rauschen)
dig +short www.example.com

# Bestimmten Record-Typ
dig MX example.com
dig NS example.com
dig SOA example.com
dig AAAA www.example.com

# Bestimmten Server befragen
dig @10.0.0.53 www.example.com

# Reverse-DNS
dig -x 10.0.1.50
dig PTR 50.1.0.10.in-addr.arpa

# Zonentransfer testen
dig AXFR example.com @10.0.0.53

# TTL im Cache prüfen (externer Server)
dig @8.8.8.8 www.example.com
# → TTL in der Antwort zeigt verbleibende Cache-Zeit!

# Trace vom Root bis zur Antwort
dig +trace www.example.com

# DNSSEC prüfen
dig +dnssec example.com

nslookup und host (für alte FreeBSD-Admins 😄)

# nslookup (interaktiv oder direkt)
nslookup www.example.com
nslookup www.example.com 10.0.0.53  # bestimmter Server

# host
host www.example.com
host -t MX example.com
host 10.0.1.50                      # Reverse-DNS

rndc – BIND-Steuerung

# Status
rndc status

# Zone neu laden (nach Änderung)
rndc reload example.com

# Cache leeren (bei Debugging!)
rndc flush
rndc flushname www.example.com

# Zone aus dem Speicher dumpen
rndc dumpdb -cache

# Statistiken
rndc stats
cat /var/cache/bind/named_stats.txt  # Debian

Häufige Fehler und Diagnose

# Fehler: SERVFAIL
# → named läuft aber antwortet nicht korrekt
# → SELinux/AppArmor blockiert Zonefile
# → Zonefile-Syntax-Fehler
named-checkzone example.com /etc/bind/zones/example.com
journalctl -u named -n 50

# Fehler: NXDOMAIN
# → Name existiert nicht (oder falsche Zone geladen)
# → Serial nicht erhöht → Slave hat alte Zone
dig SOA example.com @ns1.example.com  # Serial prüfen
dig SOA example.com @ns2.example.com  # Slave-Serial vergleichen

# Fehler: Zonentransfer schlägt fehl
# "retry limit for master exceeded"
# → TCP Port 53 blockiert!
telnet 10.0.0.53 53                   # TCP-Verbindung testen
iptables -L | grep 53                 # Firewall prüfen
netstat -tlnp | grep named            # named lauscht?

# Fehler: named startet nicht (RHEL)
# → SELinux Kontext falsch
ausearch -m AVC -ts recent            # SELinux-Denials
restorecon -Rv /var/named/

# Fehler: named startet nicht (Ubuntu)
# → AppArmor blockiert
dmesg | grep apparmor
journalctl -u apparmor | grep named

Teil 5: DNS im RZ-Kontext

Statisches DNS-Setup für ein RZ (/19 Netz)

Infrastruktur:
10.0.0.53  ns1.example.com  ← Primary Nameserver (Master)
10.0.0.54  ns2.example.com  ← Secondary Nameserver (Slave)

Alle Server bekommen:
/etc/resolv.conf:
  nameserver 10.0.0.53
  nameserver 10.0.0.54
  search example.com
  domain example.com
# Debian/Ubuntu: /etc/resolv.conf wird von systemd-resolved verwaltet!
# Für statisches RZ-Setup:

# Option A: systemd-resolved deaktivieren
systemctl disable systemd-resolved
systemctl stop systemd-resolved
rm /etc/resolv.conf
echo "nameserver 10.0.0.53" > /etc/resolv.conf
echo "nameserver 10.0.0.54" >> /etc/resolv.conf
echo "search example.com" >> /etc/resolv.conf
chattr +i /etc/resolv.conf            # Immutable! Verhindert Überschreiben

# Option B: systemd-resolved konfigurieren
# /etc/systemd/resolved.conf:
[Resolve]
DNS=10.0.0.53 10.0.0.54
Domains=example.com

/etc/hosts – der Urahn vor DNS

# Vor DNS: Jeder Rechner hatte eine /etc/hosts
# Heute: Notfall-Fallback, lokale Overrides

# /etc/hosts wird VOR DNS aufgelöst (nsswitch.conf: files dns)
# Nützlich für:
# → Bootstrap: wenn DNS selbst noch nicht läuft
# → Notfall: wenn DNS ausgefallen ist
# → Overrides: interne Test-URLs

cat /etc/hosts
# 127.0.0.1   localhost
# 10.0.0.53   ns1.example.com ns1
# 10.0.0.54   ns2.example.com ns2

# nsswitch.conf bestimmt Suchreihenfolge
grep hosts /etc/nsswitch.conf
# hosts: files dns    ← zuerst /etc/hosts, dann DNS
# hosts: dns files    ← zuerst DNS, dann /etc/hosts (ungewöhnlich)

Teil 6: DNS-Begriffe nach RFC 9499 (Schnellreferenz)

RFC 9499 Begriff Bedeutung im Alltag
Authoritative Server Weiß die Wahrheit über eine Zone
Recursive Resolver Fragt rum bis er die Antwort hat, cached
Stub Resolver Das OS-Tool (glibc), fragt nur weiter
Forwarder Leitet Anfragen weiter (Split-DNS)
Zone Verwaltungseinheit, eine Datei auf dem Server
Delegation NS-Record der auf anderen Server zeigt
NXDOMAIN Name existiert nicht (negatives Ergebnis)
NOERROR Anfrage erfolgreich (auch wenn keine Records)
SERVFAIL Server-Fehler – konfigurationsproblem!
TTL Wie lange darf gecacht werden (Sekunden)
Serial Versionsnummer der Zone (muss steigen!)
AXFR Vollständiger Zonentransfer
IXFR Inkrementeller Zonentransfer
FQDN Vollständiger Name mit Punkt am Ende: host.example.com.
Glue Record A-Record für NS-Server der in der eigenen Zone liegt
Negative Caching NXDOMAIN-Antworten werden auch gecacht (RFC 2308)

Wichtige Dateipfade – Alle Systeme

Datei Debian/Ubuntu RHEL/Rocky FreeBSD
Hauptconfig /etc/bind/named.conf /etc/named.conf /usr/local/etc/namedb/named.conf
Zonefiles /etc/bind/zones/ /var/named/ /usr/local/etc/namedb/master/
resolv.conf /etc/resolv.conf /etc/resolv.conf /etc/resolv.conf
hosts /etc/hosts /etc/hosts /etc/hosts
nsswitch /etc/nsswitch.conf /etc/nsswitch.conf /etc/nsswitch.conf
rndc-Key /etc/bind/rndc.key /etc/rndc.key /usr/local/etc/namedb/rndc.key
Log journalctl -u named journalctl -u named /var/log/messages

Quellen

  • RFC 9499 – DNS Terminology (März 2024): https://www.rfc-editor.org/rfc/rfc9499
  • RFC 1034 – Domain Concepts and Facilities
  • RFC 1035 – Domain Implementation and Specification
  • RFC 1918 – Private Address Space
  • RFC 2308 – Negative Caching of DNS Queries
  • man named, man named.conf, man dig, man rndc
  • Arch Wiki: https://wiki.archlinux.org/title/BIND
  • Debian BIND9 Docs: https://bind9.readthedocs.io/