DNS über TCP oder UDP
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.