Cos'è il DNS ricorsivo?

Nelle ricerche DNS, che abbinano i nomi di dominio agli indirizzi IP leggibili dalle macchine, il percorso lungo la struttura DNS può essere effettuato da un server DNS o da un client.

Obiettivi di apprendimento

Dopo aver letto questo articolo sarai in grado di:

  • Definire il DNS ricorsivo
  • Distinguere tra una query DNS ricorsiva e una iterativa
  • Comprendere i vantaggi e i rischi associati alle query DNS ricorsive

Argomenti correlati


Vuoi saperne di più?

Abbonati a theNET, il riepilogo mensile di Cloudflare sulle tematiche più discusse in Internet.

Fai riferimento all'Informativa sulla privacy di Cloudflare per scoprire come raccogliamo ed elaboriamo i tuoi dati personali.

Copia link dell'articolo

DNS gratuito compreso in qualsiasi piano Cloudflare

Cos'è il DNS ricorsivo?

Una ricerca DNS ricorsiva avviene quando un server DNS comunica con diversi altri server DNS per cercare un indirizzo IP e restituirlo al client. Questo è in contrasto con una query DNS iterativa, in cui il client comunica direttamente con ciascun server DNS coinvolto nella ricerca. Sebbene questa sia una definizione molto tecnica, uno sguardo più approfondito al sistema DNS e alla differenza tra ricorsione e iterazione dovrebbe aiutare a chiarire le cose.

Cos'è un server DNS?

Ogni volta che un utente digita un nome di dominio (ad esempio 'cloudflare.com') nella finestra del browser, questo attiva una ricerca DNS. Una serie di computer remoti, noti come server DNS, trovano quindi l'indirizzo IP di quel dominio e lo restituiscono al computer dell'utente in modo che possa accedere al sito Web corretto.

Per completare una ricerca DNS è necessario che diversi tipi di server DNS lavorino insieme. Un resolver DNS, un server root DNS, un server TLD DNS e un nameserver autoritativo DNS devono tutti fornire informazioni per completare la ricerca. Nel caso del caching, uno di questi server potrebbe aver salvato la risposta a una query durante una ricerca precedente e può quindi recapitarla dalla memoria.

Per maggiori informazioni sul funzionamento di una ricerca DNS, vedere Cos'è un server DNS?

Qual è la differenza tra ricorsione e iterazione?

Ricorsione e iterazione sono termini informatici che descrivono due metodi diversi per risolvere un problema. Nella ricorsione, un programma richiama ripetutamente se stesso finché non viene soddisfatta una condizione, mentre nell'iterazione, un insieme di istruzioni viene ripetuto finché non viene soddisfatta una condizione. Questa sottile differenza è difficile da illustrare senza entrare nel codice, ma il concetto chiave è che la ricorsione è una soluzione che fa ripetutamente ricorso a se stessa.

Immagina, ad esempio, che Jim abbia perso le chiavi di casa e stia cercando un modo sistematico per ritrovarle. Una soluzione ricorsiva sarebbe che Jim continuasse a cercare le chiavi finché non le trova. Jim inizierà a cercare e, se non troverà le chiavi, tornerà alle istruzioni iniziali e continuerà a cercare finché non le troverà. Una soluzione iterativa sarebbe che Jim cercasse in una stanza per cinque minuti, poi tornasse alle sue istruzioni e cercasse nella stanza successiva per altri cinque minuti, e continuasse questo ciclo finché non trovasse le chiavi o avesse esaminato l'intero elenco delle stanze da cercare.

Non è necessaria una conoscenza approfondita della ricorsione e dell'iterazione per comprendere la differenza tra ricerche DNS ricorsive e iterative: in una ricerca ricorsiva, un server DNS esegue la ricorsione e continua a interrogare altri server DNS finché non ottiene un indirizzo IP da restituire al client (spesso il sistema operativo di un utente). In una query DNS iterativa, ogni query DNS risponde direttamente al client con un indirizzo da richiedere a un altro server DNS e il client continua a interrogare i server DNS finché uno di essi non risponde con l'indirizzo IP corretto per il dominio specificato.

