Perché i nostri record DNS non si stanno propagando su Internet?


22

Eseguiamo i server dei nomi per il nostro dominio sulla nostra rete. Usiamo bind / named. Chiamiamo il dominio example.com . Una cosa che ho notato di recente, quando vado su un sito web come http://network-tools.com ed eseguo query su URL definiti sui nostri server dei nomi, vedo le modifiche all'istante.

Ad esempio, se aggiungo una voce al nostro server DNS per l'URL funny.example.com e poi cerco quell'URL su http://network-tools.com , vedo immediatamente l'IP statico esterno corretto elencato per esso.

Ciò mi sta dicendo che ogni richiesta DNS relativa a example.com viene inviata direttamente ai nostri server DNS ogni volta.

I miei sospetti sono stati confermati all'inizio della settimana in cui i nostri server DNS sono andati in crash per un periodo molto breve. E durante quel periodo, se avessi usato http://network-tools.com per interrogare example.com o uno dei suoi sottodomini, avrei ottenuto zero risultati. Ovviamente è perché i server DNS erano inattivi e non potevano essere raggiunti.

Quindi questo mi porta alla mia domanda. Pensavo che le modifiche ai nostri server DNS dovessero propagarsi su Internet ad altri server DNS. In questo modo, se il nostro DNS si interrompe temporaneamente, altri server su Internet sanno ancora a cosa indica l' indirizzo IP example.com .

Sto fraintendendo questa roba DNS? I server DNS controllati da terze parti come i nostri non sono autorizzati a propagare le informazioni DNS ad altri server in rete?

Dove dovrei iniziare a indagare sul motivo per cui i cambiamenti non stanno andando là fuori? Posso vedere sul nostro firewall che il traffico della porta 53 sta arrivando correttamente ai nostri server DNS.

AGGIORNARE

  1. So che state dicendo che è impossibile pubblicare istantaneamente le impostazioni DNS, ma tutto ciò che so è questo: se apporto una modifica DNS sui nostri server DNS e poi lo controllo immediatamente su http: // network-tools. com , vedo immediatamente le modifiche.

  2. Se spengo i nostri server DNS e provo a controllare uno qualsiasi degli URL utilizzando http://network-tools.com , il sito non riesce a trovare nessuno degli URL. Ma se riporto online i server DNS, all'improvviso http://network-tools.com può trovare di nuovo gli URL ... Questo mi dice che i server NON memorizzano nella cache le nostre impostazioni DNS. Ho sbagliato? Inoltre, al momento le nostre impostazioni TTL sono impostate su 900 (15 minuti) e i nostri server DNS funzionano da oltre un anno. Quindi non è che i server DNS su Internet non abbiano ancora avuto la possibilità di memorizzarli nella cache. Il motivo è che i server non memorizzano nella cache le impostazioni perché il TTL è così basso al momento? Questo ha un senso se questo è il motivo.


7
Poiché jokerville.com è un vero nome di dominio registrato, a meno che non sia effettivamente il tuo dominio, utilizza example.cominvece: è ufficialmente riservato a tale scopo.
Mattdm,

9
Il motivo per cui network-tools.com sta vedendo immediatamente i cambiamenti è che si tratta di uno strumento di rete e NON E 'DELIBERAMENTE risultati nella cache. È uno strumento per guardare i tuoi nameserver, non un normale client DNS, quindi obbedisce a regole diverse.
Michael Kohne,

Risposte:


42

Sì, stai fraintendendo come funziona il DNS. Ho intenzione di usare un po 'di enfasi qui, ma per favore non essere offeso perché nessuno è previsto.

I REGISTRI DNS NON SONO PROPAGATI. SONO CACCIATI.

