Un record DNS che cambierà frequentemente? [chiuso]


17

Come faccio a creare un record di dominio che può cambiare frequentemente?

Diciamo example.orgpunti a 203.0.113.0. Due minuti dopo deve indicare 198.51.100.0.

Saranno normali siti Web dietro al dominio ("normali" solo nel senso di accesso tramite browser Web comuni) ma con una durata molto breve. Il dominio punterà a un indirizzo per 3-4 ore al massimo prima che venga cambiato o spento. Non è necessario proteggere il server DNS da query frequenti.

Il mio approccio sarebbe quello di impostare TTL su 60 secondi e semplicemente cambiare il record quando si deve effettuare il passaggio. Nel peggiore dei casi, un utente dovrebbe attendere per un massimo di 60 secondi prima che un nuovo server sia accessibile.

In qualche modo non mi fido di questo ... Alcuni ISP o browser potrebbero ignorare o ignorare il TTL, no? Se è una preoccupazione valida quale sarebbe un TTL ragionevole aspettarsi?

Grazie!


9
Perché hai esattamente bisogno di questa capacità? Che tipo di "normale sito web" viene eseguito su un'infrastruttura che scompare dopo 3-4 ore? Ci sono soluzioni che vengono in mente, ma non è chiaro cosa stai facendo con le modifiche DNS veloci o quale comportamento ti aspetti durante le transizioni.
Michael - sqlbot,

@ Michael-sqlbot, "normale", nel senso che si tratta di un'applicazione web a cui si accede tramite browser, ma è lungi dall'essere un classico sito web. Una singola istanza dell'applicazione avrà effettivamente una durata di alcune ore. Voglio solo usare un pool condiviso di nomi di dominio per loro. Ho già ricevuto consigli per esaminare la tecnica di bilanciamento del carico. Ma poiché le istanze dell'applicazione non sono intercambiabili, non sono sicuro che sia applicabile.
Andrew8,

4
In base alla mia esperienza, i vagabondi di Internet rendono il DNS un candidato scarso per il "seguito del servizio". Mentre può funzionare sulla tua macchina, o anche sulla tua rete aziendale, o sulla banda larga traballante del tuo amico, sembra che in tutto il mondo ci siano alcuni clienti davvero terribili che prendono molti multipli del tuo TTL per notare qualsiasi cambiamento nel tuo DNS.
Ralph Bolton,

Perché non un failover IP invece?
giammin,

Risposte:


38

Questo si chiama Fast Flux DNS Records . Ed è in genere il modo in cui gli autori di malware nascondono i loro server di infrastruttura.

Mentre questo funzionerà per il tuo piano, non è il piano migliore. Probabilmente dovrai avere un server di riserva o più, online, e non fare quasi tutto il tempo. Solo quando si verifica un problema con il server principale, si passa al successivo.

Anche se hai un TTL di 1 minuto, molto probabilmente un record sarà valido per più di questo:

  1. Cache del browser

    I browser di solito memorizzano nella cache i record DNS per un periodo di tempo variabile. Firefox utilizza 60 secondi , Chrome utilizza anche 60 secondi , IE 3.xe versioni precedenti memorizzate nella cache per 24 ore , IE 4.xe versioni successive memorizzate nella cache per 30 minuti.

  2. Cache del sistema operativo

    Windows di solito non rispetterà il TTL . Un TTL per DND non è come il TTL per un pacchetto IPv4. È più un'indicazione di freschezza che un aggiornamento obbligatorio. Linux può avere nscd configurato per impostare il tempo che l'utente desidera, ignorando il TTL DNS. Ad esempio, può memorizzare nella cache voci per una settimana.

  3. Cache ISP

    Gli ISP possono (e alcuni lo faranno) utilizzare una cache aggressiva per ridurre il traffico. Non solo possono modificare TTL, ma memorizzare nella cache i record e restituirli ai client senza nemmeno chiedere ai server DNS upstream. Questo è più diffuso sugli ISP mobili, poiché cambiano il TTL in modo che i client mobili non si lamentino della latenza del traffico.

Un bilanciamento del carico è fatto per fare esattamente quello che vuoi. Con un bilanciamento del carico in atto, è possibile avere 2 o 4 o 10 server tutti online contemporaneamente, dividendo il carico. Se uno di questi non è in linea, il servizio non sarà interessato. La modifica dei record DNS comporta un tempo di inattività tra il momento in cui il server si spegne e il DNS viene modificato. Ci vorrà più di un minuto, perché è necessario rilevare i tempi di inattività, modificare i record e attendere la loro propagazione.

Quindi usa un bilanciamento del carico. È fatto per fare quello che vuoi e sai esattamente cosa aspettarti. Una configurazione DNS a flusso rapido avrà risultati contrastanti e incoerenti.


