Iniciatíva DNS flag day 2020 na riešenie problémov s fragmentáciou a podporou TCP

Dnes usporiada niekoľko veľkých DNS služieb a výrobcov DNS serverov spoločné podujatie Deň vlajky DNS 2020navrhnutý tak, aby upriamil pozornosť rozhodnutie problémy s fragmentáciou IP pri spracovaní veľkých správ DNS. Ide o druhé takéto podujatie, minulý rok „DNS flag day“ bol zameraný o správnom spracovaní žiadostí EDNS.

Účastníci iniciatívy DNS flag day 2020 požadujú, aby odporúčaná veľkosť vyrovnávacej pamäte pre EDNS bola stanovená na 1232 bajtov (veľkosť MTU 1280 mínus 48 bajtov pre hlavičky), ako aj preložiť spracovanie požiadaviek cez TCP je nevyhnutnou funkciou serverov. IN RFC 1035 Povinná je označená len podpora spracovania požiadaviek cez UDP a TCP je uvedené ako žiaduce, ale nie je potrebné na prevádzku. Nový RFC 7766 и RFC 5966 explicitne uveďte TCP ako požadovanú schopnosť pre správne fungovanie DNS. Iniciatíva navrhuje vynútiť prechod od odosielania požiadaviek cez UDP k používaniu TCP v prípadoch, keď je stanovená veľkosť vyrovnávacej pamäte EDNS nedostatočná.

Navrhované zmeny odstránia zmätok pri výbere veľkosti EDNS buffera a vyriešia problém fragmentácie veľkých UDP správ, ktorých spracovanie často vedie k strate paketov a timeoutom na strane klienta. Na strane klienta bude veľkosť vyrovnávacej pamäte EDNS konštantná a veľké odpovede sa budú okamžite odosielať klientovi cez TCP. Vyhýbanie sa odosielaniu veľkých správ cez UDP tiež vyrieši problémy so zahadzovaním veľkých paketov na niektorých firewalloch a umožní blokovanie útokov za otravu DNS cache, na základe manipulácie s fragmentovanými UDP paketmi (pri rozdelení na fragmenty druhý fragment neobsahuje hlavičku s identifikátorom, takže môže byť sfalšovaný, na čo stačí, aby sa zhodoval kontrolný súčet) .

Od dnešného dňa zúčastnení poskytovatelia DNS vrátane CloudFlare, Quad 9, Cisco (OpenDNS) a Google, sa bude postupne meniť Veľkosť vyrovnávacej pamäte EDNS od 4096 1232 do 4 6 bajtov na jej serveroch DNS (zmena EDNS bude rozložená na 4096 až 1232 týždňov a časom pokryje rastúci počet požiadaviek). Odpovede na požiadavky UDP, ktoré sa nezmestia do nového limitu, budú odoslané cez TCP. Dodávatelia serverov DNS vrátane BIND, Unbound, Knot, NSD a PowerDNS vydajú aktualizácie na zmenu predvolenej veľkosti vyrovnávacej pamäte EDNS z XNUMX bajtov na XNUMX bajtov.

V konečnom dôsledku môžu tieto zmeny viesť k problémom s rozlíšením pri prístupe k serverom DNS, ktorých odpovede UDP DNS presahujú 1232 bajtov a nemôžu odoslať odpoveď TCP. Experiment vykonaný v spoločnosti Google ukázal, že zmena veľkosti vyrovnávacej pamäte EDNS nemala prakticky žiadny vplyv na mieru zlyhania – s vyrovnávacou pamäťou 4096 bajtov bol počet skrátených požiadaviek UDP 0.345 % a počet opakovaných pokusov o nedostupnosť cez TCP bol 0.115. %. S vyrovnávacou pamäťou 1232 bajtov sú tieto čísla 0.367 % a 0.116 %. Nastavenie podpory TCP ako vyžadovanej funkcie DNS spôsobí problémy s približne 0.1 % serverov DNS. Je potrebné poznamenať, že v moderných podmienkach bez TCP je prevádzka týchto serverov už nestabilná.

Správcovia autoritatívnych serverov DNS by sa mali uistiť, že ich server odpovedá cez TCP na sieťovom porte 53 a že tento port TCP nie je blokovaný bránou firewall. Renomovaný server DNS by tiež nemal odosielať odpovede UDP, ktoré sú väčšie ako
požadovaná veľkosť vyrovnávacej pamäte EDNS. Na samotnom serveri by mala byť veľkosť vyrovnávacej pamäte EDNS nastavená na 1232 bajtov. Resolvery majú približne rovnaké požiadavky – povinnú schopnosť odpovedať cez TCP, povinnú podporu odosielania opakovaných požiadaviek cez TCP pri príjme skrátenej UDP odpovede a nastavenie EDNS buffera na 1232 bajtov.

Nasledujúce parametre sú zodpovedné za nastavenie veľkosti vyrovnávacej pamäte EDNS na rôznych serveroch DNS:

  • BIND

    možnosti {
    edns-udp-size 1232;
    max-udp-size 1232;
    };

  • Uzol DNS

    max-udp-užitočné zaťaženie: 1232

  • Knot Resolver

    net.bufsize(1232)

  • PowerDNS autoritatívny

    udp-truncation-threshold=1232

  • Rekurzor PowerDNS

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

  • neviazaný

    edns-buffer-size: 1232

  • NSD

    ipv4-edns-size: 1232
    ipv6-edns-size: 1232

    Zdroj: opennet.ru

  • Pridať komentár