Question Plusieurs adresses IP dans le même sous-réseau sur le même hôte


Est-il possible (et bien, le vrai libellé devrait être "Est-ce correct") d'avoir plusieurs adresses IP appartenant au même sous-réseau, sur le même hôte?

Voici un exemple:

#Host 1
eth0   -> 10.0.0.1/24
eth1   -> 10.0.0.2/24
eth1:1 -> 10.0.0.3/24

J'ai l'intuition que cela ne peut pas fonctionner en raison de problèmes de routage, mais je suis incapable d'expliquer pourquoi je pense que oui.

Ce modèle est-il correct? Si oui, est-ce commun? Quels peuvent être les problèmes concernant une telle configuration?


7
2017-11-03 15:16


origine




Réponses:


Ouais, bien sûr, il n'y a littéralement aucun problème à faire cela - vous devrez peut-être faire un peu attention à la configuration de votre passerelle par défaut, mais ce n'est vraiment pas un problème du tout. Si c'était le moment des faits, vous deviez installer des serveurs Web multi-sites (il y a longtemps).


5
2017-11-03 15:20



Merci pour la réponse. Comment pourrais-je configurer cet hôte pour pouvoir communiquer d'une adresse locale à une autre? En d'autres termes: que dois-je configurer pour pouvoir faire un ping depuis 10.0.0.1 à 10.0.0.3 ? - ereOn
Ping devrait juste fonctionner - quel est votre masque de sous-réseau? - Chopper3
J'utilise un /24. - ereOn
devrait juste travailler ... - Chopper3


Il y a un problème assez commun avec les attentes des peuples dans ce type de configuration. Avec plusieurs adresses attribuées sur le même sous-réseau, généralement toutes les communication sortante semblera provenir d'une seule adresse.

Donc, les réponses aux connexions entrantes devraient être correctes. Les réponses doivent provenir de l'adresse à laquelle la connexion entrante a été établie. Mais si vous vous attendez à ce qu'un processus, qui établisse des connexions sortantes, utilise une adresse spécifique différente de la première, vous devez vous assurer que vous pouvez configurer de manière spécifique l'adresse IP pour qu'elle se lie également à l'application.


4
2017-11-03 16:24





J'ai une installation compliquée quelque part qui utilise ce type de réseau. J'ai deux interfaces internes et une interface externe à Internet. (Il est sur le point de passer à deux interfaces externes sur des sous-réseaux différents et sur une interface interne divisée en deux interfaces internes, mais cela suit le même chemin) Quoi qu'il en soit, passez à la réponse!

Disons que vous avez deux interfaces internes à:

eth0 192.168.1.2
eth1 192.168.1.3

Vous utilisez une liaison montante interne vers Internet (routeur) à 192.168.1.1

Ainsi, votre table de routage par défaut ressemblera à (commande: netstat -rn)

Dest            Gw         Genmask   Flags  ... ... Iface

0.0.0.0     192.168.1.1    0.0.0.0    UG           eth0

192.168.1.0  0.0.0.0     255.255.255.0 U           eth0

192.168.1.0  0.0.0.0     255.255.255.0 U           eth1

Voici votre problème, toutes les sorties passeront par eth0 parce que c'est le premier coup sur votre table de routage. Donc, si vous utilisez un autre ordinateur (ou même cette même boîte) pour faire un ping 192.168.1.3 (eth1) vous ne recevrez pas de réponse? Pourquoi? Parce que ça vient de 192.168.1.2.

Vous devrez utiliser iproute2 configurer des tables de routage individuelles pour chaque périphérique. De cette façon, quand un appareil obtient quelque chose sur le INPUT la chaîne répond via le même appareil.

modifier /etc/iproute2/rt_tables ajouter:

1  my_eth0

2  my_eth1 

puis exécutez ce qui suit:

ip route add 192.168.1.0/24 dev eth0 table my_eth0

ip route add default via 192.168.1.1 dev eth0 table my_eth0

ip route add 192.168.1.0/24 dev eth1 table my_eth1

ip route add default via 192.168.1.1 dev eth1 table my_eth1

Ajoutez maintenant les règles pour les tables à utiliser en exécutant:

ip rule add from 192.168.1.2 table my_eth0

ip rule add from 192.168.1.3 table my_eth1

