L'iniziativa DNS flag day 2020 per risolvere problemi di frammentazione e supporto TCP

Oggi diversi grandi servizi DNS e produttori di server DNS parteciperanno a un evento congiunto DNS flag day 2020, aimed at focusing attention on the solution di problemi sulla frammentazione IP nella gestione di messaggi DNS di grandi dimensioni. Questo è il secondo evento di questo tipo; lo scorso anno si è svolto il «DNS flag day» che si è concentrato sulla corretta gestione delle richieste EDNS.

I partecipanti all'iniziativa DNS flag day 2020 invitano a fissare le dimensioni dei buffer raccomandate per EDNS a un valore di 1232 byte (dimensione MTU 1280 meno 48 byte per gli header), e inoltre tradurre a rendere obbligatoria la gestione delle richieste TCP sui server. Nella RFC 1035 è obbligatoria solo la gestione delle richieste UDP, mentre il TCP è indicato come desiderabile, ma non necessario per il funzionamento. Le nuove RFC 7766 e RFC 5966 classificano esplicitamente il TCP tra le funzionalità obbligatorie necessarie per un funzionamento corretto del DNS. Nell'ambito dell'iniziativa proposta, si intende forzare il passaggio dall'invio di richieste tramite UDP all'uso di TCP nei casi in cui la dimensione del buffer EDNS non sia sufficiente.

Le modifiche proposte eliminano la confusione nella scelta della dimensione del buffer EDNS e risolvono il problema della frammentazione dei grandi messaggi UDP, il cui trattamento spesso porta a perdita di pacchetti e timeout lato client. Lato client, la dimensione del buffer EDNS sarà costante e le risposte di grandi dimensioni saranno inviate immediatamente al client tramite TCP. L'esclusione dell'invio di grandi messaggi tramite UDP risolverà anche i problemi di scarto di grandi pacchetti su alcuni firewall, permettendo to block di attacco per la manipolazione della cache DNS, che si basa sulla manipolazione di pacchetti UDP frammentati (quando viene suddiviso in frammenti, il secondo frammento non include l'intestazione con l'identificatore, quindi può essere falsificato a condizione che la somma di controllo corrisponda).

A partire da oggi, i provider DNS partecipanti all'iniziativa, inclusi CloudFlare, Quad 9, Cisco (OpenDNS) e Google, cambieranno gradualmente la dimensione del buffer EDNS da 4096 a 1232 byte sui loro server DNS (la modifica di EDNS sarà estesa su 4-6 settimane e colpirà progressivamente un numero crescente di richieste). Le risposte alle richieste UDP che non rispettano il nuovo limite saranno inviate tramite TCP. I produttori di server DNS, inclusi BIND, Unbound, Knot, NSD e PowerDNS, rilasceranno aggiornamenti che modificheranno la dimensione del buffer EDNS predefinita da 4096 a 1232 byte.

In definitiva, le modifiche apportate possono causare problemi di risoluzione quando si interagisce con server DNS i cui riscontri DNS tramite UDP superano i 1232 byte e che non possono inviare risposte tramite TCP. Un esperimento condotto da Google ha mostrato che la modifica delle dimensioni del buffer EDNS ha un impatto trascurabile sul tasso di fallimento: con un buffer di 4096 byte, il numero di richieste UDP troncate è dello 0,345%, e il numero di risposte ripetute non raggiungibili via TCP è dello 0,115%. Con un buffer di 1232 byte, questi valori sono rispettivamente dello 0,367% e dello 0,116%. La conversione del supporto TCP in obbligatorio per DNS porterà a problemi con circa lo 0,1% dei server DNS. È da notare che in condizioni moderne, senza TCP, l'operatività di questi server è già instabile.

Gli amministratori dei server DNS autorevoli devono assicurarsi che il loro server risponda via TCP sulla porta di rete 53 e che questa porta TCP non sia bloccata dal firewall. Un server DNS autorevole non dovrebbe anche inviare risposte UDP che superano
dimensione del buffer EDNS richiesta. Sul server, la dimensione del buffer EDNS deve essere impostata a 1232 byte. I resolver devono soddisfare requisiti simili: capacità obbligatoria di risposta via TCP, supporto obbligatorio per l'invio di richieste ripetute via TCP in caso di risposta UDP troncata e impostazione del buffer EDNS a 1232 byte.

Le seguenti impostazioni riguardano la configurazione della dimensione del buffer EDNS nei vari server DNS:

  • 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

    Fonte: opennet.ru

  • Acquista hosting affidabile per siti web con protezione DDoS, VPS VDS server 🔥 Acquista hosting affidabile per siti web con protezione DDoS, VPS VDS server | ProHoster