lundi 21 décembre 2009

Priorité des cartes réseaux: les metrics

Aujourd'hui, j'ai été confronté à un problème un peu particulier. En effet, j'ai décidé d'utiliser les 2 ports réseaux de ma carte mère, pour les besoins d'une machine virtuelle tournant sous VirtualBox.
Le problème, c'est que ma Ubuntu s'est emmêlée les pinceaux avec le routage des paquets, c'est à dire qu'elle n'arrivais pas à déterminer par quelle interface réseau elle devait communiquer avec le net. J'avais donc des coupure d'internet, de gros ralentissement, et impossible de pinger le serveur de google tant que les deux interfaces réseaux étaient branchées en même temps!
En effet, en tapant la commande "route", j'obtenais ceci:

/etc/network$ route
Table de routage IP du noyau
Destination Passerelle Genmask Indic Metric Ref Use Iface
192.168.1.0 * 255.255.255.0 U 1 0 0 eth1
192.168.1.0 * 255.255.255.0 U 1 0 0 eth0
link-local * 255.255.0.0 U 1000 0 0 eth0
default LinkSys 0.0.0.0 UG 0 0 0 eth1

On remarque que les 2 interfaces (eth0 et eth1) renvoient les paquets sur les même adresses, et qu'ils ont le même métrique.

Je voulais donner la priorité à l'interface eth1 pour le net sur ma ubuntu, et utiliser eth0 pour ma machine virtuelle.

Il faut donc modifier le métrique de l'interface eth0.
Le métrique, c'est une valeur plus ou moins grande, qui détermine la meilleur "route" pour les paquets. Par exemple, une interface qui possède un métrique de 100 est prioritaire sur une interface qui possède un métrique de 200.
Malheureusement, je n'ai pas réussi a fixer le métrique de eth0 lorsque le DHCP était activé. J'ai donc fixer l'IP de l'interface eth0, et modifié de ce fait le métrique.
Pour cela, on modifie le fichier interfaces qui se trouve dans "/etc/network".
Voila ce que ça donne après configuration:

auto lo
iface lo inet loopback

auto eth0
iface eth0 inet static
address 192.168.1.10
netmask 255.255.255.0
network 192.168.1.1
broadcast 255.255.255.0
gateway 192.168.1.1
metric 100

J'y ai mis un métrique de 100 pour l'interface eth0.
Petit reboot, puis on relance la commande route

/etc/network$ route
Table de routage IP du noyau
Destination Passerelle Genmask Indic Metric Ref Use Iface
192.168.1.0 * 255.255.255.0 U 1 0 0 eth1
link-local * 255.255.0.0 U 1000 0 0 eth0
default LinkSys 0.0.0.0 UG 0 0 0 eth1
default LinkSys 0.0.0.0 UG 100 0 0 eth0

Mission accomplie! L'interface eth1 est alors prioritaire sur l'interface eth0! Je peux enfin re-surfer sans avoir à attendre 2 ans pour qu'une page se charge!

Article intéressant (pour une fois :) de Microsoft sur la coexistence de deux cartes sur le même réseau:
http://support.microsoft.com/kb/258487/fr

1 commentaire: