Iniziativa DNS flag day 2020 per affrontare i problemi di frammentazione e supporto TCP

Oggi un gruppo di importanti servizi DNS e produttori di server DNS parteciperà a un evento congiunto DNS flag day 2020, finalizzato a concentrare l'attenzione su come risolvere di problemi con la frammentazione degli IP durante l'elaborazione di messaggi DNS di grandi dimensioni. Questo è il secondo evento simile, l'anno scorso si è tenuto il "DNS flag day" era incentrato sull'elaborazione corretta delle richieste EDNS.

I partecipanti all'iniziativa DNS flag day 2020 chiedono di fissare le dimensioni raccomandate dei buffer per EDNS a valori attorno a 1232 byte (dimensione MTU 1280 meno 48 byte per gli header), e inoltre di rendere obbligatoria l'elaborazione delle richieste tramite TCP come requisito obbligatorio sui server. Nel RFC 1035 è obbligatoria solo la supporto per l'elaborazione delle richieste tramite UDP, mentre TCP è indicato come desiderabile ma non obbligatorio. Le nuove RFC 7766 e RFC 5966 considerano esplicitamente TCP tra le funzionalità obbligatorie necessarie per il corretto funzionamento di DNS. Nell'ambito dell'iniziativa proposta, si suggerisce di 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 elimineranno la confusione nella scelta della dimensione del buffer EDNS e risolveranno il problema della frammentazione di grandi messaggi UDP, il cui trattamento porta spesso a perdita di pacchetti e timeout sul lato client. Lato client, la dimensione del buffer EDNS sarà costante e le risposte grandi verranno immediatamente inviate 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 e permetterà di bloccare attacchi l'avvelenamento della cache DNS, basato sulla manipolazione dei pacchetti UDP frammentati (nella suddivisione in frammenti, il secondo frammento non include l'intestazione con l'identificatore, quindi può essere falsificato semplicemente per far corrispondere il checksum).

A partire da oggi, i fornitori di DNS partecipanti all'iniziativa, tra cui 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 si estenderà su un periodo di 4-6 settimane e col tempo coinvolgerà un numero crescente di richieste). Le risposte alle richieste UDP che superano il nuovo limite verranno inviate tramite TCP. I produttori di server DNS, tra cui BIND, Unbound, Knot, NSD e PowerDNS, rilasceranno aggiornamenti con la modifica della dimensione del buffer EDNS di default da 4096 a 1232 byte.

In definitiva, le modifiche introdotte possono portare a problemi di risoluzione quando si contattano i server DNS, le cui risposte DNS tramite UDP superano i 1232 byte e non possono inviare risposte tramite TCP. Un esperimento condotto da Google ha mostrato che la modifica della dimensione del buffer EDNS non influirà praticamente sul livello di fallimenti: con un buffer di 4096 byte, il numero di richieste UDP troncate è dello 0,345%, e il numero di risposte TCP irraggiungibili è dello 0,115%. Con un buffer di 1232 byte, questi valori diventano lo 0,367% e lo 0,116%. La trasformazione del supporto TCP in una funzionalità obbligatoria del DNS porterà a problemi nell'interazione con circa lo 0,1% dei server DNS. Si rileva che nelle attuali condizioni, senza TCP, l'operatività di questi server è già instabile.

Gli amministratori dei server DNS autoritativi devono accertarsi che il loro server risponda tramite TCP sulla porta di rete 53 e che questa porta TCP non sia bloccata da firewall. Un server DNS autoritativo non deve inoltre inviare risposte UDP di dimensioni superiori
alla dimensione del buffer EDNS richiesta. Sul server stesso, la dimensione del buffer EDNS deve essere impostata a 1232 byte. I resolver sono soggetti a requisiti simili: è obbligatoria la possibilità di rispondere tramite TCP, il supporto obbligatorio per inviare richieste ripetute tramite TCP in caso di ricezione di una risposta UDP troncata e l'impostazione del buffer EDNS a 1232 byte.

Le seguenti impostazioni sono responsabili della configurazione della dimensione del buffer EDNS su 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