DNS Flag Day 2020-initiatief om fragmentatie- en TCP-ondersteuningsproblemen aan te pakken

Vandaag houden een aantal grote DNS-diensten en DNS-serverfabrikanten een gezamenlijk evenement DNS-vlagdag 2020ontworpen om de aandacht op te vestigen de beslissing problemen met IP-fragmentatie bij het verwerken van grote DNS-berichten. Dit is het tweede dergelijke evenement, vorig jaar β€œDNS-vlagdag” was gefocust over de juiste verwerking van EDNS-verzoeken.

Deelnemers aan het DNS Flag Day 2020-initiatief roepen op om de aanbevolen buffergrootte voor EDNS vast te stellen op 1232 bytes (MTU-grootte 1280 min 48 bytes voor headers), evenals vertalen het verwerken van verzoeken via TCP is een onmisbare functie op servers. IN RFC 1035 Alleen ondersteuning voor het verwerken van verzoeken via UDP is als verplicht gemarkeerd, en TCP wordt vermeld als wenselijk, maar niet vereist voor de werking. Nieuw RFC 7766 ΠΈ RFC 5966 vermeld TCP expliciet als een vereiste mogelijkheid om DNS correct te laten functioneren. Het initiatief stelt voor om de overgang van het verzenden van verzoeken via UDP naar het gebruik van TCP te forceren in gevallen waarin de vastgestelde EDNS-buffergrootte onvoldoende is.

De voorgestelde wijzigingen zullen verwarring bij het kiezen van de EDNS-buffergrootte wegnemen en het probleem van fragmentatie van grote UDP-berichten oplossen, waarvan de verwerking vaak leidt tot pakketverlies en time-outs aan de clientzijde. Aan de clientzijde zal de EDNS-buffergrootte constant zijn en zullen grote antwoorden onmiddellijk via TCP naar de client worden verzonden. Het vermijden van het verzenden van grote berichten via UDP zal ook problemen oplossen waarbij grote pakketten op sommige firewalls worden gedropt en blokkering mogelijk maken aanvallen voor het vergiftigen van de DNS-cache, gebaseerd op de manipulatie van gefragmenteerde UDP-pakketten (wanneer het in fragmenten wordt opgesplitst, bevat het tweede fragment geen header met een identificatie, zodat het kan worden vervalst, waarvoor het alleen voldoende is dat de controlesom overeenkomt) .

Vanaf vandaag kunnen deelnemende DNS-providers, waaronder CloudFlare, Quad 9, Cisco (OpenDNS) en Google, zal geleidelijk veranderen EDNS-buffergrootte van 4096 tot 1232 bytes op zijn DNS-servers (de EDNS-wijziging zal over vier tot zes weken worden gespreid en zal in de loop van de tijd een toenemend aantal verzoeken dekken). Reacties op UDP-verzoeken die niet binnen de nieuwe limiet passen, worden via TCP verzonden. DNS-serverleveranciers, waaronder BIND, Unbound, Knot, NSD en PowerDNS, zullen updates vrijgeven om de standaard EDNS-buffergrootte te wijzigen van 4 bytes naar 6 bytes.

Uiteindelijk kunnen deze wijzigingen leiden tot oplossingsproblemen bij toegang tot DNS-servers waarvan de UDP DNS-reacties groter zijn dan 1232 bytes en geen TCP-antwoord kunnen verzenden. Uit een experiment bij Google bleek dat het wijzigen van de EDNS-buffergrootte vrijwel geen effect heeft op het foutpercentage: met een buffer van 4096 bytes is het aantal ingekorte UDP-verzoeken 0.345% en het aantal onbereikbare nieuwe pogingen via TCP 0.115%. Met een buffer van 1232 bytes zijn deze cijfers 0.367% en 0.116%. Als TCP-ondersteuning een vereiste DNS-functie wordt, zal dit problemen veroorzaken bij ongeveer 0.1% van de DNS-servers. Opgemerkt wordt dat in moderne omstandigheden, zonder TCP, de werking van deze servers al onstabiel is.

Beheerders van gezaghebbende DNS-servers moeten ervoor zorgen dat hun server via TCP reageert op netwerkpoort 53 en dat deze TCP-poort niet wordt geblokkeerd door een firewall. Een gerenommeerde DNS-server mag ook geen UDP-antwoorden verzenden die groter zijn dan
gevraagde EDNS-buffergrootte. Op de server zelf moet de EDNS-buffergrootte worden ingesteld op 1232 bytes. Resolvers hebben ongeveer dezelfde vereisten: verplichte mogelijkheid om te reageren via TCP, verplichte ondersteuning voor het verzenden van herhaalde verzoeken via TCP bij ontvangst van een ingekort UDP-antwoord, en het instellen van de EDNS-buffer op 1232 bytes.

De volgende parameters zijn verantwoordelijk voor het instellen van de EDNS-buffergrootte op verschillende DNS-servers:

  • BINDEN

    opties {
    edns-udp-grootte 1232;
    max-udp-grootte 1232;
    };

  • Knoop DNS

    max-udp-payload: 1232

  • Knoopoplosser

    net.bufsize(1232)

  • PowerDNS gezaghebbend

    udp-truncatiedrempel=1232

  • PowerDNS-recursor

    edns-uitgaand-bufsize=1232
    udp-truncatiedrempel=1232

  • Ongebonden

    edns-buffergrootte: 1232

  • NSD

    ipv4-edns-grootte: 1232
    ipv6-edns-grootte: 1232

    Bron: opennet.ru

  • Voeg een reactie