DNS flag day-initiatief 2020 ter oplossing van fragmentatieproblemen en TCP-ondersteuning

Vandaag zullen verschillende grote DNS-diensten en fabrikanten van DNS-servers een gezamenlijk evenement houden DNS flag day 2020, te houden om aandacht te vestigen op de oplossing problemen met IP-fragmentatie bij de verwerking van grote DNS-berichten. Dit is het tweede evenement van dit soort; het afgelopen jaar was er de 'DNS-vlagdag' dat was gericht op de correcte verwerking van EDNS-verzoeken.

De deelnemers aan het DNS-vlagdag-initiatief 2020 roepen op om de aanbevolen bufferformaten voor EDNS vast te stellen op waarden van 1232 bytes (MTU-grootte van 1280 min 48 bytes voor headers), evenals te vertalen de verwerking van verzoeken via TCP tot een vereiste ondersteuning op servers. In RFC 1035 is alleen de ondersteuning van de verwerking van verzoeken via UDP verplicht gemarkeerd, terwijl TCP als wenselijk maar niet verplicht wordt aangegeven voor de werking. Nieuwe RFC 7766 en RFC 5966 markeren TCP expliciet als een van de verplichte mogelijkheden die nodig zijn voor de juiste werking van DNS. Binnen het lopende initiatief wordt voorgesteld om de overgang van het verzenden van verzoeken via UDP naar het gebruik van TCP af te dwingen in gevallen waarin de vastgestelde EDNS-buffergrootte onvoldoende is.

De voorgestelde wijzigingen zullen verwarring over de keuze 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 grote antwoorden zullen onmiddellijk via TCP naar de client worden verzonden. Het uitsluiten van het verzenden van grote berichten via UDP zal ook problemen oplossen met het afschieten van grote pakketten op enkele firewalls en zal de mogelijkheid bieden om te blokkeren aanval voor DNS-cachevergiftiging, gebaseerd op manipulatie van gefragmenteerde UDP-pakketten (bij fragmentatie bevat het tweede fragment geen header met de identificatie, waardoor het kan worden vervalst zolang de controle som overeenkomt).

Vanaf vandaag zullen de deelnemende DNS-providers, waaronder CloudFlare, Quad 9, Cisco (OpenDNS) en Google, geleidelijk de EDNS-buffergrootte van 4096 naar 1232 bytes op hun DNS-servers wijzigen (de aanpassing van EDNS zal zich over een periode van 4-6 weken uitstrekken en zal geleidelijk meer verzoeken omvatten). Antwoorden op UDP-verzoeken die buiten de nieuwe limiet vallen, zullen via TCP worden verzonden. Fabrikanten van DNS-servers, waaronder BIND, Unbound, Knot, NSD en PowerDNS, zullen updates uitbrengen met de wijziging van de standaard EDNS-buffergrootte van 4096 naar 1232 bytes.

Uiteindelijk kunnen de aangebrachte wijzigingen leiden tot problemen met de resolving bij het aanvragen van DNS-servers, waarvan de DNS-antwoorden per UDP meer dan 1232 bytes overschrijden en die geen antwoord per TCP kunnen versturen. Een experiment uitgevoerd door Google toonde aan dat het vergroten van de EDNS-buffer nauwelijks invloed zal hebben op het percentage mislukte verzoeken - bij een buffer van 4096 bytes bedraagt het aantal afgebroken UDP-verzoeken 0,345%, terwijl het aantal onbereikbare herhalingsantwoorden per TCP 0,115% is. Bij een buffer van 1232 bytes zijn deze percentages respectievelijk 0,367% en 0,116%. Het verplicht stellen van TCP-ondersteuning in DNS zal problemen veroorzaken bij de interactie met ongeveer 0,1% van de DNS-servers. Het wordt opgemerkt dat in de huidige omstandigheden zonder TCP de werking van deze servers al onbetrouwbaar is.

Beheerders van autoritatieve DNS-servers moeten ervoor zorgen dat hun server antwoordgeeft via TCP op poort 53 en dat deze TCP-poort niet wordt geblokkeerd door een firewall. Een autoritatieve DNS-server mag ook geen UDP-antwoorden verzenden waarvan de grootte groter is dan
de aangevraagde grootte van de EDNS-buffer. Op de server zelf moet de EDNS-buffer zijn ingesteld op 1232 bytes. Resolvers hebben ongeveer dezelfde eisen — verplichte mogelijkheid van antwoord per TCP, verplichte ondersteuning voor het verzenden van herhalingsverzoeken per TCP bij ontvangst van een afgebroken UDP-antwoord, en instelling van de EDNS-buffer op 1232 bytes.

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

  • 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

    Bron: opennet.ru

  • Koop betrouwbare webhosting met bescherming tegen DDoS, VPS VDS servers 🔥 Koop betrouwbare webhosting met bescherming tegen DDoS, VPS VDS servers | ProHoster