Punta più indirizzi IP su un singolo nome host


25

Nel sistema Windows, questo file è disponibile all'indirizzo C:\WINDOWS\system32\drivers\etc\hosts. Questo file ci consente di impostare come predefinito un indirizzo IP specifico su un nome host.

Il problema ora è se posso impostare più indirizzi IP su un nome host. Ad esempio, posso fare qualcosa del genere:

192.168.244.128   gateway.net
192.168.226.129   gateway.net

E aspettarsi che il browser sia in grado di risolvere entrambi, vedere quale funzionerà e quindi puntare su quello?

In caso contrario, c'è un altro modo per ottenere il comportamento che desidero?

Nota: sto distribuendo questa app nella mia rete locale, quindi non è necessario Internet.

Risposte:


25

Normalmente non useresti host per fare questo, ma il tuo DNS. La maggior parte dei DNS fornirà quello che viene chiamato "Round Robin" se si assegnano più record A al nome della zona.

Ciò che farebbe allora è che la prima richiesta che verrebbe ricevuta 192.168.244.128, la successiva che riceverebbe 192.168.226.129, e così via. Tuttavia, in base alla progettazione, il computer locale memorizzerà nella cache la sua risoluzione DNS e di solito utilizzerà lo stesso indirizzo IP più e più volte, fino alla scadenza (Time To Live, TTL).


1
EDIT: Nevermind, sto corretto !! Inserito di seguito
MagnaVis,

17

Sì, puoi farlo, l'ho usato per testare scenari DNS round robin senza dover inserire effettivamente gli host in un DNS.

Quando un'applicazione chiama gethostbyname, ripristina l'elenco completo degli indirizzi IP (possibilmente in ordine casuale - a seconda delle librerie / del sistema operativo).


2
+1 per aver effettivamente risposto alla domanda
CLF

vuoi dire che ne sceglierà uno a caso ... ho un server Windows
Lakshay,

12

Penso che tu stia facendo questo nel modo sbagliato. Fammi sapere se sto facendo ipotesi sbagliate qui.

Scenario:

  • Hai due server Windows che eseguono la stessa applicazione Web, probabilmente su IIS.
  • Si desidera che l'applicazione sia tollerante agli errori, in modo che se uno dei server fallisce, l'applicazione è ancora disponibile.
  • Desideri che questa tolleranza agli errori sia trasparente per il browser, in modo che gli utenti possano continuare ad accedere all'applicazione con lo stesso nome host, ad esempio gateway.net

Quello che stai cercando di fare si chiama round-robin DNS (noto anche come bilanciamento del carico mans mans), ma stai cercando di farlo dal lato client. Questo non sembra avere l'effetto desiderato (almeno sulla mia scatola di Windows XP) anche se svuoto la cache DNS. Windows risolverà solo il primo IP nel file. Tuttavia il DNS round robin non è tollerante ai guasti, quindi questo non ti aiuterà a ottenere ciò che desideri.

Soluzione suggerita:

Bilanciamento del carico hardware: alcuni marchi sono Alteon, Big-IP, Barracuda. Ciò che fa in pratica è presentare un singolo IP per la connessione degli utenti e inoltrare le richieste ai server Web. Se uno dei server diventa non disponibile, non inoltrerà più traffico ad esso. Questa è l'opzione costosa.

Servizi di bilanciamento del carico di rete: si tratta di una tecnologia Microsoft disponibile su Windows Server, che offre un singolo IP cluster. Raggiunge lo stesso risultato di un bilanciamento del carico hardware, ma in modo diverso. Tutto quello che devi fare è configurarlo .


1
ZEN-LB è un bilanciamento del carico davvero semplice e facile. Abbiamo avuto molto successo e lo adoriamo perché è open source (gratuito)
Derrick

2

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

Esempio IPv4

192.168.1.1 hostA hostB 192.168.2.2 hostA hostC host-C

In questo esempio, hostA ha 2 indirizzi IP e 3 alias. L'alias hostB specifica il primo indirizzo e gli alias hostC e host-C specificano il secondo indirizzo. LSF utilizza il nome host ufficiale, hostA, per identificare che entrambi gli indirizzi IP appartengono allo stesso host.


1
"Il formato di LSF_CONFDIR / hosts è simile al formato del file / etc / hosts su macchine UNIX." Vale a dire: la fonte non riguarda i file host normali.
Gertvdijk,

1

