Verweisen Sie mehrere IP-Adressen auf einen einzelnen Hostnamen

25

Im Windows-System befindet sich diese Datei unter C:\WINDOWS\system32\drivers\etc\hosts. Mit dieser Datei können wir einem Hostnamen eine bestimmte IP-Adresse zuweisen.

Das Problem ist nun, ob ich mehrere IP-Adressen auf einen Hostnamen setzen kann. Kann ich zum Beispiel so etwas machen:

192.168.244.128   gateway.net
192.168.226.129   gateway.net

Und erwarten Sie, dass der Browser beide auflösen kann, welche funktionieren und somit auf diese zeigen wird?

Wenn nicht, gibt es eine andere Möglichkeit, das von mir gewünschte Verhalten zu erreichen?

Hinweis: Ich setze diese App in meinem eigenen lokalen Netzwerk ein, sodass kein Internet erforderlich ist.

Graviton
quelle

Antworten:

25

Normalerweise würden Sie hierfür keine Hosts verwenden, sondern Ihren DNS. Die meisten DNS-Server bieten so genannte "Round Robin", wenn Sie einem Namen in der Zone mehrere A-Einträge zuweisen.

Was es dann tun würde, ist, dass die erste Anfrage durchkommen würde 192.168.244.128, die nächste empfangen würde 192.168.226.129, so weiter und so fort. Ihr lokaler Computer speichert jedoch standardmäßig die DNS-Auflösung im Cache und verwendet in der Regel immer wieder dieselbe IP-Adresse, bis sie abläuft (Time To Live, TTL).

Mark Henderson
quelle
1
EDIT: Nevermind, ich stehe korrigiert !!
Gepostet
17

Ja, Sie können dies tun. Ich habe damit Round-Robin-DNS-Szenarien getestet, ohne die Hosts tatsächlich in einem DNS eingeben zu müssen.

Wenn eine Anwendung gethostbyname aufruft, wird die vollständige Liste der IP-Adressen zurückgegeben (möglicherweise in zufälliger Reihenfolge - je nach Bibliothek / Betriebssystem).

MarkR
quelle
2
+1 für die tatsächliche Beantwortung der Frage
CLF
Du
12

Ich denke, Sie gehen das falsch an. Lassen Sie mich wissen, wenn ich hier die falschen Annahmen mache.

Szenario:

  • Sie haben zwei Windows-Server, auf denen dieselbe Webanwendung ausgeführt wird, wahrscheinlich unter IIS.
  • Sie möchten, dass Ihre Anwendung fehlertolerant ist, damit Ihre Anwendung weiterhin verfügbar ist, wenn einer der Server ausfällt.
  • Sie möchten, dass diese Fehlertoleranz für den Browser transparent ist, damit Benutzer weiterhin mit demselben Hostnamen, dh gateway.net, auf die Anwendung zugreifen können

Was Sie versuchen, ist Round-Robin-DNS (auch bekannt als "Poor Mans Load Balancing"), aber Sie versuchen dies vom Client aus. Dies scheint nicht den gewünschten Effekt zu haben (zumindest auf meiner Windows XP-Box), auch wenn ich den DNS-Cache leere. Windows löst nur die erste IP in der Datei auf. Dennoch ist Round-Robin-DNS nicht fehlertolerant, sodass Sie nicht das erreichen, was Sie wollen.

Vorgeschlagene Lösung:

Hardware Load Balancer: Einige Markennamen sind Alteon, Big-IP, Barracuda. Im Grunde bedeutet dies, dass Ihre Benutzer nur eine einzige IP-Adresse zum Herstellen einer Verbindung benötigen und die Anforderungen an die Webserver weiterleiten. Wenn einer der Server nicht mehr verfügbar ist, wird kein Datenverkehr mehr an ihn weitergeleitet. Dies ist die teure Option.

Netzwerklastenausgleichsdienste: Hierbei handelt es sich um eine Microsoft-Technologie, die auf Windows-Servern verfügbar ist und Ihnen eine einzelne Cluster-IP-Adresse gibt. Es erzielt dasselbe Ergebnis wie ein Hardware-Load-Balancer, jedoch auf andere Weise. Alles was Sie tun müssen, ist es zu konfigurieren .

Nick Kavadias
quelle
1
ZEN-LB ist ein wirklich einfacher und einfacher Load Balancer. Wir hatten viel Erfolg damit und lieben es, weil es Open Source ist (kostenlos.)
Derrick
2

Von http://www.unc.edu/atn/lsf/docs/7.0.5/lsf_config_ref/index.htm?hosts.5.html~main

IPv4-Beispiel

192.168.1.1 hostA hostB 192.168.2.2 hostA hostC host-C