11
Anche così, usa un bilanciamento del carico. Avrai una disponibilità elevata, un pool flessibile, registri, molte metriche e statistiche, puoi dare la priorità a un server o all'altro e meno mal di testa.
TorioBR

4
Sì, è probabile che un terribile ISP da qualche parte impieghi ore o un'intera giornata a raccogliere le modifiche al DNS.
Robyn,

2
@Mehrdad A seconda di come lo definisci, lo fa. In Germania, se si dispone di una linea ADSL, è necessario autenticarsi tramite PPPoE e quindi viene assegnato un indirizzo IP dall'intervallo di accesso remoto. Fino a poco tempo fa (e su alcune linee, ancora), la tua connessione veniva interrotta dopo 24 ore, quindi dovevi ripetere il login (o il tuo CPE l'ha fatto per te).
glglgl

3
Per aggiungere al commento di @ glglgl: Il punto cruciale è che ti è stato assegnato un altro indirizzo IP ogni volta che hai effettuato nuovamente l'accesso. Questo comportamento era intenzionale: i provider volevano impedire agli utenti di eseguire server nei loro SOHO in quel modo.
Binarus,

1
@Binarus non solo, ma di solito un ISP con 2000 abbonati non ha 2000 IP nel proprio pool. Poiché non tutti i clienti saranno attivi contemporaneamente, non appena alcuni utenti si disconnettono, un altro può connettersi e acquisire lo stesso IP.
TorioBR

6

Il DNS e il suo funzionamento sono forse accompagnati da più incomprensioni, leggende, superstizioni e mitologia come qualsiasi aspetto dell'IT.

Anche quelli di noi che sanno che stiamo essenzialmente mentendo (o almeno drasticamente semplificando) quando parliamo di "propagazione" dei cambiamenti tendono ancora a usare il termine per descrivere qualcosa che è - contemporaneamente - estremamente semplice e diretto ... ma difficile da spiegare ... e non ha nulla a che fare con la propagazione in , ma tutto a che fare con la memorizzazione nella cache e la memorizzazione nella cache negativa, entrambe le quali sono una componente essenziale di come funziona il sistema (e, probabilmente, di come evita il collasso totale sotto il suo stesso peso) - essenzialmente il rovescio, l'opposto dell'attuale "propagazione", non la spinta.

Nonostante tutte le preoccupazioni e il tormento a mano sui brevi TTL, tendono a lavorare il più delle volte, al punto che potrebbe essere nel tuo interesse semplicemente provarli. A $ {day_job}, quando i nostri siti migrano da una "vecchia" piattaforma a una "nuova" piattaforma, spesso significa che stanno migrando in modo tale da non condividere nulla nell'infrastruttura. Il mio primo passo in una tale migrazione è far cadere il TTL a 60 anni abbastanza in anticipo rispetto al taglio in modo che il vecchio TTL abbia multipli multipli di se stesso da esaurire, dandomi una ragionevole garanzia che questi RR transitori con TTL brevi "si propagheranno ". Quando sono pronto per il taglio, riconfiguro il vecchio bilanciamento¹ per bloccare il traffico sul nuovo sistema - su Internet - in modo tale che il bilanciamento non stia più bilanciando più sistemi interni, ma invece sia "

Quindi taglio il DNS e guardo il nuovo bilanciamento e il vecchio.

Sono sempre piacevolmente sorpreso dalla rapidità con cui avviene la transizione. I holdout sembrano essere quasi sempre ragni di ricerca e siti di "controllo dello stato" di terze parti che si agganciano inspiegabilmente ai vecchi record.

Ma c'è uno scenario che si interrompe in modo prevedibile: quando le finestre del browser di un utente rimangono aperte, tendono ad agganciarsi all'indirizzo già scoperto e spesso persiste fino a quando tutte le finestre del browser non vengono chiuse.

Ma nella narrazione precedente, trovi la soluzione al problema: un "bilanciamento del carico" - in particolare e più precisamente, un proxy inverso - può essere il sistema a cui punta il tuo record DNS esposto.

Il proxy inverso quindi inoltra la richiesta all'indirizzo IP di destinazione corretto, che risolve utilizzando un secondo nome host "fittizio" con un breve TTL, che punta al vero server back-end .³ Perché il proxy onora sempre il TTL DNS su quello dummy DNS entry, hai la certezza di una commutazione rapida e completa.

Il lato negativo è che potresti instradare il traffico attraverso un'infrastruttura aggiuntiva non necessaria o pagare di più per il trasporto attraverso più confini della rete, in modo ridondante.

Esistono servizi che offrono questo tipo di funzionalità su scala globale e quello con cui ho più familiarità è CloudFront. (Molto probabilmente, Cloudflare avrebbe esattamente lo stesso scopo, dato che il piccolo amo dei test che ho fatto indica che si comporta anche correttamente, e sono sicuro che ce ne sono altri.)

