Wskaż wiele adresów IP na jedną nazwę hosta

25

W systemie Windows ten plik znajduje się pod adresem C:\WINDOWS\system32\drivers\etc\hosts. Ten plik pozwala nam ustawić domyślny adres IP na nazwę hosta.

Problem polega teraz na tym, czy mogę ustawić wiele adresów IP na nazwę hosta. Na przykład, czy mogę zrobić coś takiego:

192.168.244.128   gateway.net
192.168.226.129   gateway.net

I spodziewaj się, że przeglądarka rozwiąże oba te problemy. Zobacz, który z nich będzie działał, a tym samym wskaż ten drugi?

Jeśli nie, czy jest jakiś inny sposób na uzyskanie pożądanego zachowania?

Uwaga: wdrażam tę aplikację we własnej sieci lokalnej, więc nie ma potrzeby korzystania z Internetu.

Grawiton
źródło

Odpowiedzi:

25

Zwykle nie używasz do tego hostów, ale DNS. Większość DNS zapewni tzw. „Round Robin”, jeśli przypiszesz wiele rekordów A do jednej nazwy w strefie.

To, co wtedy zrobi, to pierwsze otrzymane żądanie 192.168.244.128, następne otrzyma 192.168.226.129, itd. I tak dalej. Jednak z założenia lokalna maszyna będzie buforować swoją rozdzielczość DNS i zwykle będzie używać tego samego adresu IP w kółko, aż do jego wygaśnięcia (Time To Live, TTL).

Mark Henderson
źródło
1
EDYCJA: Nieważne, poprawiam się !! Wysłany poniżej
MagnaVis,
17

Tak, możesz to zrobić, użyłem go do testowania scenariuszy DNS z wykorzystaniem robota okrągłego bez konieczności wprowadzania hostów w DNS.

Gdy aplikacja wywołuje gethostbyname, zwraca pełną listę adresów IP (możliwie w losowej kolejności - w zależności od bibliotek / systemu operacyjnego).

MarkR
źródło
2
+1 za faktyczną odpowiedź na pytanie
CLF
chcesz powiedzieć, że wybierze jeden losowo.
Mam
12

Myślę, że podchodzisz do tego niewłaściwie. Daj mi znać, jeśli przyjmę błędne założenia.

Scenariusz:

  • Masz dwa serwery Windows, na których działa ta sama aplikacja internetowa, prawdopodobnie na IIS.
  • Chcesz, aby Twoja aplikacja była odporna na awarie, dzięki czemu w przypadku awarii jednego z serwerów aplikacja będzie nadal dostępna.
  • Chcesz, aby ta tolerancja błędów była przezroczysta dla przeglądarki, aby użytkownicy mogli nadal uzyskiwać dostęp do aplikacji przy użyciu tej samej nazwy hosta, tj. Gateway.net

To, co próbujesz zrobić, nazywa się round-robin DNS (inaczej słabym równoważeniem obciążenia), ale próbujesz to zrobić po stronie klienta. Nie wydaje się to mieć pożądanego efektu (przynajmniej w moim pudełku Windows XP), nawet jeśli opróżnię pamięć podręczną DNS. System Windows rozpoznaje tylko pierwszy adres IP w pliku. Niemniej jednak okrągły DNS nie jest odporny na uszkodzenia, więc nie pomoże Ci to osiągnąć tego, co chcesz.

Sugerowane rozwiązanie:

Sprzętowy moduł równoważenia obciążenia: niektóre marki to Alteon, Big-IP, Barracuda. To w zasadzie przedstawia pojedynczy adres IP, z którego użytkownicy mogą się połączyć i przekazuje żądania do serwerów sieciowych. Jeśli jeden z serwerów stanie się niedostępny, nie będzie już przekazywał do niego ruchu. To droga opcja.

Usługi równoważenia obciążenia sieciowego: jest to technologia Microsoft dostępna na serwerze Windows, która da ci jeden klastrowany adres IP. Osiąga ten sam wynik, co sprzętowy moduł równoważenia obciążenia, ale w inny sposób. Wszystko, co musisz zrobić, to skonfigurować .

Nick Kavadias
źródło
1
ZEN-LB to naprawdę prosty i łatwy moduł równoważący obciążenie. Odnieśliśmy z nim wiele sukcesów i uwielbiamy go, ponieważ jest open source (darmowy)
Derrick
2

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

Przykład IPv4

