Initiative DNS Flag Day 2020 pour résoudre les problèmes de fragmentation et de prise en charge TCP

Aujourd'hui, un certain nombre de grands fabricants de services DNS et de serveurs DNS organiseront un événement commun Journée du drapeau DNS 2020conçu pour attirer l'attention sur la décision проблем avec fragmentation IP lors du traitement de messages DNS volumineux. C'est le deuxième événement de ce type, l'année dernière « Journée du drapeau DNS » était concentré sur le bon traitement des demandes EDNS.

Les participants à l'initiative DNS Flag Day 2020 demandent que les tailles de tampon recommandées pour EDNS soient fixées à 1232 1280 octets (taille MTU 48 XNUMX moins XNUMX octets pour les en-têtes), ainsi que traduire le traitement des requêtes via TCP est une fonctionnalité incontournable sur les serveurs. DANS RFC 1035 Seule la prise en charge du traitement des requêtes via UDP est marquée comme obligatoire, et TCP est répertorié comme souhaitable, mais pas requis pour le fonctionnement. Nouveau RFC 7766 и RFC 5966 répertoriez explicitement TCP comme une fonctionnalité requise pour que DNS fonctionne correctement. L'initiative propose de forcer la transition de l'envoi de requêtes via UDP à l'utilisation de TCP dans les cas où la taille du tampon EDNS établie est insuffisante.

Les modifications proposées élimineront toute confusion dans le choix de la taille du tampon EDNS et résoudront le problème de la fragmentation des messages UDP volumineux, dont le traitement entraîne souvent des pertes de paquets et des délais d'attente du côté client. Côté client, la taille du tampon EDNS sera constante et les réponses volumineuses seront immédiatement envoyées au client via TCP. Éviter d'envoyer des messages volumineux via UDP résoudra également les problèmes de perte de paquets volumineux sur certains pare-feu et permettra le blocage. attaques pour empoisonner le cache DNS, basé sur la manipulation de paquets UDP fragmentés (lorsqu'il est divisé en fragments, le deuxième fragment n'inclut pas d'en-tête avec un identifiant, il peut donc être falsifié, pour lequel il suffit que la somme de contrôle corresponde) .

À partir d'aujourd'hui, les fournisseurs DNS participants, notamment CloudFlare, Quad 9, Cisco (OpenDNS) et Google, va progressivement changer Taille du tampon EDNS de 4096 à 1232 octets sur ses serveurs DNS (le changement EDNS s'étalera sur 4 à 6 semaines et couvrira un nombre croissant de requêtes au fil du temps). Les réponses aux requêtes UDP qui ne rentrent pas dans la nouvelle limite seront envoyées via TCP. Les fournisseurs de serveurs DNS, notamment BIND, Unbound, Knot, NSD et PowerDNS, publieront des mises à jour pour modifier la taille du tampon EDNS par défaut de 4096 1232 octets à XNUMX XNUMX octets.

En fin de compte, ces modifications peuvent entraîner des problèmes de résolution lors de l'accès aux serveurs DNS dont les réponses DNS UDP dépassent 1232 4096 octets et ne peuvent pas envoyer de réponse TCP. Une expérience menée chez Google a montré que la modification de la taille du tampon EDNS n'a pratiquement aucun effet sur le taux d'échec - avec un tampon de 0.345 0.115 octets, le nombre de requêtes UDP tronquées est de 1232 % et le nombre de tentatives inaccessibles via TCP est de 0.367 %. Avec un buffer de 0.116 octets, ces chiffres sont de 0.1 % et XNUMX %. Faire de la prise en charge TCP une fonctionnalité DNS obligatoire entraînera des problèmes avec environ XNUMX % des serveurs DNS. Il est à noter que dans les conditions modernes, sans TCP, le fonctionnement de ces serveurs est déjà instable.

Les administrateurs de serveurs DNS faisant autorité doivent s'assurer que leur serveur répond via TCP sur le port réseau 53 et que ce port TCP n'est pas bloqué par un pare-feu. Un serveur DNS réputé ne doit pas non plus envoyer de réponses UDP supérieures à
taille de tampon EDNS demandée. Sur le serveur lui-même, la taille du tampon EDNS doit être définie sur 1232 1232 octets. Les résolveurs ont à peu près les mêmes exigences - capacité obligatoire de répondre via TCP, prise en charge obligatoire de l'envoi de requêtes répétées via TCP lors de la réception d'une réponse UDP tronquée et définition du tampon EDNS sur XNUMX octets.

Les paramètres suivants sont responsables de la définition de la taille du tampon EDNS dans différents serveurs DNS :

  • BIND

    choix {
    edns-udp-taille 1232 ;
    taille max-udp 1232 ;
    };

  • DNS de noeud

    charge utile maximale-udp : 1232

  • Résolveur de nœuds

    net.bufsize(1232)

  • PowerDNS faisant autorité

    udp-troncation-seuil=1232

  • Récurseur PowerDNS

    edns-sortant-bufsize=1232
    udp-troncation-seuil=1232

  • Non lié

    taille du tampon edns : 1232

  • NSD

    taille ipv4-edns : 1232
    taille ipv6-edns : 1232

    Source: opennet.ru

  • Ajouter un commentaire