Iniziativa DNS Flag Day 2020 per affrontare i problemi di frammentazione e supporto TCP

Oggi, numerosi grandi servizi DNS e produttori di server DNS terranno un evento congiunto Giorno della bandiera DNS 2020progettato per focalizzare l'attenzione la decisione проблем con frammentazione IP durante l'elaborazione di messaggi DNS di grandi dimensioni. Questo è il secondo evento del genere, lo scorso anno il “DNS flag day” era concentrato sul corretto trattamento delle richieste EDNS.

I partecipanti all'iniziativa DNS Flag Day 2020 chiedono che le dimensioni del buffer consigliate per EDNS siano fissate a 1232 byte (dimensione MTU 1280 meno 48 byte per le intestazioni), nonché tradurre l'elaborazione delle richieste tramite TCP è una funzionalità indispensabile sui server. IN RFC 1035 Solo il supporto per l'elaborazione delle richieste tramite UDP è contrassegnato come obbligatorio e TCP è elencato come auspicabile, ma non richiesto per il funzionamento. Nuovo RFC 7766 и RFC 5966 elencare esplicitamente TCP come funzionalità richiesta per il corretto funzionamento del DNS. L'iniziativa propone di forzare la transizione dall'invio di richieste tramite UDP all'utilizzo di TCP nei casi in cui la dimensione del buffer EDNS stabilita è insufficiente.

Le modifiche proposte elimineranno la confusione nella scelta della dimensione del buffer EDNS e risolveranno il problema della frammentazione di messaggi UDP di grandi dimensioni, la cui elaborazione spesso porta alla perdita di pacchetti e al timeout sul lato client. Sul lato client, la dimensione del buffer EDNS sarà costante e le risposte di grandi dimensioni verranno inviate immediatamente al client tramite TCP. Evitare l'invio di messaggi di grandi dimensioni tramite UDP risolverà anche i problemi relativi alla caduta di pacchetti di grandi dimensioni su alcuni firewall e consentirà il blocco атаки per avvelenare la cache DNS, basato sulla manipolazione di pacchetti UDP frammentati (se suddiviso in frammenti, il secondo frammento non include un'intestazione con un identificatore, quindi può essere contraffatto, per il quale è sufficiente che corrisponda solo il checksum) .

A partire da oggi, i provider DNS partecipanti tra cui CloudFlare, Quad 9, Cisco (OpenDNS) e Google, cambierà gradualmente Dimensione del buffer EDNS da 4096 a 1232 byte sui suoi server DNS (la modifica EDNS sarà distribuita su 4-6 settimane e coprirà un numero crescente di richieste nel tempo). Le risposte alle richieste UDP che non rientrano nel nuovo limite verranno inviate tramite TCP. I fornitori di server DNS tra cui BIND, Unbound, Knot, NSD e PowerDNS rilasceranno aggiornamenti per modificare la dimensione del buffer EDNS predefinita da 4096 byte a 1232 byte.

In definitiva, queste modifiche possono portare a problemi di risoluzione quando si accede a server DNS le cui risposte DNS UDP superano i 1232 byte e non possono inviare una risposta TCP. Un esperimento condotto presso Google ha dimostrato che la modifica della dimensione del buffer EDNS non ha praticamente alcun effetto sul tasso di errore: con un buffer di 4096 byte, il numero di richieste UDP troncate è dello 0.345% e il numero di tentativi irraggiungibili su TCP è dello 0.115%. Con un buffer di 1232 byte, queste cifre sono 0.367% e 0.116%. Rendere il supporto TCP una funzionalità DNS richiesta causerà problemi con circa lo 0.1% dei server DNS. Si noti che nelle condizioni moderne, senza TCP, il funzionamento di questi server è già instabile.

Gli amministratori di server DNS autorevoli dovrebbero assicurarsi che il loro server risponda tramite TCP sulla porta di rete 53 e che questa porta TCP non sia bloccata da un firewall. Inoltre, un server DNS affidabile non dovrebbe inviare risposte UDP di dimensioni superiori a
dimensione del buffer EDNS richiesta. Sul server stesso, la dimensione del buffer EDNS deve essere impostata su 1232 byte. I risolutori hanno approssimativamente gli stessi requisiti: capacità obbligatoria di rispondere tramite TCP, supporto obbligatorio per l'invio di richieste ripetute tramite TCP quando si riceve una risposta UDP troncata e impostazione del buffer EDNS su 1232 byte.

I seguenti parametri sono responsabili dell'impostazione della dimensione del buffer EDNS in diversi server DNS:

  • BIND

    opzioni {
    edns-udp-dimensione 1232;
    dimensione massima udp 1232;
    };

  • Nodo DNS

    carico utile massimo udp: 1232

  • Risolutore di nodi

    net.bufsize(1232)

  • PowerDNS autorevole

    Soglia-troncamento-udp=1232

  • Ricorso PowerDNS

    edns-outgoing-bufsize=1232
    Soglia-troncamento-udp=1232

  • Unbound

    dimensione buffer edns: 1232

  • NSD

    dimensione ipv4-edns: 1232
    dimensione ipv6-edns: 1232

    Fonte: opennet.ru

  • Aggiungi un commento