Inicijativa DNS flag day 2020. za rješavanje problema fragmentacije i TCP podrške

Danas će niz velikih DNS servisa i proizvođača DNS poslužitelja održati zajednički događaj Dan zastave DNS-a 2020dizajniran da usmjeri pažnju na odluka problem s IP fragmentacijom pri obradi velikih DNS poruka. Ovo je drugi ovakav događaj, prošlogodišnji “DNS flag day” bio usredotočen o ispravnoj obradi EDNS zahtjeva.

Sudionici inicijative DNS flag day 2020. pozivaju da se preporučene veličine međuspremnika za EDNS poprave na 1232 bajta (veličina MTU 1280 minus 48 bajtova za zaglavlja), kao i Prevedi obrada zahtjeva putem TCP-a obavezna je značajka na poslužiteljima. U RFC 1035 Samo je podrška za obradu zahtjeva putem UDP-a označena kao obavezna, a TCP je naveden kao poželjan, ali nije potreban za rad. Novi RFC 7766 и RFC 5966 izričito navodi TCP kao potrebnu sposobnost za ispravno funkcioniranje DNS-a. Inicijativa predlaže prisilni prijelaz sa slanja zahtjeva putem UDP-a na korištenje TCP-a u slučajevima kada je uspostavljena veličina međuspremnika EDNS-a nedovoljna.

Predložene izmjene će eliminirati zabunu s odabirom veličine EDNS međuspremnika i riješiti problem fragmentacije velikih UDP poruka, čija obrada često dovodi do gubitka paketa i isteka vremena na strani klijenta. Na strani klijenta, veličina EDNS međuspremnika će biti konstantna i veliki odgovori će se odmah slati klijentu preko TCP-a. Izbjegavanje slanja velikih poruka putem UDP-a također će riješiti probleme s ispuštanjem velikih paketa na nekim vatrozidima i omogućiti blokiranje napadi za trovanje DNS cache-a, temeljeno na manipulaciji fragmentiranih UDP paketa (kada se podijeli na fragmente, drugi fragment ne sadrži zaglavlje s identifikatorom, pa se može krivotvoriti, za što je dovoljno samo da se kontrolni zbroj podudara) .

Od danas, sudjelujući DNS pružatelji uključujući CloudFlare, Quad 9, Cisco (OpenDNS) i Google, postupno će se mijenjati Veličina EDNS međuspremnika s 4096 na 1232 bajta na njegovim DNS poslužiteljima (promjena EDNS-a proširit će se na 4-6 tjedana i pokrivat će sve veći broj zahtjeva tijekom vremena). Odgovori na UDP zahtjeve koji ne ulaze u novo ograničenje bit će poslani putem TCP-a. Dobavljači DNS poslužitelja uključujući BIND, Unbound, Knot, NSD i PowerDNS objavit će ažuriranja za promjenu zadane veličine EDNS međuspremnika s 4096 bajta na 1232 bajta.

U konačnici, ove promjene mogu dovesti do problema s rješavanjem prilikom pristupa DNS poslužiteljima čiji UDP DNS odgovori premašuju 1232 bajta i ne mogu poslati TCP odgovor. Eksperiment proveden u Googleu pokazao je da promjena veličine međuspremnika EDNS nema praktički nikakvog utjecaja na stopu neuspjeha - s međuspremnikom od 4096 bajtova, broj skraćenih UDP zahtjeva je 0.345%, a broj nedostupnih pokušaja preko TCP-a je 0.115%. S međuspremnikom od 1232 bajta, ove brojke su 0.367% i 0.116%. Postavljanje TCP podrške kao potrebne značajke DNS-a uzrokovat će probleme s oko 0.1% DNS poslužitelja. Napominje se da je u modernim uvjetima, bez TCP-a, rad ovih poslužitelja već nestabilan.

Administratori autoritativnih DNS poslužitelja trebali bi osigurati da njihov poslužitelj odgovara putem TCP-a na mrežnom priključku 53 i da taj TCP priključak nije blokiran vatrozidom. Ugledni DNS poslužitelj također ne bi trebao slati UDP odgovore koji su veći od
tražena veličina međuspremnika EDNS. Na samom poslužitelju veličina EDNS međuspremnika trebala bi biti postavljena na 1232 bajta. Razlučivači imaju približno iste zahtjeve - obavezna mogućnost odgovora putem TCP-a, obavezna podrška za slanje ponovljenih zahtjeva putem TCP-a prilikom primanja skraćenog UDP odgovora i postavljanje EDNS međuspremnika na 1232 bajta.

Sljedeći parametri odgovorni su za postavljanje veličine EDNS međuspremnika u različitim DNS poslužiteljima:

  • VEZATI

    mogućnosti {
    edns-udp-veličina 1232;
    max-udp-veličina 1232;
    };

  • Čvor DNS

    max-udp-korisni teret: 1232

  • Razrješavač čvorova

    net.bufsize(1232)

  • PowerDNS mjerodavan

    udp-truncation-threshold=1232

  • PowerDNS Recursor

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

  • nevezan

    veličina-edns-međuspremnika: 1232

  • nsd

    ipv4-edns-veličina: 1232
    ipv6-edns-veličina: 1232

    Izvor: opennet.ru

  • Dodajte komentar