"Bisogna aspettare la propagazione, ci vogliono fino a 48 ore." È la frase che si sente ogni volta che un cambio DNS non produce l'effetto atteso, e nella grande maggioranza dei casi non descrive quello che sta succedendo. Descrive un modo educato per chiedere di richiamare domani.
La propagazione DNS non è una nuvola che si diffonde lentamente nel mondo. È una cosa molto più semplice e molto più prevedibile: è la scadenza di una memoria.
Cosa succede davvero quando cambi un record
Nessun server "riceve" il tuo cambiamento. Non esiste un annuncio, non c'è una distribuzione.
Quello che c'è è questo: quando qualcuno chiede dove sta il tuo sito, il suo resolver — quello del suo provider, o quello che ha impostato — va a chiedere al tuo DNS, riceve una risposta, e la tiene in memoria per il tempo che tu hai indicato. Quel tempo è il TTL, e lo decidi tu, record per record.
Finché quella memoria non scade, il resolver risponde con il vecchio valore. Non perché non sappia, ma perché non ha ancora avuto motivo di richiedere.
Quindi la durata della "propagazione" è, per ogni singolo utente, al massimo il TTL che avevi impostato prima del cambio. Non quello che imposti dopo: dopo è troppo tardi, la memoria è già stata presa con il valore precedente.
La conseguenza pratica, che è tutta la storia
Se il TTL era di 24 ore, chi ha chiesto un minuto prima del tuo cambio vedrà il vecchio valore per quasi un giorno intero. Se era di cinque minuti, tutti sono allineati entro cinque minuti.
Ecco perché in una migrazione fatta bene i TTL si abbassano il giorno prima. Non è raffinatezza: è l'unica leva che hai. Abbassarli dopo aver cambiato non serve a niente, ed è l'errore che genera la frase sulle 48 ore.
Il resto della procedura discende da qui: si abbassa il TTL, si aspetta che il vecchio valore scada ovunque, si cambia, tutti si allineano in minuti, e dopo qualche giorno si rialza. È lo stesso motivo per cui un trasloco preparato non ha finestre di disservizio.
L'eccezione vera: cambiare i nameserver
C'è un caso in cui l'attesa lunga è reale, e va distinto.
Cambiare un record dentro la tua zona — il record del sito, un MX, un TXT — obbedisce al TTL di quel record e basta.
Cambiare i nameserver, cioè spostare l'intera zona a un altro gestore, è un'altra cosa: quel dato non sta nella tua zona, sta nel registro dell'estensione, e ha un TTL suo, deciso dal registro, tipicamente più lungo e che tu non controlli.
Per questo il passaggio a un nuovo gestore DNS si fa in due tempi: prima si ricostruisce la zona altrove identica a quella attuale, poi si cambiano i nameserver. Se le due zone sono identiche, non importa quale delle due risponde durante l'attesa — la risposta è la stessa, e nessuno si accorge di niente.
Come si controlla, invece di aspettare
Non serve fidarsi: si guarda. Tre cose dicono tutto.
Il TTL attuale del record, che si vede interrogando il DNS e che dice quanto manca perché la memoria scada.
La risposta autorevole, cioè quella che dà direttamente il tuo server DNS senza passare da nessuna memoria. Se lì il valore è già nuovo, il cambio è fatto: quello che resta è solo attesa, e ne conosci la durata esatta.
Le risposte dei grandi resolver pubblici, che si controllano da qualunque servizio di verifica DNS. Se il valore nuovo compare lì, sta comparendo ovunque.
Con questi tre dati non c'è più niente da indovinare: sai se hai cambiato bene e sai quanto manca.
Quando "è la propagazione" è una risposta sbagliata
Vale la pena riconoscere i casi in cui la spiegazione non regge, perché sono frequenti:
- il valore autorevole è ancora quello vecchio. Non è propagazione: il cambio non è stato salvato, o è stato fatto in una zona che non è quella attiva — capita quando il dominio ha nameserver diversi da quelli del pannello in cui stai lavorando;
- il sito torna a intermittenza. Non è propagazione: è la memoria del tuo browser o del sistema operativo, o due record che puntano a posti diversi;
- lo vedi tu ma non i clienti, o viceversa. È memoria locale: si verifica da una rete diversa, non ricaricando cinquanta volte;
- sono passate settimane. Nessun TTL dura settimane. Lì c'è un errore di configurazione, e continuare ad aspettare non lo risolverà.
In sintesi
La propagazione dura quanto il TTL che avevi impostato prima del cambio. Il numero non è un mistero: è un valore che puoi leggere in qualsiasi momento, e che potevi decidere il giorno prima.
Quando qualcuno dice "aspetta 48 ore" senza averti chiesto quale TTL avevi, non ti sta dando una diagnosi. Ti sta dando un rinvio.