Pointez plusieurs adresses IP vers un seul nom d'hôte


25

Dans le système Windows, ce fichier se trouve à C:\WINDOWS\system32\drivers\etc\hosts. Ce fichier nous permet de définir par défaut une adresse IP spécifique sur un nom d'hôte.

La question est maintenant de savoir si je peux définir plusieurs adresses IP sur un nom d'hôte. Par exemple, puis-je faire quelque chose comme ceci:

192.168.244.128   gateway.net
192.168.226.129   gateway.net

Et attendez-vous à ce que le navigateur puisse résoudre les deux, voir lequel fonctionnera et donc pointer sur celui-là?

Sinon, existe-t-il un autre moyen d'obtenir le comportement que je souhaite?

Remarque: je déploie cette application sur mon propre réseau local, il n'y a donc pas besoin d'Internet.

Réponses:


25

Normalement, vous n'utilisez pas d'hôtes pour ce faire, mais votre DNS. La plupart des DNS fourniront ce qu'on appelle un "Round Robin" si vous attribuez plusieurs enregistrements A au seul nom de la zone.

Ce qu'il ferait alors, c'est que la première demande reçue serait reçue 192.168.244.128, la suivante recevrait 192.168.226.129, etc. Cependant, par conception, votre machine locale mettra en cache sa résolution DNS et utilisera généralement la même adresse IP encore et encore, jusqu'à son expiration (Time To Live, TTL).


1
EDIT: Nevermind, je me tiens corrigé !! Publié ci
MagnaVis

17

Oui, vous pouvez le faire, je l'ai utilisé pour tester des scénarios DNS à tour de rôle sans avoir à entrer réellement les hôtes dans un DNS.

Lorsqu'une application appelle gethostbyname, elle récupère la liste complète des adresses IP (éventuellement dans un ordre aléatoire - en fonction des bibliothèques / du système d'exploitation).


2
+1 pour avoir répondu à la question
CLF

tu veux dire qu'il en choisira un au hasard
.. J'ai

12

Je pense que vous vous y trompez. Faites-moi savoir si je fais les mauvaises hypothèses ici.

Scénario:

  • Vous avez deux serveurs Windows exécutant la même application Web, probablement sur IIS.
  • Vous voulez que votre application soit tolérante aux pannes afin que si l'un des serveurs tombe en panne, votre application soit toujours disponible.
  • Vous voulez que cette tolérance aux pannes soit transparente pour le navigateur, afin que les utilisateurs puissent continuer à accéder à l'application avec le même nom d'hôte, c'est-à-dire gateway.net

Ce que vous essayez de faire est appelé DNS à tour de rôle (alias pauvre équilibrage de charge), mais vous essayez de le faire du côté client. Cela ne semble pas avoir l'effet souhaité (du moins sur ma box Windows XP) même si je vide le cache DNS. Windows ne résoudra que la première IP du fichier. Néanmoins, le DNS à tour de rôle n'est pas tolérant aux pannes, donc cela ne vous aidera pas à réaliser ce que vous voulez.

Solution suggérée:

Équilibreur de charge matérielle: certains noms de marque sont Alteon, Big-IP, Barracuda. Cela présente essentiellement une adresse IP unique à laquelle vos utilisateurs peuvent se connecter et transmet les demandes aux serveurs Web. Si l'un des serveurs devient indisponible, il ne lui transmettra plus de trafic. C'est l'option chère.

Services d'équilibrage de la charge réseau: il s'agit d'une technologie Microsoft disponible sur le serveur Windows, qui vous donnera une seule IP en cluster. Il obtient le même résultat qu'un équilibreur de charge matériel, mais d'une manière différente. Il vous suffit de le configurer .


1
ZEN-LB est un équilibreur de charge vraiment simple et facile. Nous avons eu beaucoup de succès avec lui et nous l'aimons parce que son open source (gratuit.)
Derrick

2

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

Exemple IPv4

192.168.1.1 hostA hostB 192.168.2.2 hostA hostC host-C

