Ich weiß, dass die DNS-Root-Server 13 IPs haben und Anycast verwenden, um die Anfrage an ihre 800 tatsächlichen physischen Server auf der ganzen Welt zu verteilen.
Ich weiß, dass der Root-Server in Hongkong und ein anderer Spiegelserver irgendwo dieselbe IP haben. Ist es legal, zwei Server mit unterschiedlichen physischen Adressen im Internet und derselben IP zu haben?
Ich weiß jedoch nicht, wie die DNS-Anfrage auf den Server abzielt, der meinem Standort am nächsten liegt, beispielsweise Hongkong.
Wie wählt der DNS seinen Server aus und ist es zulässig, zwei Server mit unterschiedlichen physischen Adressen und derselben IP zu haben?
Antwort1
In einem großen Netzwerk (mit dedizierten Routern) kann es zwischen zwei Computern mehrere Netzwerkpfade geben. Router verfügen aus Redundanzgründen häufig über mehrere Netzwerkverbindungen zueinander, sodass Sie Pakete über beide Verbindungen senden können, um denselben Zielcomputer zu erreichen.
Anycast nutzt dies aus, indem es so aussieht, als gäbe es zwei oder mehr Routen zu einer IP-Adresse, aber in Wirklichkeit führen diese Routen zu völlig unterschiedlichen Computern. Wenn einer der Computer offline geht, verschwindet die Route, aber die andere Route ist weiterhin verfügbar.
Damit es funktioniert, sind einige Konfigurationen erforderlich. Um IPs zwischen Sites zu teilen, müssen Sie BGP (Routing auf ISP-Ebene) konfigurieren und Sie können dies nur für Blöcke von mindestens 256 IP-Adressen tun (wenn Sie Anycast also nur für eine IP verwenden, werden ~253 IPs verschwendet). Innerhalb einer Site müssen Sie Ihre Router weiterhin so konfigurieren, dass sie wissen, wo sich alle Anycast-Endpunkte befinden. Dies geschieht normalerweise dadurch, dass jeder Endpunkt seine Präsenz bekannt gibt, während er online ist.
Da die Endpunkte wie mehrere Pfade zum selben Computer aussehen, kann der Datenverkehr zufällig einen anderen Pfad verwenden. Normalerweise ist das kein Problem (die Pakete kommen immer noch am selben Ort an, auch wenn sich der von ihnen genommene Pfad geändert hat), aber für eine Anycast-IP bedeutet ein anderer Pfad ein anderes Ziel. Das bedeutet, dass Sie Datenverkehr an einen Endpunkt senden können und die Pakete plötzlich an einem anderen Endpunkt ankommen.
Aus diesem Grund funktioniert Anycast nicht mit „langlebigen“ Protokollen und wird normalerweise nur mit zustandslosen Protokollen verwendet. DNS-Anycast ist weit verbreitet, da die Pakete klein sind und es keine Rolle spielt, ob sich der Endpunktserver unerwartet ändert. Einige Websites verwenden Anycast mit HTTP für sehr kleine Dateien, die nur in einem oder zwei Paketen abgerufen werden können. Aber alles darüber hinaus wird mit Anycast unzuverlässig, da TCP-Verbindungen scheinbar zufällig unterbrochen werden, wenn sich der „Pfad“ ändert.