192.168.1.1 hostA hostB 192.168.2.2 hostA hostC host-C

W tym przykładzie hostA ma 2 adresy IP i 3 aliasy. Alias ​​hostB określa pierwszy adres, a aliasy hostC i host-C określają drugi adres. LSF używa oficjalnej nazwy hosta, hostA, do identyfikacji, że oba adresy IP należą do tego samego hosta.

Piotr
źródło
1
„Format LSF_CONFDIR / hosts jest podobny do formatu pliku / etc / hosts na komputerach z systemem UNIX.” To znaczy: źródło nie dotyczy zwykłych plików hostów.
gertvdijk
1

Moja propozycja to użycie wewnętrznego serwera DNS z okrągłym systemem DNS i TTL = 0. Jeśli zaktualizujesz rekord DNS (także z automatycznym systemem sprawdzania adresu IP), gdy IP / serwer jest wyłączony, możesz mieć system wysokiej dostępności.

lg.
źródło
To nie jest rozwiązanie zapewniające wysoką dostępność. DNS nie jest do tego przeznaczony i powinien być używany tylko w połączeniu z innymi metodami przełączania awaryjnego. Wiele resolverów ignoruje również pamięć podręczną TTL, co czyni tę metodę niewiarygodną.
Mark Henderson
1

Zrobiłem to w sieci domowej, w której przypisuję statyczne adresy IP zarówno interfejsom sieci przewodowej, jak i bezprzewodowej laptopa, a z pliku hostów innego komputera wskazuje jedną nazwę hosta na oba adresy IP. Wygląda na to, że działa dobrze.


źródło
1

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

Przykład IPv4

192.168.1.1 hostA hostB 192.168.2.2 hostA hostC host-C

W tym przykładzie hostA ma 2 adresy IP i 3 aliasy. Alias ​​hostB określa pierwszy adres, a aliasy hostC i host-C określają drugi adres. LSF używa oficjalnej nazwy hosta, hostA, do identyfikacji, że oba adresy IP należą do tego samego hosta.

W oparciu o ten przykład wykonałem następujący host 10A w wersji 10.18.yx 192.168.zx

Gdzie hostA jest nazwą hosta serwera, do którego zamierzam dotrzeć zarówno z sieci wewnętrznej (192.168.yx), jak i VPN (10.8.zx).

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

Więc działa dobrze i jestem w stanie zmusić sambę do pracy przez VNP przy użyciu nazwy hosta, więc mogę podłączyć oba dyski do systemu Windows w obu przypadkach (połączenie LAN lub VPN).

Z poważaniem.

obrousse
źródło
0

@ Plamen Dimitrov Będziesz potrzebował urządzenia do obsługi tego rodzaju równowagi, być może przełącznika, który może obsłużyć BGP przed twoim FW- lub użyć twojego FW, jeśli jest w stanie. Jeśli twoje Ciscos obsługują BGP, zajmij się tym. W ten sposób oba IP twoich dostawców ISP mogą przechodzić do Cisco / lub przełączników, a serwery docelowe miałyby prawidłowe IP 24-bitowych publicznych adresów IP (RÓŻNE OD 2 adresów IP ISP). W tym momencie (używasz 3 różnych publicznych bloków adresów IP, ten dla serwerów MUSI BYĆ 24-BITOWY), będziesz musiał poinformować każdego z twoich dostawców usług internetowych o tym rozwiązaniu i byliby gotowi wesprzeć Rozwiązanie BGP między nimi, co większość zrobi. Teraz, gdy twoja FQDN zostanie rozstrzygnięta, rozwiąże się ona do 24-bitowego bloku adresów IP, nawet jeśli zejdzie 1 linia ISP. Celem jest twoje 24-bitowe adresy będą zawsze dostępne, ponieważ twoi dostawcy usług internetowych zgadzają się kierować ten 24-bitowy adres przez swoje linie. Działa to również w przypadku VPN, ponieważ wszystko, czego używasz do VPN, to adresy 24-bitowe, a nie adresy IP od dostawcy usług internetowych, który podłączyłeś do swojego cisco / lub przełącznika. W tym momencie musisz uważać na BGP FLAPPING, w którym jeśli twoje linie często podnoszą się i opadają, z powodu uzyskania linii DOS, adresy DNS zmieniają się tak bardzo w Internecie, że serwery DNS AUTOMATYCZNIE USUWAJĄ IP KTÓRE PROWADZĄ DO TWOJEGO 24-bitowego bloku adresów IP. To atak DOS na rozwiązania BGP. W tym momencie musisz uważać na BGP FLAPPING, w którym jeśli twoje linie często podnoszą się i opadają, z powodu uzyskania linii DOS, adresy DNS zmieniają się tak bardzo w Internecie, że serwery DNS AUTOMATYCZNIE USUWAJĄ IP KTÓRE PROWADZĄ DO TWOJEGO 24-bitowego bloku adresów IP. To atak DOS na rozwiązania BGP. W tym momencie musisz uważać na BGP FLAPPING, w którym jeśli twoje linie często podnoszą się i opadają, z powodu uzyskania linii DOS, adresy DNS zmieniają się tak bardzo w Internecie, że serwery DNS AUTOMATYCZNIE USUWAJĄ IP KTÓRE PROWADZĄ DO TWOJEGO 24-bitowego bloku adresów IP. To atak DOS na rozwiązania BGP.


