Die ursprüngliche Spezifikation von DNS-Nachrichten (RFC 1035), welche über UDP gesendet werden, ist auf 512 Bytes begrenzt. Bereits Ende der Neunzigerjahre wurde mit dem “Extension Mechanisms for DNS (EDNS0)” (RFC 2671) eine Erweiterung für das DNS-Protokoll festgelegt, welche es u.a. dem Client erlaubt eine grössere Buffergrösse bekannt zu geben.
Die meisten DNS Resolver-Implementierungen kündigen eine Buffergrösse von 4096 Bytes an. Das heisst aber auch, dass bei einer maximalen Paketgrösse (Maximum Transmission Unit, MTU) von 1500 Bytes eine Fragmentierung der Datenpakete stattfindet. Die Vergangenheit hat gezeigt, dass viele Netzwerk- und Sicherheitsprodukte diese Protokolländerung noch nicht mitgekriegt haben und auf eine kleinere Paketgrösse bestehen. Für DNSSEC ist die EDNS0-Erweiterung eine Voraussetzung, da durch die Signierung der Daten die Paketgrösse ansteigt.
Die Unterstützung einer grossen Buffergrösse von Ihrem DNS-Resolver zur Aussenwelt ist aber auch relevant, wenn Sie keine DNSSEC-Validierung auf dem DNS-Resolver aktiviert haben. Aktuelle DNS-Resolver kennzeichnen die Unterstützung von DNSSEC (durch das DO-bit, Bezeichnung “DNSSEC OK”-bit, RFC 3225) und erhalten deshalb in der Antwort die DNSSEC-Signaturen, auch wenn der DNS-Resolver die Validierung nicht aktiviert hat.
Ihr DNS-Resolver wird also zum Beispiel beim Besuch der Webseite switch.ch eine DNS-Nachricht von 1211 Bytes erhalten:
dig switch.ch +dnssec
...
;; MSG SIZE rcvd: 1211
1211 Bytes sind gerade noch unter der Grenze bevor das Paket fragmentiert würde. Anders sieht es aus, wenn Sie die Webseite tube.switch.ch besuchen. Dort sind die eingebetteten Videos hinter DNS-Namen wie switch-video-production.radosgw.bcc.switch.ch
hinterlegt. Die DNS-Antwort ist bereits 1685 Bytes gross und muss deshalb fragmentiert werden:
dig switch-video-production.radosgw.bcc.switch.ch +dnssec
...
;; MSG SIZE rcvd: 1685
Es kann auch sein, dass Ihr DNS-Resolver auf TCP wechselt um die Antwort zu erhalten, wenn er die fragmentierte DNS-Antwort nicht erhält. Dies ist jedoch mit Verzögerungszeiten verbunden und sollte daher nicht die Lösung sein.
Es empfiehlt sich, Ihren verwendeten DNS-Resolver auf die maximal unterstützte Buffergrösse zu überprüfen. Die Domain Name System Operations Analysis and Research Center (DNS-OARC) Gruppe hat diesbezüglich einen DNS Reply Size Test erstellt, welcher einfach mittels dig
durchgeführt werden kann:
dig +short rs.dns-oarc.net txt
;; Truncated, retrying in TCP mode.
rst.x3827.rs.dns-oarc.net.
rst.x3837.x3827.rs.dns-oarc.net.
rst.x3843.x3837.x3827.rs.dns-oarc.net.
"130.59.XX.YY DNS reply size limit is at least 3843 bytes"
"130.59.XX.YY sent EDNS buffer size 4096"
Falls bei Ihnen das Resultat unter 3800 Bytes liegt, empfehle ich dem Problem nach zu gehen. Auf der Webseite des DNS Reply Size Tests gibt es eine Auflistung von möglichen Ursachen.
Die Anzahl der DNSSEC-signierten Domainnamen unter .CH steigt kontinuierlich. Falls bei Ihnen DNS-Verbindungsprobleme bestehen, werden sich diese mit der Zunahme der Anzahl signierten Domainnamen öfters zeigen. Im Februar 2013 hatten wir noch 770 (0.05%) signierte Domainnamen unter .CH, am 14. Mai 2014 waren es bereits 4567 (0.3%).