Wir haben einige Nameserver für die DNS-Auflösung für unsere Website registriert, die in mehreren Rechenzentren bereitgestellt wird.
Unsere derzeitige Strategie der DNS-Auflösung besteht darin, dass der Nameserver basierend auf den verschiedenen Client-IP-Adressen unterschiedliche IP-Adressen für dieselbe Domäne zurückgibt. Wenn die Client-IP-Adresse beispielsweise aus Nordamerika stammt, gibt der Nameserver eine IP-Adresse zurück, die die IP-Adresse unseres Rechenzentrums in Nordamerika ist.
Die Client-IP-Adresse ist jedoch manchmal nicht die tatsächliche IP-Adresse der Benutzer. Dies kann eine IP-Adresse von DNS sein, die einem ISP oder einem Proxyserver gehört. Wenn andererseits eines unserer Rechenzentren ausgefallen ist, möchten wir, dass unser Nameserver die IP-Adresse ausschließt, die zum abgestürzten Rechenzentrum gehört. Wir hoffen daher, dass wir eine dynamischere Strategie für unsere DNS-Lösung erhalten können. Gibt es dafür eine Lösung?
Antworten:
Es hört sich so an, als ob Sie Anycast wollen. So etwas verwenden Websites wie Google. Sie haben eine einzige Adresse (durch DNS aufgelöst) für alle Ihre Websites und lassen das Internet-Routing-Protokoll (BGP) die Benutzer zur nächstgelegenen Site (nach dem Routing-Protokoll) leiten. Wenn eine Site ausfällt, wird die nächstgelegene Site automatisch von BGP in die Internet-Routing-Tabelle aufgenommen.
Das klassische Beispiel ist
8.8.8.8
für DNS. Es wird an verschiedenen Orten auf der ganzen Welt aufgelöst. Wenn ein Ort ausfällt, wird es an den nächstgelegenen Ort weitergeleitet.Die Antwort lautet nicht DNS, sondern Routing.
quelle
Was Sie brauchen, ist genau das , was der Amazon Route53 DNS-Dienst bietet:
Latenzbasiertes Routing - Leiten Sie Endbenutzer in die AWS-Region, die die geringstmögliche Latenz bietet.
Geo-DNS - Leiten Sie Endbenutzer an einen bestimmten Endpunkt weiter, den Sie basierend auf dem geografischen Standort des Endbenutzers angeben.
Integritätsprüfungen und Failover - Amazon Route 53 kann den Zustand und die Leistung Ihrer Anwendung sowie Ihrer Webserver und anderer Ressourcen überwachen.
... und viele weitere erweiterte DNS-Funktionen .
Sie müssen Ihre Website nicht auf AWS hosten, um Route53 verwenden zu können. Sie funktioniert problemlos mit Diensten, die in privaten Rechenzentren bereitgestellt werden.
Sofern Sie kein Facebook- oder Google-Anbieter sind, sollte die Preisgestaltung ebenfalls kein Problem sein, beginnend mit 0,40 USD pro Million Anfragen (siehe Preisdetails ).
Ich hoffe, das hilft :)
quelle
Ich hatte diese Idee und hatte begonnen, sie zu codieren, war aber nie fertig, da der Bedarf zuerst verflogen war.
Der DNS-Server verfügt über die Hostnamen und MAC-Adressen aller Computer in seinem LAN und über eine Möglichkeit, diese zu erreichen. Wenn es eine Anforderung für einen Computer empfängt, den es kennt, sendet es einen umgekehrten ARP für die IP-Adresse unter Angabe der MAC-Adresse und verwendet die Antwort, um die DNS-Antwort zu erstellen.
Dies hat nichts mit dem zu tun, was Sie versuchen, aber es veranschaulicht den Punkt. Ein DNS-Server kann theoretisch so codiert werden, dass er jedes neuartige Schema ausführt, mit dem Sie Namen in IP-Adressen auflösen möchten.
Die eigentliche Frage scheint zu sein, wie man die IP-Adresse des Kunden erhält, um zu entscheiden, wohin er gesendet werden soll. Dies ist ein kleines XY-Problem. Was Sie wirklich wollen, ist, dass der ISP des Kunden eine Geolokalisierung durchführt, und Sie können dies erreichen, indem Sie dies direkt von der IP-Adresse aus tun, die die Anforderung stellt, vorausgesetzt, es handelt sich nicht um 8.8.4.4 oder einen anderen DNS-Umleitungsdienst. Meiner Meinung nach besteht die beste Lösung für die DNS-Umleitungen darin, das Problem zu ignorieren und eine selbstbezogene Geolokalisierung durchzuführen (dh vom DNS-Server zu versuchen, die anrufende IP-Adresse zu finden) und entsprechend umzuleiten. Informationen zum Geolokalisieren finden Sie hier: /programming/2574542/location-detecting-techniques-for-ip-addresses
Du willst hier wirklich keinen Anycast, sondern etwas Vernünftigeres. Anycast hat die ärgerliche Eigenschaft, dass es Pakete in der Mitte Ihres TCP-Streams umleiten kann, was zu Massenverwirrung führt.
Ron Maupin behauptet, dass Anycast für TCP routenzuverlässig ist. Hier ist die Traceroute, die etwas anderes zeigt:
Wenn Sie versuchen, die Upstream-IP-Adressen auf die offensichtliche Weise zu geolokalisieren, erhalten Sie beide in Wichita. Dies ist nicht richtig, wodurch eine einfache Demonstration der Physik ausreichen wird.
Der Bereich bis 8.8.4.4 wird bei 30 ms gemessen, von denen die ersten 18 ms die lokale Strafe sind (Hop 3 ist der lokale Router meines ISP). Meine Entfernung nach Wichita beträgt 1297 Meilen. Die minimale Umlaufzeit beträgt daher (1297 * 2 Meilen / 225.000 Kilometer pro Sekunde (Lichtgeschwindigkeit in Glas)) 18,55 ms. Daher sollte ich keine Antwort schneller als 28 ms erhalten, aber ich habe eine Antwort in 25 ms zurückbekommen.
Die Pakete kommen auf zwei verschiedenen BGP-Routen bei Google an. BGP hat nicht den nächsten ausgewählt.
quelle
Was Sie brauchen, kann mit einer Kombination aus DNS Anycast und RFC-7871 erreicht werden.
quelle