DNS-Server verwenden bereits Anycast. Verbessert das Hinzufügen weiterer IPs die Skalierbarkeit?

9

Nach RFC 1034 müssen wir mindestens zwei IP-Adressen für DNS-Server zuweisen. Redundanz kann jedoch bereits durch eine einzelne IP-Adresse erreicht werden, wenn eine Anycast-Adressierung verwendet wird. BGP Anycast scheint sich gut auf Hunderte oder sogar Tausende von Servern skalieren zu lassen.

Wenn ja, warum benötigen wir immer noch mehrere IP-Adressen für DNS-Server? Verbessert es tatsächlich die Redundanz (trägt zur Verfügbarkeit bei), wenn wir bereits einen Cast haben, oder ist es nur ein Mythos?

Mit welchen Problemen und Fehlern können wir rechnen, wenn wir nur eine einzige IP-Adresse verwenden?

Damit meine ich, sekundäre DNS-Adressen komplett wegzulassen oder eine falsche IP (z. B. 1.2.3.4) für die zweite Adresse zu verwenden, wenn für einige Setups mindestens zwei erforderlich sind.

Pacerier
quelle

Antworten:

16

Eine einzelne Anycast-IP-Adresse bietet nicht die gleiche Redundanz wie zwei Unicast-IP-Adressen mit unterschiedlichen IP-Präfixen.

Oft ist das schwierigste Problem für die Redundanz nicht, wenn etwas vollständig ausfällt, sondern wenn es sich gerade so schlecht verhält, dass die Integritätsprüfungen noch bestanden werden, aber tatsächlich nicht funktionsfähig sind.

Ich habe ein Anycast-DNS-Setup gesehen, bei dem ein DNS-Server ausgefallen ist, aber Pakete trotzdem an diesen DNS-Server weitergeleitet werden. Was auch immer sich um die Werbung für das Präfix kümmerte, war sich möglicherweise einfach nicht bewusst, dass der DNS-Server ausgefallen war.

Noch schwieriger wird es, wenn der betreffende DNS-Server kein autorisierender DNS-Server, sondern ein rekursiver Resolver ist.

Ein solcher rekursiver Resolver müsste sowohl die Anycast-Adresse zum Empfangen von Abfragen von Clients als auch Unicast-Adressen zum Abfragen autorisierender DNS-Server haben. Wenn die Unicast-Adressen jedoch ausfallen, kann dies leicht so gesund aussehen, dass es sich weiterhin um weitergeleitete Abfragen handelt.

Anycast ist ein großartiges Tool für Skalierbarkeit und Reduzierung der Latenz. Aus Redundanzgründen sollte es jedoch nicht allein stehen.

Mehrere redundante Anycast-Pools sind jedoch eine gute Lösung für die Verfügbarkeit. Ein bekanntes Beispiel ist 8.8.8.8 und 8.8.4.4. Beide sind Anycast-Adressen, sollten jedoch niemals an denselben physischen DNS-Server weitergeleitet werden (vorausgesetzt, Google hat seine Arbeit gut gemacht).

Wenn Sie 10 physische DNS-Server haben, können Sie diese als 2 Pools mit 5 Servern in jedem Pool oder als 5 Pools mit 2 in jedem Pool konfigurieren. Sie möchten vermeiden, dass sich ein physischer DNS-Server gleichzeitig in mehreren Pools befindet.

Wie viele IPs sollten Sie also zuweisen? Sie benötigen IPs, die unabhängig voneinander als Anycast konfiguriert werden können. Das bedeutet normalerweise, dass Sie jedem Pool einen vollständigen / 24 IPv4-Adressraum oder / 48 IPv6-Adressraum zuweisen müssen. Dies kann die Anzahl der Pools, die Sie haben können, sehr gut begrenzen.

Wenn es sich um autorisierende Server handelt, sollte die DNS-Antwort mit all Ihren NS-Einträgen und A- und AAAA-Kleber in ein einzelnes 512-Byte-Paket passen. Für die Root-Server hat sich dies auf 13 Adressen ausgewirkt. Dies beinhaltete jedoch nicht Kleber und IPv6, sodass die Anzahl, die Sie erreichen würden, niedriger wäre.

Jeder Pool sollte so geografisch wie möglich verteilt sein. Wenn Sie 5 Server in Europa und 5 in Nordamerika sowie 2 Anycast-IPs haben, erstellen Sie nicht einen Pool, der sich über jeden Kontinent erstreckt. Sie legen 2 aus Europa in einen Pool mit 3 aus Nordamerika und die anderen 5 in den anderen Pool.

Wenn Sie mehr als 2 Anycast-Pools haben, können Sie einen physischen Server vorübergehend in mehr als einem Pool befinden lassen. Sie sollten jedoch niemals zulassen, dass sich ein physischer Server gleichzeitig in allen Pools befindet.

Das Kombinieren von Anycast und Unicast ist möglich, aber Vorsicht ist geboten. Wenn Sie IPs für zwei Pools haben, würde ich nicht kombinieren. Wenn Sie jedoch nur eine einzige Anycast-IP haben, mit der Sie arbeiten können, kann es sinnvoll sein, auch Unicast-IPs einzuschließen. Das Problem ist, dass Sie durch das Einbeziehen von Unicast-IPs nicht so gute Latenz und Lastenausgleich erhalten.

