Un server dei nomi potrebbe risolvere gli indirizzi IP in modo dinamico sulla base di una strategia?


11

Abbiamo registrato alcuni server dei nomi per la risoluzione DNS per il nostro sito Web distribuito in diversi data center.

La nostra attuale strategia di risoluzione DNS è che in base ai diversi indirizzi IP client, il server dei nomi restituirà indirizzi IP diversi per lo stesso dominio. Ad esempio, se l'indirizzo IP del client proviene dal Nord America, il server dei nomi restituirà un indirizzo IP che è l'indirizzo IP del nostro data center del Nord America.

Ma l'indirizzo IP del client a volte non è il vero indirizzo IP degli utenti. Può essere un indirizzo IP del DNS che appartiene a un ISP o un server proxy. D'altra parte, se uno dei nostri data center è inattivo, vogliamo che il nostro server dei nomi escluda quell'indirizzo IP che appartiene al data center in crash. Quindi speriamo di poter ottenere una strategia più dinamica per la nostra risoluzione DNS. C'è una soluzione per questo?


Questo suona come un caso per anycast.
Ron Maupin,

1
@RonMaupin Va notato che per eseguire qualsiasi trasmissione è necessario disporre di un'allocazione di blocco di indirizzi indipendente dal provider e, soprattutto, eseguire BGP per pubblicizzare i prefissi di ciascun datacenter. Questo è un livello completamente nuovo di operazioni e non qualcosa con cui molte aziende "orientate al contenuto" avrebbero esperienza. La soluzione basata su DNS sembra molto più semplice.
IPX,

@IPX, immagino che un'azienda con data center in tutto il mondo, come sembra nella domanda, avrà un indirizzo indipendente dal provider e un proprio numero AS. Con ciò, anycast è gratuito e facile.
Ron Maupin,

1
@RonMaupin se la società dell'OP stesse effettivamente gestendo più data center in tutto il mondo, allora sì, ma probabilmente non avrebbero posto una domanda relativamente semplice qui. Scommetto che semplicemente localizzano il proprio HW assunto o assunto in diversi data center commerciali e non si preoccupano / curano realmente delle operazioni di rete avanzate. Questo è quello che ho visto fare molte aziende di medie dimensioni per ridondanza. In tal caso, DNS è la risposta, non il routing .
IPX,

@IPX, ciò che spiego dalla domanda è che l'azienda ha data center in tutto il mondo e se un data center si arresta in modo anomalo, il traffico diretto dovrebbe essere indirizzato a un data center diverso (" se uno dei nostri data center è inattivo .. . "). Ho semplicemente risposto alla domanda come mi è stato chiesto, piuttosto che cercare di indovinare l'hosting di terze parti, e facciamo anche un po 'di quello, ma abbiamo ancora il nostro provider di indirizzamento indipendente e il numero AS utilizzati per scrutare con gli ISP. Ciò consente la negoziazione di contratti e la modifica dei provider di servizi Internet senza interruzioni di rete del reindirizzamento.
Ron Maupin,

Risposte:


16

Sembra che tu voglia uno qualsiasi. Questo è il tipo di cosa che usano siti come Google. Hai un unico indirizzo (risolto da DNS) per tutti i tuoi siti web e lasci che il protocollo di routing Internet (BGP) indirizzi gli utenti al sito più vicino (dal protocollo di routing). Se un sito non funziona, il sito più vicino successivo viene inserito automaticamente nella tabella di routing Internet da BGP.

L'esempio classico è 8.8.8.8per DNS. Si risolve in diverse posizioni in tutto il mondo e, se una posizione scende, passa alla successiva posizione più vicina.

La risposta non è DNS, è routing.


2
Anycast normalmente non è utile per i protocolli basati su TCP, poiché i pacchetti appartenenti alla stessa connessione possono andare su server diversi.
Paŭlo Ebermann,

2
@ PaŭloEbermann non è un problema quando lo fai con il routing BGP, poiché le rotte di solito non cambiano quando vengono annunciate (solo piccole modifiche)
Ferrybig

2
@ PaŭloEbermann È possibile eseguire qualsiasi trasmissione attraverso i bilanciatori di carico basati su DSR purché tutti i bilanciatori di carico concordino su come scegliere i backend.
Kasperd,

3
@ PaŭloEbermann, questo è un malinteso. Tutto il traffico proveniente da un host verrà indirizzato a un server, a meno che tale server non si spenga, quindi il traffico verrà indirizzato a un altro server. Sì, ciò interromperebbe la connessione TCP, ma ciò accadrebbe ogni volta che il server a cui sei connesso si interrompe. Anycast non è un tipo di cose round robin. Il routing è deterministico, quindi qualsiasicast è deterministico.
Ron Maupin,

2
@RonMaupin Il routing di Anycast non è stabile come si intende. E Google non usa alcuncast nel modo in cui stai dicendo. Se vuoi sapere come Google effettivamente fa questo dai un'occhiata a pagina 227 in The Site Reliability Workbook pubblicato da Google. In breve, il livello di bilanciamento del carico dietro qualsiasi routing di routing compensa le inevitabili modifiche del routing che altrimenti spezzerebbero le connessioni TCP.
Kasperd,

9

Ciò di cui hai bisogno è esattamente ciò che offre il servizio DNS di Amazon Route53 :

Non è necessario ospitare il tuo sito Web su AWS per poter utilizzare Route53, funzionerà felicemente con i servizi distribuiti su data center privati.

