Heute werden eine Reihe großer DNS-Dienste und Hersteller von DNS-Servern eine gemeinsame Veranstaltung abhalten , um auf das Thema von IP-Fragmentierung bei der Verarbeitung großer DNS-Nachrichten aufmerksam zu machen. Dies ist die zweite Veranstaltung dieser Art; im vergangenen Jahr konzentrierte sich der "DNS Flag Day" Die Teilnehmer der Initiative DNS Flag Day 2020 fordern, die empfohlenen Puffergrößen für EDNS auf Werte von 1232 Byte (MTU-Größe 1280 minus 48 Byte für Header) festzulegen und
die RFC 1035 RFC 7766 und weisen eindeutig darauf hin, dass TCP zu den grundlegenden Funktionen gehört, die für den ordnungsgemäßen Betrieb von DNS erforderlich sind. Im Rahmen dieser Initiative wird vorgeschlagen, den Übergang von der Übermittlung von Anfragen über UDP auf die Verwendung von TCP zu forcieren, wenn der festgelegte EDNS-Puffer nicht ausreicht.
Die vorgeschlagenen Änderungen beseitigen die Verwirrung bei der Auswahl der EDNS-Puffergröße und lösen das Problem mit der Fragmentierung großer UDP-Nachrichten, die häufig zu Paketverlusten und Timeouts auf der Client-Seite führen. Auf der Client-Seite wird die EDNS-Puffergröße konstant sein, und große Antworten werden sofort über TCP an den Client gesendet. Das Verbot des Versands großer Nachrichten über UDP wird ebenfalls Probleme mit dem Verwerfen großer Pakete an bestimmten Firewalls lösen und verhindern, dass DNS-Cache-Vergiftungen auf der Grundlage der Manipulation fragmentierter UDP-Pakete auftreten (da beim Zerlegen in Fragmente das zweite Fragment keinen Header mit der Kennung enthält, kann es genug gefälscht werden, sodass nur die Prüfziffer übereinstimmt).
Ab heute werden teilnehmende DNS-Anbieter, darunter CloudFlare, Quad 9, Cisco (OpenDNS) und Google, Die EDNS-Puffereinstellung wird von 4096 auf 1232 Bytes auf unseren DNS-Servern geändert (die EDNS-Änderung wird sich über einen Zeitraum von 4-6 Wochen erstrecken und schrittweise immer mehr Anfragen abdecken). Antworten auf UDP-Anfragen, die nicht in das neue Limit passen, werden über TCP gesendet. DNS-Server-Hersteller, einschließlich BIND, Unbound, Knot, NSD und PowerDNS, werden Updates mit der Standardänderung der EDNS-Puffergröße von 4096 auf 1232 Bytes veröffentlichen.
Letztendlich können die implementierten Änderungen zu Problemen bei der Auflösung führen, wenn auf DNS-Server zugegriffen wird, deren UDP-Antworten 1232 Bytes überschreiten und die keine Antworten über TCP senden können. Ein Experiment von Google zeigte, dass die Anpassung der EDNS-Puffergröße nahezu keinen Einfluss auf die Ausfallraten hat – bei einem Puffer von 4096 Bytes lag die Anzahl der gekürzten UDP-Anfragen bei 0,345 %, während die Anzahl der unerreichbaren TCP-Wiederholungsantworten bei 0,115 % lag. Bei einem Puffer von 1232 Bytes sind diese Werte 0,367 % und 0,116 %. Die Umstellung auf obligatorische TCP-Unterstützung wird zu Problemen bei der Interaktion mit etwa 0,1 % der DNS-Server führen. Es wird erwähnt, dass unter den aktuellen Bedingungen der Betrieb dieser Server ohne TCP ohnehin instabile ist.
Administratoren autoritativer DNS-Server sollten sicherstellen, dass ihr Server über TCP auf Port 53 antwortet und dieser TCP-Port nicht von einer Firewall blockiert wird. Ein autoritativer DNS-Server sollte auch keine UDP-Antworten senden, die größer sind als
die angeforderte EDNS-Puffergröße. Die Puffergröße für EDNS sollte auf dem Server auf 1232 Byte eingestellt sein. Ähnliche Anforderungen gelten für Resolver — eine verpflichtende Möglichkeit zur TCP-Antwort, die verpflichtende Unterstützung für das Senden von TCP-Wiederholungsanfragen bei Erhalt einer gekürzten UDP-Antwort und die Einstellung des EDNS-Puffers auf 1232 Byte.
Die Konfiguration der EDNS-Puffergröße in verschiedenen DNS-Servern erfolgt über folgende Parameter:
options {
edns-udp-size 1232;
max-udp-size 1232;
};
max-udp-payload: 1232
net.bufsize(1232)
udp-truncation-threshold=1232
edns-outgoing-bufsize=1232
udp-truncation-threshold=1232
edns-buffer-size: 1232
ipv4-edns-size: 1232
ipv6-edns-size: 1232
Quelle: opennet.ru