Wenn ein physischer Server sowohl von Unicast als auch von Anycast zur Verfügung gestellt wird, besteht die Gefahr, dass Benutzer denselben Server wie der primäre und der sekundäre Server erreichen und den Zugriff verlieren, wenn er ausfällt. Dies kann vermieden werden, indem nur Unicast-Adressen von Servern verwendet werden, die sich nicht im Anycast-Pool befinden, oder indem Benutzern immer zwei Unicast-Adressen zur Verfügung gestellt werden.

Je mehr Unicast-Adressen Sie in den Mix einfügen, desto weniger Anfragen werden an die Anycast-Adresse gesendet und desto weniger profitieren Sie von Anycast in Bezug auf Latenz und Skalierbarkeit.

Kasperd
quelle
Meinen Sie damit, dass der beste Weg zur Erzielung der Skalierbarkeit darin besteht, viele sekundäre Unicast-Adressen zu verwenden (auch bekannt als die alte Methode zum Festlegen von ns1.domain, ns2.d, ns3.d ... ns300.d), anstatt Anycast zu verwenden?
Pacerier
@ Pacerier Nein, das meine ich nicht. Ich werde das in meiner Antwort klarstellen.
Kasperd
+1. Ein Routing-Fehler kann Ihr Unicast sogar in die Hölle führen (Sackgasse). Eine zweite separate Adresse bedeutet, dass Sie mehr als ein "Ticket" dafür haben;)
TomTom
2
+1 Ich möchte hinzufügen, dass das Hinzufügen einer gefälschten IP als zweite Adresse nach einer schrecklichen Idee klingt
Reaces
1
@Pacerier Sie erhalten einen Lastenausgleich durch die Verwendung mehrerer Unicast-Adressen. Das Problem ist die Latenz, Clients wissen einfach nicht, welche IPs in der Nähe und welche weit entfernt sind. Es kann auch nicht so weit skalieren. Sie können nur ungefähr 5 Server verwenden, wenn A- und AAAA-Klebedatensätze in 512 Byte passen sollen. Das Kombinieren eines Anycasts und mehrerer Unicasts ist für den Lastenausgleich problematisch, da die Unicast-Adressen wahrscheinlich stärker belastet werden als die Anycast-Adresse.
Kasperd
4

Es wird empfohlen, mindestens zwei Adressen mit unterschiedlichen Präfixen zu verwenden und diese unter zwei verschiedenen TLDs zu benennen. Diese beiden Adressen können auf Wunsch beliebig übertragen werden. Wenn Sie nur eine IP-Adresse haben, erhalten Sie einen einzigen Fehlerpunkt. Wenn das Routing zu dieser Adresse nicht funktioniert (Konfigurationsfehler, eine Anycast-Instanz funktioniert nicht richtig, das Präfix wird entführt usw.), ist Ihre gesamte Domain nicht mehr erreichbar.

Für jede Anycast-Adresse muss mindestens ein /24IPv4- oder /48IPv6-Präfix in BGP routingfähig sein. Kleinere (längere) Präfixe werden in der Regel an vielen Stellen nicht in die globale Routing-Tabelle aufgenommen.

Geben Sie niemals eine falsche IP-Adresse als DNS-Server ein. Dies führt zu schwerwiegenden Verzögerungen für Resolver.

Sander Steffann
quelle
Schlimmer noch, diese "falsche" IP-Adresse ist die Adresse eines anderen. Sie würden die Anfragen erhalten. Wenn sie sich über den gesamten Datenverkehr ärgern, können sie Antworten mit einer hohen TTL senden, damit er für eine Weile verschwindet.
Kasperd
@kasperd, Was ist mit speziellen reservierten IP-Adressen, die niemandem gehören?
Pacerier
1
@Pacerier Die Verwendung des Adressraums RFC 1918, 4193 oder 6598 würde den Schaden begrenzen. Aber es würde immer noch dazu führen, dass die Auflösung verlangsamt wird oder sogar fehlschlägt.
Kasperd
3

Der RFC 1034 gibt nur an, dass Sie zwei DNS-Server benötigen. Dies ist keine obligatorische Anforderung, sondern eine Empfehlung. Machen Sie also damit, was Sie wollen. Unabhängig davon, ob Sie HA möchten, können Ihren 2 DNS-Servern mit anycast dieselbe IP zugewiesen werden. Das einzige, was Ihre Endbenutzer bemerken würden, wenn ein DNS-Server ausfällt, ist ein vorübergehender Mangel an Konnektivität, wenn das Netzwerk neu konvergiert.

Zusammenfassend lässt sich sagen, dass die Verwendung von Anycast ausreicht, um RFC 1034-konform zu sein.

Reagiert
quelle
Hmm, wenn nur eine einzige IP-Adresse benötigt wird, warum bietet Google zwei Adressen ( 8.8.8.8und 8.8.4.4) für seine DNS-Server an? Sie haben bereits Anycast eingerichtet. Warum also nicht einfach eine Adresse anbieten 8.8.8.8?
Pacerier
1
Vermutlich würde ich sagen, die Konnektivität während der Netzwerkkonvergenz nicht zu unterbrechen? Weil sie ein Global Player sind und sicherstellen möchten, dass sie so breit wie möglich sind, um mögliche Fehlerquellen auszuschließen? Ich bin nicht ganz sicher, aber ich weiß, dass wir nicht alle google sein können :)
Reaces