it-swarm.com.de

Verwenden mehrerer A-Records für meine Domain - versuchen Webbrowser jemals mehr als einen?

Wenn ich mehrere A-Einträge für meine Domain hinzufüge, werden diese von DNS-Servern in einer Round-Robin-Reihenfolge zurückgegeben.

Beispiel:

192.0.2.1 A example.com
192.0.2.2 A example.com
192.0.2.3 A example.com

Aber wie reagieren Webbrowser, wenn der erste Host (192.0.2.1) außer Betrieb ist (nicht erreichbar)? Versuchen sie es mit dem zweiten Host (192.0.2.2) oder geben sie eine Fehlermeldung an den Benutzer zurück? Gibt es einen Unterschied zwischen den beliebtesten Browsern?

Wenn ich meine eigene Anwendung implementiere, kann ich implementieren, dass die zweite verwendet wird, falls die erste ausfällt. Dies ist also möglich. Und dies wäre sehr hilfreich, um eine fehlertolerante Website zu erstellen.

92
Jonas

Ja, die meisten Browser der letzten 5 bis 10 Jahre versuchen es mit den anderen A-Datensätzen, wenn einer nicht antwortet. Dies wird anscheinend manchmal als "Browser-Neuversuch" oder "Client-Neuversuch" bezeichnet. Sie werden so ziemlich nur im Zusammenhang mit den verschiedenen Browser-Exploits etwas darüber finden, die diese Funktion für Websites ermöglicht, die sie nicht verwenden (siehe DNS-Rebinding und DNS-Pinning , - Anti-DNS-Fixierung, Anti-DNS-Fixierung, Anti-DNS-Fixierung und so weiter). Irgendwie ein schlechter Ruf, aber er beweist, dass er existiert.

So ziemlich jeder Browser erhält tatsächlich die vollständige Liste der A-Datensätze und überprüft tatsächlich andere, wenn der von ihm verwendete fehlerhaft ist. Sie können davon ausgehen, dass jeder Client 30 Sekunden warten muss, wenn er zum ersten Mal versucht, auf eine Site zuzugreifen, wenn ein Server ausfällt, bis eine Verbindung zu einer Arbeitsadresse hergestellt wird. Der Browser speichert dann zwischen, welche Adresse funktioniert, und verwendet diese Adresse für zukünftige Anforderungen, sofern dies nicht ebenfalls fehlschlägt. Anschließend muss er die Liste erneut durchsuchen. Also 30 Sekunden warten auf erste Anfrage, gut danach.

Aber es ist nicht etwas, das Sie unbedingt verwenden möchten, es wird viele Einschränkungen in Bezug auf Browserkompatibilität, Betriebssystemkompatibilität, Proxy-Kompatibilität und Cache-Control-Header geben, die seltsame Auswirkungen darauf haben, ob sich die IPs merken, ob sie ausgefallen sind oder anfangen zu haben Wenn Sie 30 Sekunden auf jede Anforderung warten, verwenden Benutzer, die benutzerdefinierte Clients für Ihre Site schreiben, am Ende gethostbyname anstelle von getaddrinfo und sind nicht in der Lage, das Failover zu verarbeiten von möglichen Problemen.

Sie können sich auch nicht auf mehrere A-Datensätze verlassen, um "Master" - und "Slave" -Server zuzulassen, da Sie nie wissen, welche Adresse ein Browser aus der Liste auswählen wird. Sie müssen alle in der Lage sein, Besucher beim Laufen gleichermaßen zu behandeln, da jeder Verkehr bekommen kann, wenn er aktiv ist. Ein Browser könnte denken, dass Ihr dritter Server aus der Liste am ansprechendsten ist, vielleicht sieht er am ähnlichsten aus und wählt ihn aus, obwohl alle drei noch aktiv sind.

Aber wenn Sie mit den Einschränkungen leben und ein einigermaßen einfaches HTTP-System haben, mit dem Sie die Interaktion mit dem Browser vorhersagen können, wird es funktionieren.

Oh, du wirst auch mit vielen Leuten zu tun haben, die dir sagen, dass es das nicht gibt (da dies vor 15 Jahren der Fall war). Sie können jedoch versuchen, einen Domain-Namen mit mehreren A-Einträgen zu telneten, einige mit toten und einige mit guten IP-Adressen, wenn Sie dies nachweisen müssen (ja, selbst ein gutes altes Telnet verwendet jetzt getaddrinfo und verarbeitet heutzutage mehrere A-Einträge ordnungsgemäß). - Es wird eine nette Liste der IPs ausgedruckt, die es versucht, bis es schließlich erfolgreich ist.

86
Joff

Seien Sie gewarnt, dass Windows Vista die dummen Teile von RFC3484 (d. H. Das Backportieren von IPV6 nach IPV4) implementiert und die IP-Adresse bevorzugt, die die meisten Präfixbits mit der IP-Adresse des Benutzers teilt, anstatt zufällig eine auszuwählen. Da die meisten Benutzer IP-Adressen haben, die mit 192.168 beginnen, bedeutet dies, dass die meisten Vista-Daten von jeder Ihrer IP-Adressen mit den meisten Präfix-Bits geteilt werden. Microsoft hat dieses Problem in Windows 7 und höher behoben, sodass es nicht mehr so ​​problematisch ist wie früher.

5
Mike Scott

Dies ist die grundlegende Verteilungsmethode für den DNS-Lastenausgleich: DNS Round Robin. Dies hat nichts mit dem Browser zu tun, es hängt von der Implementierung des Resolvers und dem lokalen/Remote-Cache der DNS-Adresse ab. Änderungen betreffen den Fall, dass ein Server ausfällt und Ihre Website aufgrund von Caching in der DNS-Schicht möglicherweise nicht erreichbar ist.

Hier finden Sie eine grundlegende Erklärung zu Round Robin DNS in WikiPedia.

3
keatch

Das Betriebssystem bestimmt, welche IP-Adresse verwendet werden soll, nicht der Browser. Windows führt ein Round-Robin-Verfahren für die zurückgegebene Liste durch (in der von DNS zurückgegebenen Liste), verwendet jedoch weiterhin dieselbe Adresse, bis DNS gelöscht wird oder das Zeitlimit überschritten wird. * ix-Implementierungen hängen teilweise von der Implementierung des gebündelten TCP-Stacks ab, folgen jedoch in der Regel auch einer Round-Robin-Methode.

0
iivel