Šiandien daugelis didelių DNS paslaugų ir DNS serverių gamintojų surengs bendrą renginį skirtas sutelkti dėmesį su IP fragmentacija apdorojant didelius DNS pranešimus. Tai jau antras toks renginys, pernai „DNS vėliavos diena“ apie teisingą EDNS užklausų apdorojimą.
Iniciatyvos DNS vėliavėlės diena 2020 dalyviai ragina EDNS rekomenduojamus buferio dydžius nustatyti iki 1232 baitų (MTU dydis 1280 minus 48 baitai antraštėms), taip pat užklausų apdorojimas per TCP yra privaloma serverių funkcija. IN Tik užklausų apdorojimo per UDP palaikymas yra pažymėtas kaip privalomas, o TCP yra nurodytas kaip pageidautinas, bet neprivalomas veikimui. Nauja и aiškiai nurodykite TCP kaip būtiną galimybę, kad DNS veiktų tinkamai. Iniciatyvoje siūloma priverstinai pereiti nuo užklausų siuntimo per UDP prie TCP naudojimo tais atvejais, kai nustatytas EDNS buferio dydis yra nepakankamas.
Siūlomi pakeitimai pašalins painiavą renkantis EDNS buferio dydį ir išspręs didelių UDP pranešimų suskaidymo problemą, kurių apdorojimas dažnai lemia paketų praradimą ir laiko pabaigą kliento pusėje. Kliento pusėje EDNS buferio dydis bus pastovus, o dideli atsakymai bus nedelsiant siunčiami klientui per TCP. Vengiant siųsti didelius pranešimus per UDP, taip pat išspręsite problemas, susijusias su didelių paketų numetimu kai kuriose ugniasienėse ir leis blokuoti už DNS talpyklos apnuodijimą, remiantis manipuliavimu suskaidytais UDP paketais (padalijus į fragmentus, antrame fragmente nėra antraštės su identifikatoriumi, todėl jis gali būti suklastotas, kuriam pakanka tik, kad sutaptų kontrolinė suma) .
Nuo šiandien dalyvaujantys DNS teikėjai, įskaitant „CloudFlare“, „Quad 9“, „Cisco“ („OpenDNS“) ir „Google“, EDNS buferio dydis nuo 4096 iki 1232 baitų savo DNS serveriuose (EDNS pakeitimas bus paskirstytas per 4–6 savaites ir laikui bėgant apims vis daugiau užklausų). Atsakymai į UDP užklausas, kurie netelpa į naują limitą, bus siunčiami per TCP. DNS serverių tiekėjai, įskaitant BIND, Unbound, Knot, NSD ir PowerDNS, išleis naujinimus, kad pakeistų numatytąjį EDNS buferio dydį nuo 4096 baitų iki 1232 baitų.
Galiausiai dėl šių pakeitimų gali kilti sprendimo problemų, kai pasiekiate DNS serverius, kurių UDP DNS atsakymai viršija 1232 baitus ir negali siųsti TCP atsakymo. „Google“ atliktas eksperimentas parodė, kad EDNS buferio dydžio keitimas praktiškai neturi įtakos gedimų dažniui – esant 4096 baitų buferiui, sutrumpintų UDP užklausų skaičius yra 0.345%, o nepasiekiamų pakartotinių bandymų per TCP skaičius yra 0.115%. Su 1232 baitų buferiu šie skaičiai yra 0.367% ir 0.116%. Padarius TCP palaikymą būtina DNS funkcija, kils problemų su maždaug 0.1 % DNS serverių. Pažymima, kad šiuolaikinėmis sąlygomis, be TCP, šių serverių darbas jau yra nestabilus.
Autoritetingų DNS serverių administratoriai turėtų užtikrinti, kad jų serveris atsakytų per TCP 53 tinklo prievade ir kad šio TCP prievado neužblokuotų ugniasienė. Gerbiamas DNS serveris taip pat neturėtų siųsti UDP atsakymų, kurie yra didesni nei
prašomas EDNS buferio dydis. Pačiame serveryje EDNS buferio dydis turėtų būti nustatytas į 1232 baitus. Rezolveriams keliami maždaug tokie patys reikalavimai – privaloma galimybė atsakyti per TCP, privalomas palaikymas siunčiant pakartotines užklausas per TCP, kai gaunamas sutrumpintas UDP atsakymas, ir EDNS buferio nustatymas iki 1232 baitų.
Šie parametrai yra atsakingi už EDNS buferio dydžio nustatymą skirtinguose DNS serveriuose:
galimybės {
edns-udp-size 1232;
max-udp-dydis 1232;
};
max-udp-naudingoji apkrova: 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
Šaltinis: opennet.ru
