[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: Petite question de "routing".



Salut,

Disclaimer : j'ignore tout de vserver et ses spécificités.

Le Souricier Gris a écrit :
Richard Lemay a écrit :

J'ai une machine qui possède deux adresses avec du ip alias.

eth0 = 192.168.0.15
eth0:0 = 10.50.1.1

Je roule un vserver (un serveur virtuel) qui utilise l'adresse 10.50.1.1
     ^^^^^
Tiens, un Québécois ? Ah ben ouais, avec un nom pareil. ;-)

(eth0:0). Je suis capable de faire un ping sur 192.168.0.15 et sur
10.50.1.1. Cependant, je ne peux pas me connecter sur l'internet qui
s'accède avec un routeur sur 192.168.0.1.

Je recherche donc la/les commande(s) qui permettrait à la machine sur le
subnet 10.50.1.0 de communiquer avec celles sur le subnet 192.168.0.0.

route add -net 192.168.0.0 gw <routeur pour joindre 10.51.1.0>

Pas si simple. Reprenons.
Principe de base : pour qu'une communication IP fonctionne, il faut que chaque noeud impliqué - hôtes mais aussi routeurs intermédiaires - sache comme joindre la destination, et ceci dans les deux sens.

Pour sortir, le vserver doit savoir comment joindre la passerelle. On crée donc la route suivante :

$ route add 192.168.0.1 dev eth0

Résultat dans la table de routage :

Destination  Mask             Gateway  Interface
192.168.0.1  255.255.255.255  -        eth0

Tant qu'on y est, on peut en profiter pour rendre accessibles tous les hôtes du réseau local connecté à eth0, en étendant la destination en écrivant à la place de la règle précédente. La route devient :

$ route add -net 192.168.0.0/24 dev eth0

Résultat dans la table de routage :

Destination  Mask           Gateway  Interface
192.168.0.0  255.255.255.0  -        eth0

En supposant que le masque est bien /24. Maintenant que la passerelle est joignable, on peut créer la route par défaut pour sortir sur internet :

$ route add default gw 192.168.0.1

Résultat dans la table de routage :

Destination  Mask     Gateway      Interface
0.0.0.0      0.0.0.0  192.168.0.1  eth0

MAIS.... il y a un "mais". Comme j'écrivais juste avant, il faut que ça marche aussi dans le sens retour, c'est-à-dire au moins de la passerelle vers le vserver. C'est toujours cette partie qu'on a tendance à oublier. Il faut donc de la même façon que ci-dessus créer une route sur la passerelle pour lui indiquer comment joindre l'adresse 10.50.1.1. Je vais supposer que la passerelle est sous Linux :

$ route add 10.50.1.1 gw 192.168.0.15

Destination  Mask             Gateway       Interface
10.50.1.1    255.255.255.255  192.168.0.15  ethX

Mais attention, si l'adresse 192.168.0.15 est attribuée par DHCP et suceptible de changer, on doit créer une route indépendante de l'adresse de la machine hôte du vserver :

$ route add 10.50.1.1 dev ethX

Résultat dans la table de routage :

Destination  Mask             Gateway  Interface
10.50.1.15   255.255.255.255  -        ethX

où ethX est l'interface de la passerelle vers le réseau local.

Si on veut étendre la destination à tout le sous-réseau 10.0.0.0/8 (en supposant que le masque est /8), on utilisera plutôt :

$ route add -net 10.0.0.0/8 dev ethX

Résultat dans la table de routage :

Destination  Mask       Gateway  Interface
10.0.0.0     255.0.0.0  -        ethX

Enfin, pour que les machines de 192.168.0.0 autres que la passerelle puissent joindre celles en 10.0.0.0, il y a deux possibilités. La première consiste à créer sur chacune une route identique à celle créée sur le routeur. La seconde, si ces machines ont toutes le routeur 192.168.0.1 comme passerelle par défaut, consiste à configurer celui-ci pour rerouter les paquets. Pour un routeur Linux, il n'y a rien de plus à faire qu'activer le forward IP (déjà fait puisque c'est un routeur), mettre en place les routes qui vont bien (on vient de le faire) et le cas échéant autoriser les paquets de ethX vers ethX dans les règles du firewall.



Reply to: