Frage Zeigen Sie mehrere IP-Adressen auf einen einzelnen Hostnamen


In Windows System gibt es diese Datei unter C:\WINDOWS\system32\drivers\etc\hosts. Diese Datei ermöglicht es uns, eine bestimmte IP-Adresse für einen Hostnamen festzulegen.

Das Problem ist jetzt, ob ich mehrere IP-Adressen zu einem Host-Namen festlegen kann. Kann ich beispielsweise Folgendes tun:

192.168.244.128   gateway.net
192.168.226.129   gateway.net

Und erwarte, dass der Browser zu beiden auflösen kann, um zu sehen, welcher funktioniert und somit auf diesen zeigt?

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

Hinweis: Ich stelle diese App in meinem eigenen lokalen Netzwerk bereit, so dass kein Internet benötigt wird.


23
2017-09-30 05:54


Ursprung




Antworten:


Normalerweise würden Sie hierfür keine Hosts verwenden, sondern Ihr DNS. Die meisten DNS bieten eine so genannte "Round Robin", wenn Sie dem einen Namen in der Zone mehrere A-Datensätze zuweisen.

Was es dann tun würde, wäre die erste Anfrage, die durch erhalten würde 192.168.244.128Das nächste würde erhalten 192.168.226.129, und so weiter und so fort. Ihr lokales Gerät wird jedoch seine DNS-Auflösung zwischenspeichern, und normalerweise wird dieselbe IP-Adresse immer wieder verwendet, bis sie abläuft (Time To Live, TTL).


22
2017-09-30 06:09



EDIT: Nevermind, ich stehe korrigiert !! Unten veröffentlicht - MagnaVis


Ja, Sie können dies tun, ich habe es verwendet, um Round-Robin-DNS-Szenarien zu testen, ohne die Hosts tatsächlich in ein DNS eingeben zu müssen.

Wenn eine Anwendung gethostbyname aufruft, erhält sie die vollständige Liste der IP-Adressen zurück (möglicherweise in zufälliger Reihenfolge - abhängig von den Bibliotheken / Betriebssystemen).


15
2017-09-30 06:47



+1 für die tatsächliche Beantwortung der Frage - CLF
Du willst sagen, dass es sich zufällig eine aussuchen wird. Ich habe einen Windows-Server - Lakshay


Ich denke, dass du das falsch machst. Lass es mich wissen, wenn ich hier falsche Annahmen mache.

Szenario:

  • Sie haben zwei Windows-Server ausgeführt die gleiche Webanwendung, wahrscheinlich auf IIS.
  • Sie möchten, dass Ihre Anwendung fehlerhaft ist tolerant, so dass wenn einer der Server schlägt fehl, Ihre Anwendung ist noch verfügbar.
  • Sie möchten, dass diese Fehlertoleranz für den Browser transparent ist, sodass Benutzer weiterhin auf die Anwendung mit dem gleichen Hostnamen wie gateway.net zugreifen können

Was du versuchst zu tun, heißt Round-Robin-DNS (aka arts mans load balancing), aber Sie versuchen, dies von der Client-Seite zu tun. Dies scheint nicht den gewünschten Effekt zu haben (zumindest auf meiner Windows XP-Box), selbst wenn ich den DNS-Cache lösche. Windows löst nur die erste IP in der Datei auf. Round-Robin-DNS ist jedoch nicht fehlertolerant, so dass Sie nicht erreichen können, was Sie wollen.

Vorgeschlagene Lösung: 

Hardwarelastenausgleich: Einige Markennamen sind Alteon, Big-IP, Barracuda. Was dies tut ist im Grunde eine einzige IP-Adresse für Ihre Benutzer zu verbinden, und es leitet die Anfragen an die Webserver. Wenn einer der Server nicht mehr verfügbar ist, leitet er keinen Datenverkehr mehr an diesen Server weiter. Dies ist die teure Option.

Netzwerklastenausgleich-Dienste: Dies ist eine Microsoft-Technologie, die auf dem Windows-Server verfügbar ist und Ihnen eine einzige IP-Adresse in Clustern bietet. Es erzielt das gleiche Ergebnis wie ein Hardware Load Balancer, aber auf andere Weise. Alles, was Sie tun müssen, ist Konfigurieren Sie es.


12
2017-09-30 08:58



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


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

IPv4 Beispiel

192.168.1.1 hostA hostB 192.168.2.2 hostA hostC host-C

In diesem Beispiel hat HostA 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 erkennen, dass beide IP-Adressen zum selben Host gehören.


2
2017-07-29 05:10



"Das Format von LSF_CONFDIR / hosts ähnelt dem Format der Datei / etc / hosts auf UNIX-Rechnern." Ie .: die Quelle ist nicht über reguläre Gastgeberdateien. - gertvdijk


Mein Vorschlag ist, einen internen DNS-Server mit DNS Round-Robin und TTL = 0 zu verwenden. Wenn Sie den DNS-Eintrag (auch mit automatischem IP-Prüfsystem) aktualisieren, wenn ein IP / Server ausgefallen ist, können Sie ein Hochverfügbarkeitssystem verwenden.


1
2017-09-30 10:09



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 den TTL-Cache ebenfalls, was diese Methode unzuverlässig macht. - Mark Henderson♦