A meno che tu non sia un prezzo di Facebook o Google non dovrebbe essere un problema, a partire da $ 0,40 per milione di richieste (vedi dettagli sui prezzi ).

Spero possa aiutare :)


Hai mai usato prodotti non Amazon per questo?
pulcini,

@chicks no, non l'ho fatto. Tendo sempre a utilizzare lo strumento migliore per il lavoro e Route53 si adatta al conto nella maggior parte dei casi. Tuttavia, se utilizzi Google come "geo dns service" otterrai alcune opzioni. Ne ho rapidamente visti alcuni, ma sembrano piuttosto costosi (circa $ 50 al mese - molto più di quanto probabilmente spenderesti con AWS Route53).
MLu,

2
Vorrei ampliare un po 'di più la mia prospettiva prima di chiamare il primo strumento che ho trovato lo strumento migliore per la maggior parte dei casi. Route53 potrebbe essere il migliore per tutti, ma come faresti a sapere se non hai provato altro?
pulcini,

-1

Ho avuto questa idea e avevo iniziato a codificarla, ma non ho mai finito perché il bisogno è evaporato per primo.

Il server DNS ha i nomi host e gli indirizzi MAC di tutte le macchine sulla sua LAN e un modo per raggiungerli. Quando riceve una richiesta per una macchina che conosce, invia un ARP inverso per l'indirizzo IP dato l'indirizzo MAC e usa la risposta per costruire la risposta DNS.

Questo non ha nulla a che fare con ciò che stai cercando di fare, ma illustra il punto. In teoria un server DNS può essere codificato per eseguire qualsiasi nuovo schema si desideri risolvere i nomi in indirizzi IP.

La vera domanda sembra essere come ottenere l'indirizzo IP del cliente per decidere dove inviarlo. Questo è un piccolo problema di XY. Quello che vuoi davvero è l'ISP del cliente su cui geolocalizzare, e puoi ottenerlo facendolo direttamente dall'indirizzo IP che effettua la richiesta, supponendo che non sia 8.8.4.4 o qualche altro servizio di reindirizzamento DNS. A mio avviso, la migliore soluzione per i redirector DNS è ignorare il problema e fare una geolocalizzazione autonoma (ovvero dal server DNS provare a individuare l'indirizzo IP chiamante) e reindirizzare in modo appropriato. Vedi qui per geolocalizzazione: /programming/2574542/location-detecting-techniques-for-ip-addresses

Davvero non vuoi davvero nessuno streaming qui ma qualcosa di più sano. Anycast ha la proprietà fastidiosa è che può reindirizzare i pacchetti nel mezzo del flusso TCP causando confusione di massa.

Ron Maupin afferma che anycast è affidabile per TCP. Ecco il traceroute che mostra diversamente:

 3  cr1-rhe-a-be153.bb.as11404.net (174.127.183.14)  20.657 ms  20.763 ms  19.660 ms
 4  cr1-che-b-be-2.as11404.net (192.175.29.161)  22.550 ms  23.562 ms  23.538 ms
 5  * cr1-9greatoaks-hu-0-6-0-20-0.bb.as11404.net (192.175.28.108)  24.409 ms  38.083 ms
 6  72.14.222.146 (72.14.222.146)  40.038 ms  39.106 ms  39.125 ms
 7  108.170.242.225 (108.170.242.225)  37.930 ms 108.170.243.1 (108.170.243.1)  35.434 ms 108.170.242.225 (108.170.242.225)  33.694 ms
 8  209.85.240.249 (209.85.240.249)  33.476 ms 108.170.232.65 (108.170.232.65)  31.683 ms 108.170.234.155 (108.170.234.155)  30.754 ms
 9  google-public-dns-b.google.com (8.8.4.4)  30.491 ms  28.644 ms  25.718 ms

Se provi a geolocalizzare gli indirizzi IP a monte nel modo più ovvio che ottieni sono entrambi in Wichita. Questo non è corretto per cui basterà una semplice dimostrazione della fisica.

L'intervallo a 8.8.4.4 è misurato a 30ms di cui i primi 18ms sono la penalità locale (hop 3 è il router locale del mio ISP). La mia distanza da Wichita è di 1297 miglia. Il tempo minimo di andata e ritorno è quindi (1297 * 2 miglia / 225.000 chilometri al secondo (velocità della luce nel vetro)) che è 18,55 ms. Pertanto, non dovrei ottenere una risposta più veloce di 28 ms, ma ho ricevuto una risposta in 25 ms.

I pacchetti arrivano a Google da due diversi percorsi BGP. BGP non ha scelto il più vicino.



I commenti non sono per una discussione estesa; questa conversazione è stata spostata in chat .
Ward - Ripristina Monica

Ho spostato tutti i commenti per chattare, ma poiché ce ne sono stati tanti e alcuni sono stati spostati automaticamente, non sono sicuro che la chat successiva li abbia tutti. In ogni caso, un'ulteriore discussione sulla validità di questa risposta e su come funzionano i router, ecc., Non dovrebbe essere nei commenti, tenerlo in una delle chat room. Eventuali ulteriori commenti qui verranno eliminati.
Ward - Ripristina Monica

-2

Ciò di cui hai bisogno potrebbe essere raggiunto con una combinazione di DNS anycast e RFC-7871.


1
Maggiori dettagli migliorerebbero la tua risposta
Dave M,
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.