Sebbene commercializzato principalmente come CDN, CloudFront è al centro una rete globale di proxy inversi con la possibilità di memorizzare nella cache le risposte opzionalmente . Se i www.example.compunti verso CloudFront e CloudFront sono configurati per inoltrare queste richieste backend.example.come il record DNS per backend.example.comutilizza un breve TTL, allora CloudFront farà la cosa giusta, perché onora quel breve TTL. Quando il record di back-end cambia, il traffico migrerà tutti entro il tempo di esaurimento del TTL.

Il TTL sul record del lato frontale che punta a CloudFront e se i browser e i risolutori della cache lo onorano non è importante, perché le modifiche alla destinazione back-end non richiedono cambiamenti nel www.example.comrecord ... quindi l'idea che "Internet" ha, per quanto riguarda il target corretto per www.example.comè coerente, indipendentemente da dove si trovi il sistema di back-end.

Questo, per me, risolve completamente il problema sollevando il browser da qualsiasi necessità di "seguire" le modifiche all'IP del server di origine.

TL; dr: indirizza le richieste a un sistema che funge da proxy per il vero server Web, in modo che solo la configurazione del proxy debba accogliere la modifica dell'IP del server di origine, non il DNS rivolto verso il browser.

Si noti che CloudFront minimizza anche la latenza da parte della magia DNS che impone sul lato anteriore, il che si traduce nella www.example.comrisoluzione della posizione del bordo CloudFront più ottimale in base alla posizione del browser che esegue la query www.example.com, quindi vi sono minime possibilità che il traffico segua un percorso inutilmente tortuoso dal browser al bordo all'origine ... ma questa parte è trasparente e automatica e al di fuori dell'ambito della domanda.

E, naturalmente, la memorizzazione nella cache dei contenuti può anche essere utile riducendo il carico sul server di origine o sul trasporto: ho configurato siti Web su CloudFront in cui il server di origine si trovava su un circuito ADSL e l'ADSL è intrinsecamente vincolato per la larghezza di banda a monte. Il server di origine in cui CloudFront si connette per recuperare il contenuto non deve essere un server all'interno dell'ecosistema AWS.


¹ Parlo del bilanciatore come una singola entità quando in realtà ha più nodi. Quando il bilanciamento è un ELB, una macchina dietro il bilanciamento funge da server di app fittizio e fa il vero tornante al bilanciamento della nuova piattaforma, poiché ELB non può farlo da solo.

² L'unica conoscenza del nuovo bilanciatore sul vecchio è che deve fidarsi dell'X-Forwarded-For del vecchio bilanciatore e che non deve applicare alcuna tariffa basata su IP che limiti gli indirizzi di origine del vecchio bilanciatore.

³ Quando il proxy è uno o più server che controlli, hai la possibilità di saltare usando il DNS sul retro e semplicemente usando gli indirizzi IP nella configurazione del proxy, ma lo scenario ospitato / distribuito discusso successivamente ha bisogno di quel secondo strato di DNS .


2
Grazie, come sempre, per un'altra grande risposta. "A $ {day_job}, quando i nostri siti migrano da una" vecchia "piattaforma a una" nuova "piattaforma, [...]": Sono stato lì, fatto. +1!
gf_

4

Quando cambio record DNS, spesso il vecchio indirizzo IP verrà utilizzato per mesi. Detto questo, ad esempio un TTL di soli pochi secondi è ciò che Amazon utilizza per creare un servizio di fallback.

Invece di modificare il DNS, è possibile inserire un server proxy / bilanciamento del carico.


1
Nei miei test TTL60 secondi sembrano funzionare la maggior parte delle volte, ma ho avuto alcuni clienti che hanno avuto un ritardo di circa 10-20 minuti.
Andrew8

1

È possibile esaminare l'utilizzo di DNS dinamico. Questo è progettato proprio per lo scenario che @glglgl ha menzionato in un commento sopra. Credo che utilizzino un TTL basso che, come sottolineato in precedenza, potrebbe non essere efficace al 100% poiché i clienti sono liberi di ignorarlo. Ma funziona "abbastanza bene".

Anche se non cambi frequentemente il tuo IP, è importante mantenere ragionevole il tuo TTL. Molti anni fa, la società con cui lavoravo per i provider di servizi Internet modificati che ha causato il cambiamento dei nostri IP. Sfortunatamente, abbiamo impostato il nostro TTL su qualcosa di ridicolo come un mese, quindi i vecchi record DNS sono stati conservati per molto tempo.


Esistono molti server DNS di livello ISP che non rispettano il TTL. Lavoro su un prodotto che cambia le informazioni DNS circa due volte l'anno. Abbiamo un sacco di persone che sono server DNS memorizzano nella cache le nostre vecchie informazioni per diverse settimane dopo che le abbiamo cambiate. A meno che tu non controlli il lato client, non contare sul fatto che funzioni bene.
Michael Gantz,
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.