Dnes se několik významných DNS služeb a výrobců DNS serverů zúčastní společného podniku , jehož cílem je zaměřit pozornost na pro IP fragmentaci při zpracování velkých DNS zpráv. Toto je druhá taková akce, loni byl "DNS flag day" na správné zpracování EDNS dotazů.
Účastníci iniciativy DNS flag day 2020 vyzývají k uzamčení doporučených velikostí bufferů pro EDNS na úroveň 1232 bytů (velikost MTU 1280 minus 48 bytů pro hlavičky), a také zpracování dotazů přes TCP mezi nezbytně podporované na serverech. V je povinně označena pouze podpora zpracování dotazů přes UDP, zatímco TCP je uvedeno jako žádoucí, ale nikoli nezbytné pro fungování. Nové a jasně řadí TCP mezi nezbytné funkce potřebné pro správné fungování DNS. V rámci probíhající iniciativy se navrhuje urychlit přechod od odesílání dotazů přes UDP k používání TCP v případech, kdy je doporučená velikost bufferu EDNS nedostatečná.
Navrhované změny odstraní zmatek při výběru velikosti bufferu EDNS a vyřeší problém s fragmentací velkých UDP zpráv, jejichž zpracování často vede ke ztrátě paketů a timeoutům na straně klienta. Na straně klienta bude velikost bufferu EDNS konstantní a velké odpovědi budou okamžitě odeslány klientovi přes TCP. Vyloučení odesílání velkých zpráv přes UDP také vyřeší problémy s odpadem velkých paketů na některých firewallech a umožní blokovat utoky na DNS cache, založené na manipulaci s fragmentovanými UDP pakety (při fragmentaci druhý fragment neobsahuje hlavičku s identifikátorem, a proto může být falšován tak, aby byla známa pouze kontrolní suma).
Od dnešního dne se účastnící této iniciativy DNS, včetně CloudFlare, Quad 9, Cisco (OpenDNS) a Google, velikost EDNS bufferu z 4096 na 1232 bajtů na svých DNS serverech (změna EDNS se bude rozprostírat na 4-6 týdnů a s časem se bude týkat stále většího počtu dotazů). Odpovědi na UDP dotazy, které se nevejdou do nového omezení, budou zasílány přes TCP. Výrobci DNS serverů, včetně BIND, Unbound, Knot, NSD a PowerDNS, vydají aktualizace se změnou výchozí velikosti EDNS bufferu z 4096 na 1232 bajtů.
Nakonec zaváděné změny mohou vést k problémům s resolvováním při přístupu k DNS serverům, jejichž odpovědi přes UDP překračují 1232 bajtů, a které nemohou poslat odpověď přes TCP. Experiment provedený Googlem ukázal, že změna velikosti EDNS bufferu prakticky nemá vliv na úroveň selhání — při bufferu 4096 bajtů je počet zkrácených UDP dotazů 0,345 %, a počet nedosažitelných opakovaných odpovědí přes TCP 0,115 %. Při bufferu 1232 bajtů jsou tyto ukazatele 0,367 % a 0,116 %. Převod podpory TCP na povinné schopnosti DNS povede k problémům při interakci s přibližně 0,1 % DNS serverů. Bylo poznamenáno, že za současných podmínek bez TCP jsou výkon těchto serverů již tak nestabilní.
Správci autoritativních (authoritative) DNS serverů by měli zajistit, aby jejich server odpovídal přes TCP na síťovém portu 53 a tento TCP port nebyl blokován firewallem. Autoritativní DNS server také nesmí posílat UDP odpovědi, jejichž velikost přesahuje
požadovanou velikost EDNS bufferu. Na samotném serveru by měla být nastavena velikost EDNS bufferu na 1232 bajtů. K resolverům se kladou zhruba stejné požadavky — povinná možnost odpovědi přes TCP, povinná podpora opakovaných dotazů přes TCP při získání zkrácené UDP odpovědi a nastavení EDNS bufferu na 1232 bajtů.
Za nastavení velikosti EDNS bufferu v různých DNS serverech odpovídají následující parametry:
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
Zdroj: opennet.ru
