DNS über TCP oder UDP

Aus Xinux Wiki
Version vom 25. September 2026, 07:46 Uhr von Thomas.will (Diskussion | Beiträge) (Die Seite wurde neu angelegt: „=DNS über UDP und TCP= ==Grundsatz== DNS nutzt UDP '''und''' TCP auf Port 53. TCP/53 muss in der Firewall immer freigegeben sein - nicht nur bei DNSSEC. ==W…“)
(Unterschied) ← Nächstältere Version | Aktuelle Version (Unterschied) | Nächstjüngere Version → (Unterschied)
Zur Navigation springen Zur Suche springen

DNS über UDP und TCP

Grundsatz

DNS nutzt UDP und TCP auf Port 53. TCP/53 muss in der Firewall immer freigegeben sein - nicht nur bei DNSSEC.

Warum

  • UDP-Antworten sind begrenzt, seit dem DNS Flag Day 2020 auf empfohlene 1232 Byte
  • Ist eine Antwort größer, setzt der Server das TC-Bit (truncated) und der Client wiederholt die Anfrage über TCP
  • Große Antworten gibt es auch ohne DNSSEC, z.B. lange TXT-Records (SPF, DKIM) oder viele A-Records
  • DNSSEC läuft grundsätzlich über UDP, macht die Antworten aber größer (Signaturen, Schlüssel) und damit TCP häufiger
  • RFC 7766 und RFC 9210 schreiben TCP-Unterstützung und die Erreichbarkeit von TCP/53 vor

Wird nur UDP/53 freigegeben, scheint DNS zu funktionieren. Einzelne Namen liefern aber Timeouts oder SERVFAIL.

Zonentransfers

Zonentransfers werden im DNS-Server eingeschränkt, nicht durch Sperren von TCP/53.

BIND9
allow-transfer { 192.168.2XX.3; };

Firewallregel

nftables
ip daddr 192.168.2XX.2 meta l4proto { udp, tcp } th dport 53 accept

Test

TC-Bit sichtbar machen
  • dig +dnssec +bufsize=512 +ignore DNSKEY de.
Automatischer Wechsel auf TCP
  • dig +dnssec +bufsize=512 DNSKEY de.