Cos’è un resolver DNS, e quale stai usando?
Un resolver DNS è il servizio a cui il tuo dispositivo chiede per primo quando ha bisogno di un indirizzo IP per un nome, e una singola ricerca di solito passa attraverso tre ruoli diversi: un resolver stub sulla tua stessa macchina, un resolver ricorsivo che fa la ricerca vera e propria, e i server autoritativi che detengono la risposta reale. La maggior parte delle persone configura solo il primo e non vede mai gli altri due direttamente.
Cosa succede quando il tuo dispositivo cerca un nome?
Il tuo sistema operativo non cerca un nome su internet da solo. Passa la richiesta a un piccolo software chiamato resolver stub, che non è affatto un nameserver. L’RFC 8499 lo definisce come un resolver "che non può eseguire da solo l’intera risoluzione" e dipende da un resolver ricorsivo per il lavoro vero e proprio. Il compito del resolver stub è inviare la tua query a qualunque server sia configurato nelle impostazioni di rete e restituire la risposta, o una copia recente già in cache.
Resolver stub, resolver ricorsivo, server autoritativo: qual è la differenza?
Tre ruoli compaiono in ogni ricerca, e lo stesso server fisico può ricoprirne più di uno:
- Resolver stub. Gira sul tuo dispositivo, inoltra le query, mantiene una piccola cache, e non può risolvere un nome da solo.
- Resolver ricorsivo. Secondo l’RFC 8499, "un resolver che agisce in modalità ricorsiva", cioè che fa tutto il lavoro di inseguire una risposta attraverso quanti server servano, poi la mette in cache e restituisce il risultato. Questo è il ruolo che ricopre il tuo provider internet o un servizio DNS pubblico.
- Server autoritativo. L’RFC 8499 lo definisce come un server che "conosce il contenuto di una zona DNS per conoscenza locale, e quindi può rispondere alle query su quella zona senza dover interrogare altri server". Questo è il server che il provider DNS del dominio stesso gestisce, e la sua risposta è quella che nessun altro sta copiando.
Un server che risponde con un rimando invece che con una risposta completa agisce in modo iterativo; uno che continua a lavorare finché non ha una risposta finale o un errore definitivo agisce in modo ricorsivo, che è ciò che significa "resolver ricorsivo" nel suo stesso nome.
Il percorso di una ricerca: i passaggi root, TLD e autoritativo
Una ricerca a freddo, con nulla in cache da nessuna parte, percorre una gerarchia fissa. Il resolver ricorsivo parte da un server radice, una delle tredici identità di server radice nominate che IANA elenca da a.root-servers.net a m.root-servers.net, e gli chiede example.com. Il server radice non conosce la risposta; restituisce un rimando ai server responsabili del dominio di primo livello .com. Il resolver ne interroga uno e ottiene un secondo rimando, questa volta ai nameserver autoritativi per example.com stesso, quelli che il proprietario del dominio ha configurato. Solo quest’ultimo server dà una risposta reale invece di un puntatore altrove. Il resolver ricorsivo la mette in cache e la restituisce al tuo resolver stub, che la passa al tuo browser.
Ogni passaggio dopo il primo viene saltato ogni volta che una cache lungo il percorso ha già la risposta, il che è il motivo per cui la stragrande maggioranza delle ricerche quotidiane non tocca mai un server radice.
Resolver del provider contro resolver pubblico: cosa cambia davvero?
Il resolver che il tuo dispositivo usa per impostazione predefinita di solito arriva dal DHCP, fornito dal tuo router o dal tuo provider, ed è quasi sempre un resolver ricorsivo che fa ricerche complete per tuo conto. Cosa fa con le tue query, quanto è grande la sua cache, e da quante postazioni opera è deciso da chi lo gestisce e non è qualcosa che puoi vedere dal tuo lato.
I resolver pubblici esistono come alternativa su cui puoi puntare il tuo dispositivo: Google Public DNS gira su 8.8.8.8, Cloudflare su 1.1.1.1, e Quad9 su 9.9.9.9. Ciascuno pubblica la propria politica su cosa registra e per quanto tempo la conserva, ciascuno gestisce la propria rete anycast così che lo stesso indirizzo risponda dalla postazione più vicina a te, e Quad9 blocca anche per impostazione predefinita i domini dannosi conosciuti a livello di resolver, cosa che un resolver del provider di solito non fa. Nulla di tutto ciò cambia cosa può fare il DNS in sé: un resolver decide solo come viene eseguita una ricerca, non cosa dicono i record di un dominio.
Quale resolver sta usando la tua macchina in questo momento?
Il resolver che stai effettivamente usando è un’impostazione, non un’ipotesi, e ogni sistema operativo ha un comando che lo mostra:
- Windows:
ipconfig /allelenca "DNS Servers" sotto ogni adattatore di rete, nell’ordine in cui vengono interrogati. - macOS:
scutil --dnsriporta la configurazione DNS attuale, inclusi i nameserver in vigore per ogni servizio di rete. - Linux con systemd-resolved:
resolvectl statusmostra, secondo il suo stesso manuale, "le impostazioni DNS globali e per collegamento attualmente in vigore", cioè sia il resolver di riserva sia ciò con cui una connessione specifica come il Wi-Fi o una VPN lo ha sovrascritto.
Una VPN, una rete aziendale o un’impostazione DNS sicuro propria del browser possono ciascuna sostituire un resolver diverso senza cambiare ciò che riporta il comando del sistema operativo, quindi se la risposta del comando non corrisponde a quello che ti aspetti, quello è il primo posto dove guardare.
Quale resolver risponde a una query può cambiare il risultato che vedi, non solo la velocità con cui lo ottieni: un resolver con una cache obsoleta, un’interruzione regionale, o una propria politica di filtraggio può restituire qualcosa di diverso da ciò che direbbero direttamente i server autoritativi. Esegui una ricerca con lo strumento di query DNS per confrontare, oppure se il resolver risponde lentamente piuttosto che in modo diverso, come risolvere una ricerca DNS lenta copre come misurarlo e cambiarlo. Se non risponde affatto, parti da server DNS non risponde. Per il comportamento di caching dietro tutto questo, vedi cos’è una cache DNS. HostTracker monitora siti web dal 2004, oggi osserva oltre 500.000 siti da più di 300 postazioni in 158 città, e può avvisare via email, SMS, chiamata vocale, Slack, Telegram e altro nel momento in cui un controllo che si aspetta un indirizzo IP specifico ne vede uno diverso.
Domande frequenti
Il mio router è un resolver DNS?
Spesso solo in un senso limitato. Molti router domestici eseguono un piccolo forwarder DNS: risponde da una cache minuscola, ma per qualsiasi cosa non ancora in cache passa la query direttamente al resolver del provider invece di fare la ricorsione completa da solo. L’RFC 2308 descrive questo ruolo come un forwarder, "un nameserver usato per risolvere le query invece di usare direttamente la catena dei nameserver autoritativi".
Usare un resolver pubblico rende più veloce la mia navigazione?
A volte sì, a volte no. Un resolver vicino a te con una cache calda risponde in millisecondi a una sola cifra a prescindere da chi lo gestisce. Le variabili principali sono quanto è vicina a te la postazione più vicina del resolver e quanto è già calda la sua cache, non il nome del marchio.
Qual è la differenza tra ricorsione e inoltro?
Un resolver che fa ricorsione interroga da solo il root, il TLD e i server autoritativi, un passaggio alla volta, e mette in cache il risultato finale. Un resolver che invece inoltra manda l’intera domanda a un altro resolver e aspetta una risposta completa, scambiando il lavoro, e la visibilità su cosa hai cercato, con qualunque cosa quel resolver a monte abbia già in cache.
Tutti e 13 i server radice girano su 13 macchine?
No. Ci sono tredici identità di server radice nominate, ma ognuna viene servita da molte macchine fisiche in tutto il mondo, così che una query venga instradata verso una copia vicina invece di attraversare un oceano ogni volta.
Due dispositivi sulla stessa rete possono usare resolver diversi?
Sì. Il router distribuisce un predefinito tramite DHCP, ma qualsiasi dispositivo può sovrascriverlo nelle proprie impostazioni di rete, e una VPN o l’impostazione DNS sicuro del browser possono sovrascriverlo di nuovo sopra quello. I comandi sopra mostrano sempre cosa sta usando quello specifico dispositivo in quel momento, non cosa intende la rete.