źródło
0

Nieznaczne wyjaśnienie tutaj, przynajmniej w świecie Windows: Możesz mieć dwa adresy IP dla jednej nazwy w pliku hosts. Po zapytaniu zwracane są wszystkie adresy. Aplikacja (tj. Przeglądarka) będzie próbowała się nawzajem łączyć, dopóki nie zostanie nawiązane połączenie. IOW, wypróbuje wszystkie adresy, zanim upłynie limit czasu. (Jest to powszechne nieporozumienie, ponieważ wiele osób uważa, że ​​wypróbuje tylko „pierwszy” adres).

Możesz to zweryfikować za pomocą następującego eksperymentu:

Dodaj dwa lub więcej adresów hosta w pliku hosts, jeden rzeczywisty, a drugi fałszywy. (Zmniejsz alfabetycznie fałszywe adresy.) Otwórz przeglądarkę i spróbuj połączyć się z nazwą hosta. Uruchom netstat -no w tym samym czasie. Powinieneś zobaczyć próby połączenia z fałszywym adresem. (utknął w SYN_SENT) Przeglądarka ostatecznie dostanie się na dobry adres i połączy się. Wystąpiło opóźnienie w połączeniu, ale to zadziała.

Ron
źródło
Nie mówię, że się mylisz, ale właśnie wypróbowałem to na moim Win 10 Pro za pomocą Chrome i to nie działało. Poprawiłem plik hostów (i zapisałem go), a następnie pobiegłem, ipconfig /flushdnsaby upewnić się, że poprzednie rozdzielczości zostały zapomniane. Próbowałem otworzyć witrynę (lokalnie na moim komputerze) w oknie incognito w Chrome, aby wykluczyć wyniki z pamięci podręcznej. Po prostu się nie udało (i czekałem kilka minut, aby zobaczyć, czy w końcu zadziała). Naciśnij przycisk odśwież, aby się upewnić. Następnie skomentowałem fałszywy adres IP z mojego pliku hosts. Nie robiąc nic innego odświeżyłem stronę i działała. To samo dotyczy Firefoksa.
Andrew Steitz,
Więc może działać w oparciu o aplikację, ale zdecydowanie NIE działa w dwóch nowoczesnych przeglądarkach.
Andrew Steitz,
-1

Nie możesz tego zrobić z plikiem hosts.

Nie możesz tego zrobić również za pomocą DNS: możesz podać wiele adresów IP dla jednej nazwy, ale przeglądarka wybierze tylko jeden z tych wielu adresów IP, wypróbuj go, a jeśli ten host jest obecnie wyłączony, przeglądarka wyświetli błąd połączenia .

Jednym z możliwych rozwiązań jest skonfigurowanie serwera proxy i skonfigurowanie tych dwóch adresów IP jako elementów nadrzędnych dla obsługiwanej domeny. Przynajmniej w przypadku Squid serwer proxy spróbuje na jednym serwerze, a jeśli zawiedzie, spróbuje na drugim serwerze. Następnie skonfiguruj przeglądarkę, aby korzystała z tego serwera proxy.

Max Alginin
źródło
Nieprawda o round robin: www-archive.mozilla.org/docs/netlib/dns.html Pamiętaj, że osoby takie jak Google zwracają wiele rekordów DNS. Pomimo zmiany kolejności RFC3484, pomaga to oczywiście zwrócić wiele adresów IP jako strategię przełączania awaryjnego.
BrianEss,
tak, możesz to zrobić z plikiem hosts
warren