Astăzi, o serie de mari servicii DNS și producători de servere DNS vor organiza un eveniment comun , destinat să concentreze atenția asupra cu fragmentarea IP în procesarea mesajelor DNS de mari dimensiuni. Aceasta este a doua astfel de manifestare, anul trecut a fost «ziua steagului DNS» pe procesarea corectă a cererilor EDNS.
Participanții la inițiativa ziua steagului DNS 2020 îndeamnă la stabilirea dimensiunilor recomandate ale bufferelor pentru EDNS la valori de 1232 de octeți (dimensiunea MTU 1280 minus 48 de octeți pentru antete), precum și procesarea cererilor prin TCP ca fiind o necesitate obligatorie pe servere. În se menționează obligatorie doar suportul pentru procesarea cererilor prin UDP, iar TCP este menționat ca fiind dorit, dar nu obligatoriu pentru funcționare. Noile și se referă explicit la TCP ca fiind o capacitate esențială necesară pentru funcționarea corectă a DNS. În cadrul inițiativei în desfășurare, se propune încurajarea tranziției de la trimiterea cererilor prin UDP la utilizarea TCP în cazurile când dimensiunea bufferului EDNS nu este suficientă.
Modificările propuse vor elimina confuzia legată de alegerea dimensiunii bufferului EDNS și vor rezolva problema fragmentării mesajelor UDP mari, a căror procesare duce adesea la pierderi de pachete și timeout-uri pe partea clientului. Pe partea clientului, dimensiunea bufferului EDNS va fi constantă, iar răspunsurile mari vor fi trimise imediat clientului prin TCP. Excluderea trimiterii mesajelor mari prin UDP va rezolva, de asemenea, problemele de respingere a pachetelor mari pe unele firewall-uri și va permite blocarea atacurilor de îmbunătățire a cache-ului DNS, bazate pe manipularea pachetelor UDP fragmentate (la fragmentare, al doilea fragment nu conține antetul cu identificatorul, astfel poate fi falsificat, având doar nevoie să se potrivească cu suma de control).
Începând de astăzi, furnizorii de DNS implicați în inițiativă, inclusiv CloudFlare, Quad 9, Cisco (OpenDNS) și Google, dimensiunea bufferului EDNS de la 4096 la 1232 de octeți pe serverele lor DNS (schimbarea EDNS va fi extinsă pe o perioadă de 4-6 săptămâni și în timp va acoperi un număr tot mai mare de cereri). Răspunsurile la cererile UDP care depășesc noua limită vor fi trimise prin TCP. Producătorii de servere DNS, inclusiv BIND, Unbound, Knot, NSD și PowerDNS, vor lansa actualizări cu modificarea dimensiunii bufferului EDNS pentru setarea implicită de la 4096 la 1232 de octeți.
În cele din urmă, modificările introduse pot duce la probleme de rezolvare atunci când se face referire la serverele DNS, răspunsurile DNS ale căror dimensiuni depășesc 1232 octeți prin UDP și care nu pot trimite răspunsuri prin TCP. Un experiment realizat de Google a arătat că schimbarea dimensiunii buffer-ului EDNS nu va afecta semnificativ nivelul erorilor — cu un buffer de 4096 octeți, numărul cererilor UDP trunchiate este de 0.345%, iar numărul răspunsurilor repetate inaccesibile prin TCP este de 0.115%. Cu un buffer de 1232 octeți, aceste valori sunt de 0.367% și 0.116%. Transformarea suportului TCP în caracteristici obligatorii pentru DNS va duce la probleme în interacțiunea cu aproximativ 0.1% dintre serverele DNS. Se observă că în condițiile actuale, fără TCP, funcționarea acestor servere este deja instabilă.
Administratorii serverelor DNS autoritative ar trebui să se asigure că serverul lor răspunde prin TCP pe portul de rețea 53 și că acest port TCP nu este blocat de un firewall. Serverul DNS autoritativ nu ar trebui să trimită răspunsuri UDP, al căror dimensiune depășește
dimensiunea buffer-ului EDNS solicitat. Pe serverul în sine, dimensiunea buffer-ului EDNS ar trebui să fie setată la 1232 octeți. Rezolvatorilor li se impun cerințe aproximativ similare — capacitatea obligatorie de răspuns prin TCP, suport obligatoriu pentru retrimiterea cererilor prin TCP în caz de răspuns UDP trunchiat și setarea buffer-ului EDNS la 1232 octeți.
Configurarea dimensiunii buffer-ului EDNS pe diferite servere DNS este responsabilă de următorii parametri:
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
Sursa: opennet.ro
