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: