DNS flaggdag 2020-initiativ for å adressere fragmentering og TCP-støtteproblemer

I dag skal en rekke store DNS-tjenester og DNS-serverprodusenter holde et felles arrangement DNS flaggdag 2020designet for å fokusere oppmerksomheten på beslutning problemer med IP-fragmentering ved behandling av store DNS-meldinger. Dette er den andre slike begivenheten, i fjor "DNS flaggdag" var fokusert om riktig behandling av EDNS-forespørsler.

Deltakere i DNS flaggdag 2020-initiativet ber om at anbefalte bufferstørrelser for EDNS fastsettes til 1232 byte (MTU-størrelse 1280 minus 48 byte for overskrifter), samt oversette behandling av forespørsler via TCP er en må-ha-funksjon på servere. I RFC 1035 Kun støtte for behandling av forespørsler via UDP er merket som obligatorisk, og TCP er oppført som ønskelig, men ikke nødvendig for drift. Ny RFC 7766 и RFC 5966 oppgi eksplisitt TCP som en nødvendig funksjon for at DNS skal fungere riktig. Initiativet foreslår å tvinge frem overgangen fra å sende forespørsler over UDP til å bruke TCP i tilfeller der den etablerte EDNS-bufferstørrelsen er utilstrekkelig.

De foreslåtte endringene vil eliminere forvirring med valg av EDNS-bufferstørrelse og løse problemet med fragmentering av store UDP-meldinger, hvis behandling ofte fører til pakketap og tidsavbrudd på klientsiden. På klientsiden vil EDNS-bufferstørrelsen være konstant og store svar sendes umiddelbart til klienten over TCP. Å unngå å sende store meldinger over UDP vil også løse problemer med at store pakker slippes på enkelte brannmurer og tillate blokkering angrep for forgiftning av DNS-hurtigbufferen, basert på manipulering av fragmenterte UDP-pakker (når de er delt opp i fragmenter, inkluderer ikke det andre fragmentet en overskrift med en identifikator, slik at den kan forfalskes, som det bare er nok for at sjekksummen stemmer overens) .

Fra og med i dag vil deltakende DNS-leverandører, inkludert CloudFlare, Quad 9, Cisco (OpenDNS) og Google, vil gradvis endre seg EDNS-bufferstørrelse fra 4096 til 1232 byte på DNS-serverne (EDNS-endringen vil bli spredt over 4-6 uker og vil dekke et økende antall forespørsler over tid). Svar på UDP-forespørsler som ikke passer inn i den nye grensen vil bli sendt via TCP. DNS-serverleverandører inkludert BIND, Unbound, Knot, NSD og PowerDNS vil gi ut oppdateringer for å endre standard EDNS-bufferstørrelse fra 4096 byte til 1232 byte.

Til syvende og sist kan disse endringene føre til løsningsproblemer ved tilgang til DNS-servere hvis UDP DNS-svar overstiger 1232 byte og ikke kan sende et TCP-svar. Et eksperiment utført på Google viste at endring av EDNS-bufferstørrelsen praktisk talt ikke har noen innvirkning på feilfrekvensen – med en buffer på 4096 byte er antallet avkortede UDP-forespørsler 0.345 %, og antallet uoppnåelige gjenforsøk over TCP er 0.115 %. Med en buffer på 1232 byte er disse tallene 0.367 % og 0.116 %. Å gjøre TCP-støtte til en nødvendig DNS-funksjon vil forårsake problemer med omtrent 0.1 % av DNS-serverne. Det bemerkes at under moderne forhold, uten TCP, er driften av disse serverne allerede ustabil.

Administratorer av autoritative DNS-servere bør sørge for at deres server svarer via TCP på nettverksport 53 og at denne TCP-porten ikke er blokkert av en brannmur. En anerkjent DNS-server bør heller ikke sende UDP-svar som er større enn
forespurt EDNS-bufferstørrelse. På selve serveren bør EDNS-bufferstørrelsen settes til 1232 byte. Resolvere har omtrent de samme kravene – obligatorisk evne til å svare via TCP, obligatorisk støtte for å sende gjentatte forespørsler via TCP ved mottak av et avkortet UDP-svar, og innstilling av EDNS-buffer til 1232 byte.

Følgende parametere er ansvarlige for å angi EDNS-bufferstørrelsen i forskjellige DNS-servere:

  • BINDE

    alternativer {
    edns-udp-størrelse 1232;
    maks-udp-størrelse 1232;
    };

  • Knyttet DNS

    maks-udp-nyttelast: 1232

  • Knuteløser

    net.bufsize(1232)

  • PowerDNS autoritativ

    udp-truncation-threshold=1232

  • PowerDNS-resursor

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

  • ubundet

    edns-buffer-størrelse: 1232

  • NSD

    ipv4-edns-størrelse: 1232
    ipv6-edns-størrelse: 1232

    Kilde: opennet.ru

  • Legg til en kommentar