DNS flag day 2020-initiativet til løsning af problemer med fragmentering og støtte til TCP

I dag holder en række store DNS-tjenester og producenter af DNS-servere et fælles arrangement DNS flag day 2020, der har til formål at fokusere opmærksomheden på løsningen problemer af IP-fragmentering ved behandling af store DNS-beskeder. Dette er det andet arrangement af sin art; sidste år blev "DNS flag day" fokuseret på korrekt behandling af EDNS-anmodninger.

Deltagerne i initiativet DNS flag day 2020 opfordrer til at fastsætte de anbefalede bufferstørrelser for EDNS til niveauer på 1232 bytes (MTU størrelse 1280 minus 48 bytes til overskrifter), samt at gøre håndtering af anmodninger over TCP til en obligatorisk understøttet funktion på servere. I RFC 1035 er understøttelsen af behandling af anmodninger over UDP kun obligatorisk, mens TCP er angivet som ønskelig, men ikke nødvendig for funktion. De nye RFC 7766 og RFC 5966 tilføjer tydeligt TCP blandt de obligatoriske funktioner, der er nødvendige for korrekt DNS-drift. I forbindelse med det gennemførte initiativ foreslås det at tvinge overgangen fra at sende anmodninger over UDP til at anvende TCP i tilfælde, hvor den fastsatte bufferstørrelse for EDNS er utilstrækkelig.

De foreslåede ændringer vil eliminere forvirringen omkring valget af EDNS-bufferstørrelse og løse problemet med fragmentering af store UDP-beskeder, hvis behandling ofte fører til tab af pakker og timeout på klientsiden. På klientsiden vil EDNS-bufferstørrelsen være konstant, og store svar vil straks blive sendt til klienten over TCP. Undtagelsen til at sende store beskeder over UDP vil også løse problemer med udsmidning af store pakker på nogle firewall-enheder og muliggøre blokering angreb af DNS-cache-forgiftning baseret på manipulation af fragmenterede UDP-pakker (ved fragmentering inkluderer det andet fragment ikke overskriften med identificeringen, hvorfor det kan forfalskes, så længe kontrolsummen passer).

Fra i dag vil de deltagende DNS-udbydere, herunder CloudFlare, Quad 9, Cisco (OpenDNS) og Google, gradvist ændre Ændringen af EDNS-bufferen fra 4096 til 1232 byte på deres DNS-servere (ændringen af EDNS vil blive udrullet over 4-6 uger og vil gradvist omfatte flere anmodninger). Svar på UDP-anmodninger, der ikke overholder den nye grænse, vil blive sendt via TCP. Producenter af DNS-servere, herunder BIND, Unbound, Knot, NSD og PowerDNS, vil frigive opdateringer, der ændrer standard-størrelsen på EDNS-bufferen fra 4096 til 1232 byte.

I sidste ende kan de indførte ændringer føre til problemer med opløsning, når man henvender sig til DNS-servere, hvis DNS-svar via UDP overstiger 1232 byte, og som ikke kan sende svar via TCP. Et eksperiment udført af Google viste, at ændringen af EDNS-bufferens størrelse praktisk talt ikke vil påvirke niveauet af fejl — ved en bufferstørrelse på 4096 byte er antallet af beskårede UDP-anmodninger 0,345%, mens antallet af uopnåelige gentagne svar via TCP er 0,115%. Ved en buffer på 1232 byte er disse tal 0,367% og 0,116%. At gøre TCP-support til et krav vil føre til problemer med interaktionen med omkring 0,1% af DNS-serverne. Det er bemærket, at under moderne forhold er driften af disse servere allerede ustabil uden TCP.

Administratorer af autoritative DNS-servere bør sikre, at deres server kan svare via TCP på netværksport 53, og at denne TCP-port ikke blokeres af en firewall. Den autoritative DNS-server bør heller ikke sende UDP-svar, hvis størrelsen overstiger
den efterspurgte EDNS-bufferstørrelse. På selve serveren bør EDNS-bufferstørrelsen være sat til 1232 byte. Der stilles omtrent de samme krav til opløsere — obligatorisk mulighed for at svare via TCP, obligatorisk support for at sende gentagne anmodninger via TCP ved modtagelse af beskårede UDP-svar, og indstilling af EDNS-bufferen til 1232 byte.

Indstillingerne for EDNS-bufferstørrelsen i forskellige DNS-servere er som følger:

  • BIND

    options {
    edns-udp-size 1232;
    max-udp-size 1232;
    };

  • Knot DNS

    max-udp-payload: 1232

  • Knot Resolver

    net.bufsize(1232)

  • PowerDNS Authoritative

    udp-truncation-threshold=1232

  • PowerDNS Recursor

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

  • Unbound

    edns-buffer-size: 1232

  • NSD

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

    Kilde: opennet.ru

  • Køb pålidelig webhosting med DDoS-beskyttelse, VPS VDS-servere 🔥 Køb pålidelig webhosting med DDoS-beskyttelse, VPS VDS-servere | ProHoster