Il mio suggerimento è di utilizzare un server DNS interno con round robin DNS e TTL = 0. Se aggiorni il record DNS (anche con il sistema di controllo automatico dell'ip) quando un IP / server è inattivo, puoi avere un sistema ad alta disponibilità.


Questa non è una soluzione per l'alta disponibilità. DNS non è progettato per questo e deve essere utilizzato solo in combinazione con altri metodi di failover. Molti resolver ignorano anche la cache TTL, rendendo questo metodo inaffidabile.
Mark Henderson

1

L'ho fatto su una rete domestica in cui assegno IP statici a entrambe le interfacce di rete cablata e wireless di un laptop e dal file host di un'altra macchina punta un singolo nome host a entrambi quegli indirizzi IP. Sembra che funzioni bene.


1

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

Esempio IPv4

192.168.1.1 hostA hostB 192.168.2.2 hostA hostC host-C

In questo esempio, hostA ha 2 indirizzi IP e 3 alias. L'alias hostB specifica il primo indirizzo e gli alias hostC e host-C specificano il secondo indirizzo. LSF utilizza il nome host ufficiale, hostA, per identificare che entrambi gli indirizzi IP appartengono allo stesso host.

Sulla base di questo esempio ho fatto il seguente 10.18.yx 192.168.zx hostA

Dove hostA è il nome host di un server che intendo raggiungere sia dalla rete interna (192.168.yx) sia dalla 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

Quindi funziona bene e sono in grado di far funzionare samba tramite VNP usando il nome host, quindi per me va bene avere le mie unità connesse in Windows in entrambi i casi (LAN o VPN connesse).

I migliori saluti.


0

@ Plamen Dimitrov Avrai bisogno di un dispositivo per gestire quel tipo di equilibrio, possibilmente un interruttore in grado di gestire BGP davanti al tuo FW- o usare il tuo FW se è in grado. Se i tuoi Ciscos gestiscono BGP, cerca di implementarlo. In questo modo è possibile avere entrambi gli IP del proprio ISP in Cisco / o switch e i server di destinazione avrebbero IP validi di IP pubblici a 24 bit (DIVERSI DAI 2 IP ISP). A quel punto (stai usando 3 diversi blocchi IP pubblici, quello per i tuoi server DEVE ESSERE 24 BIT), dovresti avere tutti i tuoi ISP a conoscenza di questa soluzione e dovrebbero essere disposti a supportare il Soluzione BGP tra loro, che la maggior parte farà. Ora, quando il tuo FQDN si risolve, si risolverà nel tuo blocco di IP a 24 bit, anche se 1 linea ISP si interrompe. L'obiettivo è i tuoi indirizzi a 24 bit saranno sempre disponibili a causa del fatto che i tuoi ISP accettano di indirizzare tale indirizzo a 24 bit attraverso le loro linee. Questo funziona anche per VPN poiché tutto ciò che stai usando per VPN sono gli indirizzi a 24 bit, non gli IP dell'ISP che hai collegato al tuo Cisco / o Switch. A quel punto devi diffidare di BGP FLAPPING dove se le tue linee vanno su e giù molto, a causa di una linea che ottiene DOS, gli indirizzi DNS cambieranno così tanto, su Internet, che i server DNS RIMUOVERANNO AUTOMATICAMENTE GLI IP CHE PORTANO AL TUO BLOCCO DI IP DI 24 BIT. Questo è un attacco DOS alle soluzioni BGP. A quel punto devi diffidare di BGP FLAPPING dove se le tue linee vanno su e giù molto, a causa di una linea che ottiene DOS, gli indirizzi DNS cambieranno così tanto, su Internet, che i server DNS RIMUOVERANNO AUTOMATICAMENTE GLI IP CHE PORTANO AL TUO BLOCCO DI IP DI 24 BIT. Questo è un attacco DOS alle soluzioni BGP. A quel punto devi diffidare di BGP FLAPPING dove se le tue linee vanno su e giù molto, a causa di una linea che ottiene DOS, gli indirizzi DNS cambieranno così tanto, su Internet, che i server DNS RIMUOVERANNO AUTOMATICAMENTE GLI IP CHE PORTANO AL TUO BLOCCO DI IP DI 24 BIT. Questo è un attacco DOS alle soluzioni BGP.


0

Leggero chiarimento qui, almeno nel mondo Windows: PUOI avere due indirizzi IP per un singolo nome in un file host. Quando viene eseguita una query, vengono restituiti tutti gli indirizzi. L'app (ad esempio il browser) tenterà di connettersi a ciascuno a turno fino a quando non viene stabilita una connessione. IOW, proverà tutti gli indirizzi prima del timeout. (Questo è un malinteso comune poiché molte persone credono che proverà solo il "primo" indirizzo.)

Puoi verificarlo con il seguente esperimento:

Aggiungi due o più indirizzi per un host nel file hosts, uno reale e l'altro falso. (Riduci alfabeticamente gli indirizzi falsi.) Apri un browser e prova a connetterti al nome host. Esegui netstat -no contemporaneamente. Dovresti vedere i tentativi di connessione all'indirizzo falso. (bloccato in SYN_SENT) Il browser alla fine raggiungerà l'indirizzo corretto e si connetterà. C'è un ritardo nella connessione, ma funzionerà.


Non dire che ti sbagli, ma l'ho appena provato sul mio Win 10 Pro usando Chrome e non ha funzionato. Ho modificato il mio file hosts (e l'ho salvato), quindi ho corso ipconfig /flushdnsper assicurarsi che le risoluzioni precedenti fossero state dimenticate. Ho provato ad aprire il sito (locale sul mio computer) in una finestra di navigazione in incognito in Chrome per impedire i risultati della cache. Ha appena fallito (e ho aspettato diversi minuti per vedere se alla fine avrebbe funzionato). Premi aggiorna solo per essere sicuro. Quindi ho commentato l'IP falso dal mio file hosts. Senza fare altro ho aggiornato la pagina e ha funzionato. Stessa cosa con Firefox.
Andrew Steitz,

Quindi, può funzionare in base all'applicazione ma sicuramente NON funziona in due browser moderni.
Andrew Steitz,

-1

Non puoi farlo con il file hosts.

Nemmeno tu puoi farlo con DNS: puoi servire più IP per un singolo nome, ma il browser sceglierà solo uno di quei IP multipli, provalo e se questo host è attualmente inattivo, il browser visualizzerà un errore di connessione .

Una possibile soluzione è impostare un server proxy e configurare questi due IP come genitori per il dominio che servono. Almeno nel caso di Squid, il proxy proverà un server e, in caso contrario, proverà il secondo server. Quindi configura il tuo browser per utilizzare questo server proxy.


Non è vero per il round robin: www-archive.mozilla.org/docs/netlib/dns.html Si noti che artisti del calibro di Google restituiscono più record DNS. Nonostante il riordino di RFC3484, ovviamente aiuta a restituire più IP come strategia di failover.
BrianEss,

sì, puoi farlo con il file hosts
warren,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.