Inițiativa DNS flag day 2020 pentru a aborda problemele legate de fragmentare și suport TCP

Astăzi, o serie de servicii DNS mari și producători de servere DNS vor organiza un eveniment comun Ziua steagului DNS 2020conceput pentru a concentra atenția asupra decizia Probleme cu fragmentare IP la procesarea mesajelor DNS mari. Acesta este al doilea astfel de eveniment, anul trecut „Ziua steagului DNS” era concentrat privind procesarea corectă a cererilor EDNS.

Participanții la inițiativa DNS flag day 2020 solicită ca dimensiunile tampon recomandate pentru EDNS să fie fixate la 1232 de octeți (dimensiunea MTU 1280 minus 48 de octeți pentru anteturi), precum și traduce procesarea cererilor prin TCP este o caracteristică obligatorie pe servere. ÎN RFC 1035 Doar suportul pentru procesarea cererilor prin UDP este marcat ca obligatoriu, iar TCP este listat ca fiind de dorit, dar nu este necesar pentru funcționare. Nou RFC 7766 и RFC 5966 enumerați în mod explicit TCP ca o capacitate necesară pentru ca DNS să funcționeze corect. Inițiativa propune forțarea tranziției de la trimiterea cererilor prin UDP la utilizarea TCP în cazurile în care dimensiunea tampon EDNS stabilită este insuficientă.

Modificările propuse vor elimina confuzia cu alegerea dimensiunii bufferului EDNS și vor rezolva problema fragmentării mesajelor UDP mari, a căror procesare duce adesea la pierderea pachetelor și la expirarea timpului pe partea clientului. Pe partea clientului, dimensiunea bufferului EDNS va fi constantă și răspunsurile mari vor fi trimise imediat clientului prin TCP. Evitarea trimiterii de mesaje mari prin UDP va rezolva, de asemenea, problemele cu pachetele mari care sunt aruncate pe unele firewall-uri și va permite blocarea atacuri pentru otrăvirea cache-ului DNS, pe baza manipulării pachetelor UDP fragmentate (atunci când este împărțit în fragmente, al doilea fragment nu include un antet cu un identificator, deci poate fi falsificat, pentru care este suficient doar ca suma de control să se potrivească) .

Începând de astăzi, furnizorii DNS participanți, inclusiv CloudFlare, Quad 9, Cisco (OpenDNS) și Google, se va schimba treptat Dimensiunea bufferului EDNS de la 4096 la 1232 de octeți pe serverele sale DNS (modificarea EDNS se va desfășura pe 4-6 săptămâni și va acoperi un număr tot mai mare de solicitări în timp). Răspunsurile la solicitările UDP care nu se încadrează în noua limită vor fi trimise prin TCP. Furnizorii de servere DNS, inclusiv BIND, Unbound, Knot, NSD și PowerDNS, vor lansa actualizări pentru a modifica dimensiunea implicită a bufferului EDNS de la 4096 de octeți la 1232 de octeți.

În cele din urmă, aceste modificări pot duce la probleme de rezolvare la accesarea serverelor DNS ale căror răspunsuri UDP DNS depășesc 1232 de octeți și nu pot trimite un răspuns TCP. Un experiment desfășurat la Google a arătat că modificarea dimensiunii bufferului EDNS nu are practic niciun efect asupra ratei de eșec - cu un buffer de 4096 de octeți, numărul de solicitări UDP trunchiate este de 0.345%, iar numărul de reîncercări inaccesibile prin TCP este de 0.115%. Cu un buffer de 1232 de octeți, aceste cifre sunt 0.367% și 0.116%. Transformarea suportului TCP într-o caracteristică DNS necesară va cauza probleme cu aproximativ 0.1% din serverele DNS. Se observă că în condiții moderne, fără TCP, funcționarea acestor servere este deja instabilă.

Administratorii serverelor DNS autorizate 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. De asemenea, un server DNS reputat nu ar trebui să trimită răspunsuri UDP mai mari decât
dimensiunea tamponului EDNS solicitată. Pe serverul însuși, dimensiunea bufferului EDNS ar trebui să fie setată la 1232 de octeți. Rezolvatorii au aproximativ aceleași cerințe - capacitatea obligatorie de a răspunde prin TCP, suport obligatoriu pentru trimiterea de cereri repetate prin TCP atunci când primesc un răspuns UDP trunchiat și setarea bufferului EDNS la 1232 de octeți.

Următorii parametri sunt responsabili pentru setarea dimensiunii bufferului EDNS în diferite servere DNS:

  • LEGA

    Opțiuni {
    edns-udp-size 1232;
    max-udp-size 1232;
    };

  • Nod DNS

    sarcină utilă max-udp: 1232

  • Knot Resolver

    net.bufsize(1232)

  • Autoritate PowerDNS

    udp-truncation-threshold=1232

  • Recursor PowerDNS

    edns-outgoing-bufsize=1232
    udp-truncation-threshold=1232

  • unbound

    dimensiunea-buffer-edns: 1232

  • NSD

    Dimensiune ipv4-edns: 1232
    Dimensiune ipv6-edns: 1232

    Sursa: opennet.ru

  • Adauga un comentariu