Cela indiquera à votre système que lorsqu'il reçoit une demande le eth0 Utilisez le my_eth0 table de routage pour répondre. Quand il reçoit une demande sur eth1, répondez en utilisant le my_eth1 table de routage. Lorsque les commandes fonctionnent, placez-les dans votre /etc/rc.local déposer et faire rc.local exécutable en effectuant sudo chmod u+x /etc/rc.local Ainsi, vos routes ne sont pas effacées lorsque vous redémarrez. S'amuser!


3
2017-08-10 06:47



Merci! La réponse devrait commencer par "PING WONT WORK!" parce que je me suis heurté à cela au travail et que j'ai eu beaucoup de mal à enraciner. - Sush


C'est parfaitement correct, mais le faire tel quel - avec plusieurs interfaces physiques dans le même sous-réseau connecté au même commutateur - n'est pas recommandé. Linux s'en tire généralement bien, mais certains systèmes d'exploitation (comme Solaris) ne l'aiment vraiment pas.

Mettez toutes vos adresses sur une interface physique (eth0, eth0: 0, eth0: 1, etc.) et connectez-vous uniquement. Si vous souhaitez connecter plusieurs interfaces pour améliorer les performances, examinez la liaison, puis surchargez l'interface liée (bond0 , bond0: 0, bond0: 1, etc.).


2
2017-11-03 16:02





Non, cette configuration n'est pas recommandée malgré la croyance populaire.

Ayant interfaces virtuelles (par exemple: eth1: 1) dans le même sous-réseau que le physique (par exemple: eth1) est une configuration très courante et utile qui ne pose aucun problème.

Cependant, ayant différents interface physique Dans le même sous-réseau (ou pire, dans différents sous-réseaux mais dans le même domaine de diffusion), des problèmes peuvent survenir en raison d'entrées ARP non déterministes. Cela s'applique au moins à Solaris et Linux. Si, pour une raison quelconque, vous devez quand même le faire, il est recommandé ou nécessaire d’optimiser le comportement du protocole ARP, c’est-à-dire de désactiver le protocole ARP sur l’une des interfaces ou de le configurer afin de limiter ses réponses d’une interface physique à la ou aux adresses IP correspondantes. Recherchez arp_filter dans http://www.mjmwired.net/kernel/Documentation/networking/ip-sysctl.txt . Une autre méthode consiste à définir le masque de réseau sur / 24 sur toutes les interfaces sauf une.

Sous Solaris, une méthode prise en charge pour configurer plusieurs interfaces sur le même sous-réseau consiste à utiliser IPMP (IP Multipathing).

Enfin, cette restriction ne s'applique pas si les interfaces physiques ne partagent pas la même pile IP (par exemple, les zones IP exclusives de Solaris) ou sont isolées par un marquage VLAN 802.1Q.


2
2017-11-03 23:21





Il est possible de le faire. Je l'ai utilisé avant.

J'ai une application qui doit utiliser différentes adresses IP source lors de la connexion à un serveur distant. Ceci est important dans mon cas pour surmonter la limitation du nombre de connexions autorisées par IP qui a été imposée par le serveur distant.

J'ai configuré plusieurs adresses IP sur la même interface et mon application a été configurée pour utiliser ces adresses IP à tour de rôle.


1
2017-11-03 15:26





Oui ça va marcher.

Comme indiqué dans les autres réponses, le but réel de cette opération est de fournir différents services sur les différentes adresses IP.

Si vous aviez IIS et Apache sur le même ordinateur et que vous vouliez les exécuter tous les deux sur le port 80, vous devez en définir un sur 10.0.0.1 et l'autre sur 10.0.0.2, car ils ne pouvaient pas servir tous les deux sur le port 80 de la même adresse IP.

Ce n’est vraiment pas une question d’acheminement, car cela n’interviendrait que sur cette machine qui se connecte au réseau à partir de programmes génériques tels que navigateurs Web, ping, etc. Dans ces situations, elle utilisera toujours le même adresse comme c'est la source.

Dans la table de routage, la route spécifie l'interface à utiliser, quelle que soit l'adresse utilisée pour la route qualifiante.


1
2017-11-03 15:57





Je vais jeter un peu une mise en garde ici. À savoir que les outils Linux habituels vous poseront des problèmes. Ils ne gèrent pas bien les interfaces multiples du tout. Pour ce faire, vous devrez utiliser iproute2. C'est un outil moins commun que la méthode ifconfig / route habituelle. Sans cela, vous allez voir un comportement étrange et incorrect, comme une carte réseau répondant au trafic des autres.


--Christopher Karel


1
2017-11-03 17:06