In diesem Beispiel verfügt hostA über 2 IP-Adressen und 3 Aliase. Der Alias ​​hostB gibt die erste Adresse an und die Aliase hostC und host-C geben die zweite Adresse an. LSF verwendet den offiziellen Hostnamen hostA, um zu identifizieren, dass beide IP-Adressen demselben Host gehören.

Peter
quelle
1
"Das Format von LSF_CONFDIR / hosts ähnelt dem Format der Datei / etc / hosts auf UNIX-Computern." Dh die Quelle handelt nicht von regulären Hosts-Dateien.
Gertvdijk
1

Mein Vorschlag ist, einen internen DNS-Server mit DNS-Round-Robin und TTL = 0 zu verwenden. Wenn Sie den DNS-Eintrag aktualisieren (auch mit automatischem IP-Überprüfungssystem), wenn ein IP / Server ausfällt, können Sie über ein Hochverfügbarkeitssystem verfügen.

lg.
quelle
Dies ist keine Lösung für hohe Verfügbarkeit. DNS ist nicht dafür ausgelegt und sollte nur in Verbindung mit anderen Failover-Methoden verwendet werden. Viele Resolver ignorieren auch den TTL-Cache, was diese Methode unzuverlässig macht.
Mark Henderson
1

Ich habe dies in einem Heimnetzwerk durchgeführt, in dem ich den kabelgebundenen und kabellosen Netzwerkschnittstellen eines Laptops statische IP-Adressen zuordnete und in der Hostdatei eines anderen Computers einen einzelnen Hostnamen auf beide IP-Adressen zeige. Es scheint gut zu funktionieren.


quelle
1

Von http://www.unc.edu/atn/lsf/docs/7.0.5/lsf_config_ref/index.htm?hosts.5.html~main

IPv4-Beispiel

192.168.1.1 hostA hostB 192.168.2.2 hostA hostC host-C

In diesem Beispiel verfügt hostA über 2 IP-Adressen und 3 Aliase. Der Alias ​​hostB gibt die erste Adresse an und die Aliase hostC und host-C geben die zweite Adresse an. LSF verwendet den offiziellen Hostnamen hostA, um zu identifizieren, dass beide IP-Adressen demselben Host gehören.

Basierend auf diesem Beispiel habe ich das folgende HostA 10.18.yx 192.168.zx erstellt

Wobei hostA der Hostname eines Servers ist, den ich sowohl vom internen Netzwerk (192.168.yx) als auch vom VPN (10.8.zx) aus erreichen möchte.

ping hostA
sending 'ping' on 192.168.y.x [10.8.z.x]
Answer from 10.8.z.x : bytes=32 time=98 ms TTL=64
Answer from 10.8.z.x : bytes=32 time=78 ms TTL=64
Answer from 10.8.z.x : bytes=32 time=111 ms TTL=64
Answer from 10.8.z.x : bytes=32 time=136 ms TTL=64

Es funktioniert also gut und ich kann Samba mit Hostnamen über VNP zum Laufen bringen, so dass es in beiden Fällen in Ordnung ist, meine verbundenen Laufwerke in Windows zu haben (LAN- oder VPN-Verbindung).

Freundliche Grüße.

obrousse
quelle
0

@ Plamen Dimitrov Du benötigst ein Gerät, um mit dieser Art von Balance umzugehen, möglicherweise einen Schalter, der BGP vor deiner FW handhaben kann - oder benutze deine FW, wenn es in der Lage ist. Wenn Ihr Ciscos BGP beherrscht, versuchen Sie dies zu implementieren. Auf diese Weise können Sie beide IP-Adressen Ihrer ISPs in den Cisco / or-Switch einspeisen lassen, und die Zielserver verfügen über gültige IP-Adressen von öffentlichen 24-Bit-IP-Adressen (UNTERSCHIEDLICH VON DEN 2 IP-Adressen der ISPs). Zu diesem Zeitpunkt (Sie verwenden 3 verschiedene öffentliche IP-Blöcke, der für Ihre Server MUSS 24 BIT sein) muss jeder Ihrer ISPs über diese Lösung Bescheid wissen und er muss bereit sein, die zu unterstützen BGP-Lösung zwischen ihnen, was die meisten tun werden. Wenn Ihr FQDN aufgelöst wird, wird er in Ihren 24-Bit-IP-Block aufgelöst, selbst wenn 1 ISP-Leitung ausfällt. Das Ziel ist, Ihre 24-Bit-Adressen sind immer verfügbar, da Ihre Internetdienstanbieter zugestimmt haben, diese 24-Bit-Adresse über ihre Leitungen weiterzuleiten. Dies funktioniert auch für VPN, da für VPN nur die 24-Bit-Adressen verwendet werden und nicht die IP-Adressen des Internetdienstanbieters, den Sie an Ihren Cisco / oder Switch angeschlossen haben. An diesem Punkt müssen Sie sich vor BGP FLAPPING in Acht nehmen, bei dem sich die DNS-Adressen im Internet so stark ändern, dass die DNS-Server die IP-Adressen automatisch entfernen, wenn Ihre Leitungen sehr hoch und runter gehen DAS FÜHRT ZU IHREM 24 BIT IP-BLOCK. Das ist ein DOS-Angriff auf BGP-Lösungen. An diesem Punkt müssen Sie sich vor BGP FLAPPING in Acht nehmen, bei dem sich die DNS-Adressen im Internet so stark ändern, dass die DNS-Server die IP-Adressen automatisch entfernen, wenn Ihre Leitungen sehr hoch und runter gehen DAS FÜHRT ZU IHREM 24 BIT IP-BLOCK. Das ist ein DOS-Angriff auf BGP-Lösungen. An diesem Punkt müssen Sie sich vor BGP FLAPPING in Acht nehmen, bei dem sich die DNS-Adressen im Internet so stark ändern, dass die DNS-Server die IP-Adressen automatisch entfernen, wenn Ihre Leitungen sehr hoch und runter gehen DAS FÜHRT ZU DEINEM 24-BIT-IP-BLOCK. Das ist ein DOS-Angriff auf BGP-Lösungen.