Dans cet exemple, hostA a 2 adresses IP et 3 alias. L'alias hostB spécifie la première adresse et les alias hostC et host-C spécifient la deuxième adresse. LSF utilise le nom d'hôte officiel, hostA, pour identifier que les deux adresses IP appartiennent au même hôte.


1
"Le format de LSF_CONFDIR / hosts est similaire au format du fichier / etc / hosts sur les machines UNIX." C'est-à-dire: la source ne concerne pas les fichiers hôtes réguliers.
gertvdijk

1

Ma suggestion est d'utiliser un serveur DNS interne avec round-robin DNS et TTL = 0. Si vous mettez à jour l'enregistrement DNS (également avec le système de vérification automatique d'IP) lorsqu'un IP / serveur est en panne, vous pouvez avoir un système à haute disponibilité.


Ce n'est pas une solution pour la haute disponibilité. DNS n'est pas conçu pour cela et ne doit être utilisé qu'en conjonction avec d'autres méthodes de basculement. De nombreux résolveurs ignorent également le cache TTL, ce qui rend cette méthode peu fiable.
Mark Henderson

1

Je l'ai fait sur un réseau domestique où j'attribue des adresses IP statiques aux interfaces réseau filaires et sans fil d'un ordinateur portable, et à partir du fichier d'hôtes d'une autre machine, pointez un nom d'hôte unique vers ces deux adresses IP. Cela semble marcher correctement.


1

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

Exemple IPv4

192.168.1.1 hostA hostB 192.168.2.2 hostA hostC host-C

Dans cet exemple, hostA a 2 adresses IP et 3 alias. L'alias hostB spécifie la première adresse et les alias hostC et host-C spécifient la deuxième adresse. LSF utilise le nom d'hôte officiel, hostA, pour identifier que les deux adresses IP appartiennent au même hôte.

Sur la base de cet exemple, j'ai fait l'hôte A 10.18.yx 192.168.zx suivant

Où hostA est le nom d'hôte d'un serveur que j'ai l'intention d'atteindre à la fois depuis le réseau interne (192.168.yx) et le 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

Donc cela fonctionne bien et je suis capable de faire fonctionner la samba via VNP en utilisant le nom d'hôte, donc c'est bien pour moi d'avoir mes disques connectés dans Windows dans les deux cas (LAN ou VPN connecté).

Meilleures salutations.


0

@ Plamen Dimitrov Vous aurez besoin d'un appareil pour gérer ce genre d'équilibre, peut-être un interrupteur qui peut gérer BGP devant votre FW- ou utiliser votre FW s'il est capable. Si votre Ciscos gère BGP, essayez de l'implémenter. De cette façon, vous pouvez avoir vos deux IP FAI entrant dans le commutateur Cisco / ou et les serveurs cibles auraient des IP valides d'IP publiques 24 bits (DIFFÉRENTES DES 2 IP FAI). À ce stade (vous utilisez 3 blocs IP publics différents, celui de vos serveurs DOIT ÊTRE 24 BIT), vous devez que chacun de vos FAI connaisse cette solution et ils doivent être prêts à prendre en charge le Solution BGP entre eux, ce que la plupart feront. Désormais, lorsque votre nom de domaine complet sera résolu, il se résoudra en votre bloc IP 24 bits, même si 1 ligne ISP tombe en panne. Le but est, vos adresses 24 bits seront toujours disponibles car vos FAI ont accepté de router cette adresse 24 bits via leurs lignes. Cela fonctionne aussi pour VPN car tout ce que vous utilisez pour VPN sont les adresses 24 bits, et non pas les adresses IP du FAI que vous avez branché sur votre Cisco / ou commutateur. À ce stade, vous devez vous méfier du BGP FLAPPING où si vos lignes montent et descendent beaucoup, en raison d'une ligne recevant DOS, les adresses DNS changeront tellement, sur Internet, que les serveurs DNS SUPPRIMERONT AUTOMATIQUEMENT LES IP QUI MÈNE À VOTRE BLOC DE 24 BITS D'IP. C'est une attaque DOS sur les solutions BGP. À ce stade, vous devez vous méfier du BGP FLAPPING où si vos lignes montent et descendent beaucoup, en raison d'une ligne recevant DOS, les adresses DNS changeront tellement, sur Internet, que les serveurs DNS SUPPRIMERONT AUTOMATIQUEMENT LES IP QUI MÈNE À VOTRE BLOC DE 24 BITS D'IP. C'est une attaque DOS sur les solutions BGP. À ce stade, vous devez vous méfier du BGP FLAPPING où si vos lignes montent et descendent beaucoup, en raison d'une ligne recevant DOS, les adresses DNS changeront tellement, sur Internet, que les serveurs DNS SUPPRIMERONT AUTOMATIQUEMENT LES IP QUI MÈNE À VOTRE BLOC DE 24 BITS D'IP. C'est une attaque DOS sur les solutions BGP.


0

Légère clarification ici, au moins dans le monde Windows: vous POUVEZ avoir deux adresses IP pour un seul nom dans un fichier d'hôtes. Lorsqu'elles sont interrogées, toutes les adresses sont retournées. L'application (c'est-à-dire le navigateur) tentera de se connecter à tour de rôle jusqu'à ce qu'une connexion soit établie. IOW, il essaiera toutes les adresses avant la fin du délai. (Il s'agit d'un malentendu courant car de nombreuses personnes pensent qu'il n'essaiera que la "première" adresse.)