In altri termini, il client esegue una forma di delega in una query DNS ricorsiva. Dice al resolver DNS: "Mi serve l'indirizzo IP di questo dominio, per favore cercalo e non rispondermi finché non lo avrai". Nel frattempo, in una query iterativa, il client dice al resolver DNS: "Ho bisogno dell'indirizzo IP per questo dominio. Fammi sapere l'indirizzo del prossimo server DNS nel processo di ricerca in modo che possa cercarlo io stesso".

Quali sono i vantaggi del DNS ricorsivo?

Le query DNS ricorsive generalmente tendono a risolversi più velocemente delle query iterative. Ciò è dovuto al caching. Un server DNS ricorsivo memorizza nella cache la risposta finale a ogni query eseguita e salva tale risposta finale per un determinato periodo di tempo (noto come Time To Live, o TTL).

Quando un resolver ricorsivo riceve una query per un indirizzo IP già presente nella sua cache, può fornire rapidamente la risposta memorizzata nella cache al client senza comunicare con altri server DNS. È molto probabile che le risposte fornite dalla cache vengano fornite rapidamente se a) il server DNS serve molti client e/o b) il sito Web richiesto è molto popolare.

Quali sono gli svantaggi del DNS ricorsivo?

Sfortunatamente, consentire query DNS ricorsive su server DNS aperti crea una vulnerabilità di sicurezza, poiché questa configurazione può consentire agli aggressori di eseguire attacchi di amplificazione DNS e DNS cache poisoning.

Server DNS ricorsivi e attacchi di amplificazione DNS

In un attacco di amplificazione DNS, un aggressore in genere utilizza un gruppo di macchine (noto come botnet) per inviare un volume elevato di query DNS utilizzando un indirizzo IP falsificato. Un indirizzo IP falsificato è come un indirizzo di risposta contraffatto: l'aggressore invia richieste dal proprio IP, ma chiede che le risposte vengano inviate alla vittima. Per aggravare l'attacco, il malintenzionato utilizza anche una tecnica chiamata amplificazione, in cui la richiesta falsificata richiede una risposta molto lunga. Il servizio vittima riceverà una valanga di risposte DNS lunghe e indesiderate che potrebbero interrompere o addirittura mandare in tilt i suoi server. Questo è un tipo di attacco DDoS.

È un po' come se un gruppo di adolescenti burloni chiamasse una pizzeria e ordinasse una dozzina di pizze ciascuno. Invece di fornire il proprio indirizzo per la consegna, forniscono l'indirizzo di un vicino ignaro. La vittima, che riceve una valanga di consegne di pizze indesiderate e di grandi dimensioni, probabilmente subirà notevoli sconvolgimenti nella sua giornata.

Per eseguire questo tipo di attacco è necessario un server DNS che accetti query ricorsive, perché i pacchetti DNS amplificati sono risposte a query DNS ricorsive.

Server DNS ricorsivi e attacchi DNS cache poisoning

In un attacco DNS cache poisoning, quando un server DNS ricorsivo richiede un indirizzo IP da un altro server DNS, un aggressore intercetta la richiesta e fornisce una risposta falsa, che spesso è l'indirizzo IP di un sito Web dannoso. Il server DNS ricorsivo non solo invia questo indirizzo IP al client originale, ma salva anche la risposta nella sua cache. Qualsiasi utente che richieda un IP per lo stesso nome di dominio verrà indirizzato al sito Web dannoso. Se si tratta di un nome di dominio popolare e di un resolver DNS popolare, questo attacco potrebbe colpire migliaia di utenti.

In una query DNS iterativa, il client chiede direttamente la risposta a ciascun server DNS. Anche se un aggressore riuscisse a inviare una risposta contraffatta alla query, ciò avrebbe effetto solo su un singolo client, il che generalmente non vale la pena per l'aggressore di perdere tempo.

Come supportare query DNS veloci e sicure

Il servizio DNS gestito da Cloudflare generalmente risolve le query DNS più velocemente rispetto ai DNS della concorrenza o ai DNS pubblici. Inoltre, Cloudflare DNS supporta DNSSEC, un rigoroso protocollo di sicurezza progettato per proteggere i server DNS e le query.