quelle
0

Zumindest in der Windows-Welt hier eine leichte Klarstellung: Sie können zwei IP-Adressen für einen einzelnen Namen in einer Hosts-Datei haben. Bei der Abfrage werden alle Adressen zurückgegeben. Die App (dh der Browser) versucht nacheinander, eine Verbindung herzustellen, bis eine Verbindung hergestellt ist. IOW, es werden alle Adressen vor dem Timeout geprüft. (Dies ist ein weit verbreitetes Missverständnis, da viele Leute glauben, dass es nur die "erste" Adresse versuchen wird.)

Sie können dies mit dem folgenden Experiment überprüfen:

Fügen Sie zwei oder mehr Adressen für einen Host in die Hosts-Datei ein, eine echte und eine gefälschte. (Verkleinern Sie die gefälschten Adressen alphabetisch.) Öffnen Sie einen Browser und versuchen Sie, eine Verbindung zum Hostnamen herzustellen. Führen Sie netstat -no gleichzeitig aus. Sie sollten Verbindungsversuche zu der gefälschten Adresse sehen. (in SYN_SENT stecken geblieben) Der Browser wird irgendwann an die richtige Adresse gelangen und eine Verbindung herstellen. Es gibt eine Verzögerung bei der Verbindung, aber es wird funktionieren.

Ron
quelle
Das heißt nicht, dass Sie sich irren, aber ich habe es auf meinem Win 10 Pro mit Chrome versucht und es hat nicht funktioniert. Ich habe meine Hosts-Datei optimiert (und gespeichert) und dann ausgeführt ipconfig /flushdns, um sicherzustellen, dass frühere Auflösungen vergessen wurden. Es wurde versucht, die Site (lokal für meinen Computer) in einem Inkognito-Fenster in Chrome zu öffnen, um Cache-Ergebnisse auszuschließen. Es schlug einfach fehl (und ich wartete einige Minuten, um zu sehen, ob es irgendwann klappen würde). Klicken Sie auf Aktualisieren, nur um sicherzugehen. Dann habe ich die gefälschte IP aus meiner Hosts-Datei auskommentiert. Ohne etwas anderes zu tun, habe ich die Seite aktualisiert und es hat funktioniert. Gleiches gilt für Firefox.
Andrew Steitz
Es kann also basierend auf der Anwendung funktionieren, funktioniert aber definitiv NICHT in zwei modernen Browsern.
Andrew Steitz
-1

Dies ist mit der hosts-Datei nicht möglich.

Sie können dies auch nicht mit DNS tun: Sie können mehrere IPs für einen einzelnen Namen bereitstellen, aber der Browser wählt nur eine dieser mehreren IPs aus, probiert es aus, und wenn dieser Host zurzeit nicht verfügbar ist, zeigt der Browser einen Verbindungsfehler an .

Eine mögliche Lösung besteht darin, einen Proxyserver einzurichten und diese beiden IP-Adressen als übergeordnete Adressen für die Domäne zu konfigurieren, die sie bedienen. Zumindest im Fall von Squid versucht der Proxy einen Server und, falls dies fehlschlägt, den zweiten Server. Konfigurieren Sie dann Ihren Browser so, dass dieser Proxy-Server verwendet wird.

Max Alginin
quelle
In Bezug auf Round Robin trifft dies nicht zu: www-archive.mozilla.org/docs/netlib/dns.html Beachten Sie, dass Google mehrere DNS-Einträge zurückgibt . Trotz der RFC3484-Neuordnung ist es offensichtlich hilfreich, mehrere IPs als Failover-Strategie zurückzugeben.
BrianEss
Ja, Sie können es mit der Hosts-Datei tun
warren