Vous pouvez le vérifier avec l'expérience suivante:

Ajoutez deux ou plusieurs adresses pour un hôte dans le fichier hosts, une vraie et les autres fausses. (Réduisez les fausses adresses par ordre alphabétique.) Ouvrez un navigateur et essayez de vous connecter au nom d'hôte. Exécutez netstat -no en même temps. Vous devriez voir des tentatives de connexion à la fausse adresse. (coincé dans SYN_SENT) Le navigateur finira par arriver à la bonne adresse et se connectera. Il y a un retard dans la connexion, mais cela fonctionnera.


Je ne dis pas que vous vous trompez, mais je viens de l'essayer sur mon Win 10 Pro en utilisant Chrome et cela n'a pas fonctionné. J'ai modifié mon fichier d'hôtes (et l'ai enregistré), puis j'ai couru ipconfig /flushdnspour m'assurer que les résolutions précédentes étaient oubliées. J'ai essayé d'ouvrir le site (local sur ma machine) dans une fenêtre de navigation privée dans Chrome pour empêcher les résultats du cache. Cela a juste échoué (et j'ai attendu plusieurs minutes pour voir si cela finirait par fonctionner). Appuyez sur Actualiser juste pour être sûr. Ensuite, j'ai commenté la fausse IP de mon fichier d'hôtes. Sans rien faire d'autre, j'ai rafraîchi la page et cela a fonctionné. Même chose avec Firefox.
Andrew Steitz

Donc, cela PEUT fonctionner en fonction de l'application, mais il ne fonctionne certainement PAS dans deux navigateurs modernes.
Andrew Steitz

-1

Vous ne pouvez pas faire cela avec le fichier hosts.

Vous ne pouvez pas non plus le faire avec DNS: vous pouvez servir plusieurs adresses IP pour un seul nom, mais le navigateur choisira une seule de ces adresses IP multiples, essayez-le, et si cet hôte est actuellement en panne, le navigateur affichera une erreur de connexion .

Une solution possible consiste à installer un serveur proxy et à configurer ces deux adresses IP en tant que parents pour le domaine qu'elles desservent. Au moins dans le cas de Squid, le proxy essaiera un serveur et, s'il échoue, essaiera le deuxième serveur. Configurez ensuite votre navigateur pour utiliser ce serveur proxy.


Ce n'est pas vrai pour le tournoi à la ronde: www-archive.mozilla.org/docs/netlib/dns.html Notez que google retourne plusieurs enregistrements DNS. Malgré la réorganisation du RFC3484, il est évidemment utile de renvoyer plusieurs adresses IP en tant que stratégie de basculement.
BrianEss

oui, vous pouvez le faire avec le fichier hosts
warren
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.