Detto questo, ecco una spiegazione semplificata di ciò che accade:

  1. Si crea un nuovo record DNS (A, CNAME, ecc.)

  2. Un utente remoto (in particolare un processo \ applicazione avviata dall'utente) tenta di accedere a un servizio a cui accede tramite quel record DNS (un browser Web che tenta di accedere al sito Web in esecuzione su funny.example.com per esempio)

  3. Il client DNS degli utenti invia una query DNS al suo server DNS, il server DNS quindi trova i tuoi server dei nomi (di solito attraverso una serie di query DNS ricorsive) e chiede loro le informazioni su funny.example.com

  4. I server dei nomi rispondono con le risposte

  5. Il server DNS degli utenti invia quindi queste informazioni all'utente (in particolare al risolutore client DNS degli utenti), che a sua volta restituisce le informazioni al processo \ applicazione. Queste informazioni vengono fornite con quello che viene chiamato TTL (Time To Live) che indica al risolutore del client DNS per quanto tempo queste informazioni possono essere conservate nella sua cache DNS (in memoria) e per quanto tempo possono essere considerate attuali e accurate

  6. Il risolutore client DNS dell'utente quindi scarica queste informazioni alla scadenza del TTL. Qualsiasi nuova richiesta per i record DNS in questione richiede una nuova ricerca DNS e il processo precedente si ripete.

Quindi il lungo e breve è questo:

I tuoi record DNS non si propagano. Nessun altro server DNS ha una copia dei record o delle zone DNS. Un client o un server DNS può memorizzare nella cache DNS le informazioni relative ai record o alle zone DNS (in base alle query DNS dei record e delle zone DNS). Queste informazioni vengono temporaneamente memorizzate nella cache e verranno rimosse dalla loro cache DNS alla scadenza del TTL.

Se i tuoi server dei nomi sono inattivi, solo quei client DNS che hanno uno dei tuoi record DNS nella loro cache saranno in grado di risolvere quei record DNS e solo fino alla scadenza del TTL. Inoltre, quando scade il TTL (che richiede un nuovo lokkup DNS), quei client DNS non saranno più in grado di risolvere i record DNS.


Buona spiegazione e posso aggiungere un esempio di protocollo in cui vi è propagazione (a differenza del DNS): BGP.
Bortzmeyer,

11

sarebbe di grande aiuto se ci dicessi il tuo vero nome di dominio, quindi potremmo rispondere alla tua domanda con riferimento alla tua configurazione attuale e segnalare eventuali guasti.

Tendo a fidarmi di http://dns.squish.net/ per diagnosticare rapidamente i problemi DNS. Questo ti dirà con certezza dove si trovano i tuoi problemi dopo aver apportato una modifica, fondamentalmente se la tua delega da upstream è corretta e i tuoi 2-3 server dei nomi danno tutti la stessa risposta e qualcuno non vede il nuovo record, dovranno solo attendere che la loro rete locale veda i cambiamenti. Se quel correttore ti dice che uno dei tuoi server non sta dando la stessa risposta degli altri, devi risolvere quel problema.

Non è possibile pubblicare istantaneamente le modifiche DNS: beh, puoi pubblicarle all'istante, ma il resto del mondo resterà indietro in base all'impostazione TTL di ciascun record, quindi ad esempio se hai impostato un record TTL di 86400 secondi ( un giorno) e fai una modifica, gli altri vedranno il vecchio record per un giorno intero, perché la loro cache locale non ti chiederà fino alla scadenza della loro copia del record.

Vorrei suggerire che prima di qualsiasi modifica DNS importante ridurre il TTL a 600 (10 minuti) per incoraggiare le cache su Internet a non conservare i vecchi record per molto tempo. Ma alcune cache lo ignoreranno o assumeranno 1 giorno o anche 1 settimana.

Una risposta sconclusionata a una domanda sconclusionata, spero che ci fosse qualcosa di utile in ciò.


1
+1. Per essere chiari, solo quei client DNS che hanno già le informazioni nella loro cache, per i quali il TTL non è scaduto, saranno interessati da una modifica. Eventuali nuove richieste, per le quali non sono presenti dati nella cache, verranno risolte immediatamente.
joeqwerty,

fyi: dead link - squish.net/dnscheck
Aaron Esau

8

Sì, il vecchio adagio "Le modifiche al DNS potrebbero richiedere 24-48 ore per propagarsi attraverso Internet" sarebbe più precisamente "Le modifiche al DNS potrebbero essere memorizzate nella cache su qualsiasi server DNS che ha richiesto questo record negli ultimi 86400 secondi".

Se si desidera garantire la ridondanza del DNS nel caso in cui il server non sia in linea, è necessario esaminare il servizio DNS di backup (come su dyndns.com) o creare il proprio NS secondario.


5

Tutti i server DNS su Internet sono "controllati da terze parti" (suppongo che potresti considerare i server DNS di root come in qualche modo "proprietari" di Internet, ma non c'è nemmeno alcun motivo tecnico per cui puoi creare la tua radice privata).

Il tuo server DNS fornisce un "time to live" (TTL) suggerito in ogni risposta che fornisce. I resolver remoti (altri server DNS che eseguono una risoluzione ricorsiva per client, librerie del resolver client, ecc.) Dovrebbero memorizzare nella cache la risposta fino a quel TTL prima di scartarla dalla loro cache.

Se non vedi cambiamenti che stai apportando ai record esistenti che si riflettono nelle query del mondo reale, probabilmente significa che i tuoi valori TTL sono abbastanza alti da non aspettare abbastanza a lungo da vedere le risposte esistenti scadere dal risolutore cache attorno alla 'rete.

Alcuni retroscena di Server Fault: Perché si chiama DNS "Propagation"?


2

Quando qualcuno (o qualche computer) là fuori su Internet, per così dire, desidera connettersi a uno dei tuoi computer, chiede al suo server dei nomi locale un indirizzo IP corrispondente al nome host a cui è interessato.

Quindi, se dici a qualcuno "ehi, dai un'occhiata al mio fantastico sito web http://www.example.com ", il computer dell'altro ragazzo chiederà al suo nameserver locale "ehi, qual è un indirizzo IP per www.example.com?"

Supponendo che il nameserver locale non abbia mai cercato prima la risposta a questa domanda, chiederà ai nameserver di root di scoprire quali server gestiscono le ricerche per ".com". Quando ottiene quella risposta, chiederà a quei server quali server gestiscono le ricerche per "esempio.com". Quando ottiene quella risposta, se chiederà a quei server un indirizzo IP per "www.esempio.com".

Quando i server per esempio.com rispondono con un indirizzo IP per www.esempio.com, daranno anche un suggerimento al nameserver richiedente su quanto tempo dovrebbe ricordare la risposta a questa domanda. Quel suggerimento si chiama "TTL", o "tempo di vivere", e viene misurato in secondi. Non vi è alcuna garanzia che qualsiasi server presterà attenzione al TTL: alcuni server dei nomi potrebbero essere configurati in modo da non ricordare mai le risposte alle ricerche e ripetere sempre il processo anche se richiesto più volte al secondo. Altri server dei nomi possono essere configurati per mantenere la risposta per lungo tempo, anche se hai suggerito di conservare i dati solo per un breve periodo, forse perché vogliono ridurre al minimo il traffico di rete. Il TTL è solo un suggerimento, non un requisito o una garanzia.

La risposta letterale alla tua domanda - perché i tuoi record DNS non si stanno propagando su Internet - è che non lo stanno facendo perché non dovrebbero.

Inoltre, se stai guardando le tue informazioni DNS utilizzando un sito progettato per ricercare o eseguire il debug delle informazioni DNS, è probabile che il sito non memorizzerà i dati nella cache a lungo o affatto, indipendentemente dal suggerimento TTL, perché l'obiettivo del sito è probabilmente quello di fornire informazioni su ciò che dice il sistema DNS A DESTRA, non 5 o 50 o 500 secondi fa. Questo è il motivo per cui le modifiche si riflettono immediatamente e perché il servizio smette di funzionare non appena si disconnettono i server dei nomi.

Sospetto che la tua domanda di fondo potrebbe essere "come posso impostare le cose in modo che se il mio server DNS si riavvia o il suo disco rigido si spegne, altre persone su Internet saranno ancora in grado di vedere le mie pagine web?"

La risposta a questa domanda è configurare diversi nameserver per il tuo dominio e farli funzionare su macchine diverse - idealmente, non solo con diversi computer fisici, ma con connessioni di rete diverse, forse anche in diverse città o stati o paesi o continenti. La maggior parte di questi server dei nomi verrà configurata come "schiava", il che significa che cerca un server dei nomi "principale" per le proprie informazioni, quindi ripete tali informazioni a chiunque richieda loro dei dati.

Quindi, nei tuoi dati WHOIS con il tuo registrar di nomi di dominio, potresti configurare quattro nameserver per il tuo dominio:

ns1.example.com ns2.example.com ns1.otherguy.com ns2.otherguy.com

dove ns1.example.com è il tuo server DNS attuale. ns2.example.com potrebbe essere un altro computer nella tua azienda / organizzazione - idealmente non sulla stessa sottorete e nello stesso rack di server (o sotto lo stesso desk del tipo) di ns1.example.com.

ns1.example.com verrà considerato il server "master" e quando si desidera modificare il DNS, si effettueranno le modifiche su quella macchina.

ns2.example.com verrà configurato come un server "slave", che copia semplicemente tutti i dati che hai impostato su ns1.example.com - ma al mondo esterno non importa della distinzione master / slave, ns2.example .com sarà considerato "ufficiale" come ns1.example.com.

ns1.otherguy.com e ns2.otherguy.com sono macchine che sono installate altrove - forse fai un accordo con un amico / collega di un'altra organizzazione per gestire i nameserver l'uno per l'altro, o forse ti configura con dyndns.com o everydns.net o uno qualsiasi degli altri provider DNS gratuiti o commerciali. Indipendentemente dal fatto che tu lo risolva, ottieni quelle macchine configurate come slave, in modo che estraggano le informazioni DNS per example.com da ns1.example.com (il tuo "master") e forniranno tali informazioni DNS a qualsiasi macchina sul Internet che lo richiede.

Una volta che il registrar del tuo dominio pubblica i nuovi record NS per il tuo dominio (che dovrebbe essere approssimativamente istantaneamente), quando qualcuno su Internet chiede quale server dei nomi di dominio gestisce "example.com", otterrà quattro risposte:

ns1.example.com, ns2.example.com, ns1.otherguy.com, ns2.otherguy.com

A seconda di come è impostato il nameserver dell'altro ragazzo, potrebbe trattare quei quattro come un elenco e chiedere loro uno alla volta come raggiungere "www.example.com" - oppure potrebbe porre a tutti e quattro la stessa domanda al allo stesso tempo, e basta prendere la risposta da qualunque macchina risponde per prima. In ogni caso, se ns1.example.com è inattivo perché il disco rigido è morto o hai deciso di riavviare o altro, le altre 3 macchine saranno disponibili per rispondere alla domanda e il tuo sito Web continuerà a essere visibile.

Il modo più semplice per risolvere questo problema è iscriversi a un fornitore di servizi DNS che gestirà il DNS per il tuo dominio: il prezzo varia da gratuito a migliaia (probabilmente anche decine o centinaia di migliaia) di dollari al mese, a seconda del livello di servizio desiderato. È possibile ottenere un servizio ragionevolmente affidabile per circa $ 30 / anno. I servizi gratuiti non sono orribili e, quindi, hanno un ottimo rapporto qualità-prezzo, ma se dipendi dal tuo sito web per fare soldi, dovresti riuscire a trovare $ 30 per un anno di DNS .

Quindi, segui le istruzioni del fornitore di servizi DNS per modificare i record NS nel registrar del tuo nome di dominio e sarai pronto.


0

La memorizzazione nella cache eseguita da altri server DNS dipende dal TTL assegnato alla registrazione. Nel tuo caso, il TTL è molto basso o alto. Potresti fornirci ulteriori informazioni sulla tua configurazione DNS?

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.