Ich habe dies in einem Heimnetzwerk getan, wo ich sowohl den kabelgebundenen als auch den drahtlosen Netzwerkschnittstellen eines Laptops statische IPs zuweise, und von der Hostdatei eines anderen Computers einen einzelnen Hostnamen auf beide IP-Adressen zeigen. Es scheint gut zu funktionieren.


1
2017-11-28 05:32





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

IPv4 Beispiel

192.168.1.1 hostA hostB 192.168.2.2 hostA hostC host-C

In diesem Beispiel hat HostA 2 IP-Adressen und 3 Aliase. Der Alias   hostB gibt die erste Adresse und die Aliase hostC und host-C an   Spezifiziere die zweite Adresse. LSF verwendet den offiziellen Hostnamen hostA für   Identifizieren Sie, dass beide IP-Adressen zu demselben Host gehören.

Basierend auf diesem Beispiel habe ich folgendes gemacht 10.18.y.x 192.168.z.x hostA

HostA ist der Hostname eines Servers, den ich sowohl vom internen Netzwerk (192.168.y.x) als auch vom VPN (10.8.z.x) 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

So funktioniert es gut und ich bin in der Lage Samba durch VNP mit Hostnamen arbeiten, so ist es in Ordnung für mich, meine Laufwerke in Windows in beiden Fällen (LAN oder VPN verbunden) zu haben.

Freundliche Grüße.


1
2018-05-20 14:43





@ Plamen Dimitroff Sie benötigen ein Gerät, um diese Art von Balance zu handhaben, möglicherweise einen Schalter, der BGP vor Ihrer FW- oder verwenden Sie Ihre FW, wenn es in der Lage ist. Wenn Ihre Ciscos BGP handhaben, schauen Sie das an. Auf diese Weise können Sie beide ISPs in den Cisco / oder Switch schalten und die Zielserver haben gültige IPs mit 24-Bit öffentlichen IPs (UNTERSCHIEDLICH VON DEN 2 ISP IPs). An diesem Punkt (Sie verwenden 3 verschiedene öffentliche IP-Blöcke, die für Ihre Server MUSS 24 Bit sein), müssen Sie jeden Ihrer ISPs über diese Lösung wissen und sie müssen bereit sein, die zu unterstützen BGP-Lösung zwischen ihnen, die meisten tun. Wenn Ihr FQDN aufgelöst wird, wird er in Ihren 24-Bit-Block von IPs aufgelöst, selbst wenn 1 ISP-Leitungen ausfallen. Das Ziel ist, dass Ihre 24-Bit-Adressen immer verfügbar sind, da Ihre Internetdienstanbieter sich bereit erklären, diese 24-Bit-Adresse über ihre Leitungen zu leiten. Dies funktioniert auch für VPN, da Sie für das VPN nur die 24-Bit-Adressen verwenden, keine der IP-Adressen des ISP, den Sie an Ihren Cisco / Switch angeschlossen haben. An diesem Punkt müssen Sie sich vor BGP FLAPPING in Acht nehmen, wo, wenn Ihre Leitungen viel auf und ab gehen, da eine Leitung DOS bekommt, die DNS-Adressen im Internet so stark ändern, dass die DNS-Server die IPs AUTOMATISCH ENTFERNEN Das führt zu Ihrem 24-Bit-Block von IPs. Das ist ein DOS-Angriff auf BGP-Lösungen.


0
2017-11-17 15:15





Eine kleine Klarstellung hier zumindest in der Windows-Welt: 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 (d. H. Der Browser) wird versuchen, sich nacheinander zu verbinden, bis eine Verbindung hergestellt ist. IOW, es wird alle Adressen vor dem Zeitlimit versuchen. (Dies ist ein häufiges Missverständnis, da viele Leute glauben, es werde nur die "erste" Adresse versuchen.)

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

Fügen Sie zwei oder mehr Adressen für einen Host in der Hosts-Datei hinzu, einen echten und den anderen gefälschten. (Machen Sie die gefälschten Adressen alphabetisch kleiner.) Öffnen Sie einen Browser und versuchen Sie, eine Verbindung zum Hostnamen herzustellen. Führe netstat -no zur gleichen Zeit aus. Sie sollten Verbindungsversuche zur gefälschten Adresse sehen. (fest in SYN_SENT) Der Browser wird schließlich an die richtige Adresse gelangen und sich verbinden. Es gibt eine Verzögerung beim Verbinden, aber es funktioniert.


0
2017-07-12 20:06



Ich sage nicht, dass du falsch liegst, aber ich habe es in meinem Win 10 Pro mit Chrome ausprobiert und es hat nicht funktioniert. Ich habe meine Hosts-Datei optimiert (und gespeichert) und bin dann gelaufen ipconfig /flushdns um sicherzustellen, dass vorherige Resolutionen vergessen wurden. Versucht, die Website (lokal für meinen Computer) in einem Inkognito-Fenster in Chrome zu öffnen, um Cache-Ergebnisse auszuschließen. Es hat einfach versagt (und ich habe einige Minuten gewartet, um zu sehen, ob es irgendwann funktionieren würde). Hit aktualisieren, um sicher zu sein. Dann habe ich die falsche IP aus meiner Hosts-Datei auskommentiert. Ohne etwas anderes zu tun, habe ich die Seite aktualisiert und es hat funktioniert. Das gleiche gilt für Firefox. - Andrew Steitz
Also, es kann funktionieren, basierend auf der Anwendung, aber es funktioniert definitiv nicht in zwei modernen Browsern. - Andrew Steitz