Outre la route par défaut, vous pouvez également configurer des routes supplémentaires.
Par exemple, votre serveur peut avoir 2 interfaces (eth0 et eth1). Par défaut, tout le trafic est acheminé via l'interface eth0, quelle que soit l'adresse IP que vous avez configurée sur eth1.
Pour acheminer le trafic entrant et sortant via eth1, autre que la route par défaut (eth0), vous devez également ajouter des routes supplémentaires pour eth1 .
Dans ce didacticiel, utilisons l'exemple suivant :
- eth0 a été configuré avec l'adresse IP 19.86.101.54 avec le masque réseau 255.255.255.0 et la passerelle par défaut 19.86.101.1
- eth1 a été configuré avec l'adresse IP 19.86.100.176 avec le masque de réseau 255.255.255.0 et son adresse IP de passerelle est 19.86.100.1
Vous pouvez afficher votre adresse IP actuelle de vos cartes d'interface à l'aide de la commande ifconfig comme indiqué ci-dessous.
# ifconfig -a eth0 Link encap:Ethernet HWaddr 00:50:56:8E:0B:EC inet addr:19.86.101.54 Bcast:19.86.101.255 Mask:255.255.255.0 UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:3735 errors:0 dropped:0 overruns:0 frame:0 TX packets:336 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:295679 (288.7 Kb) TX bytes:50312 (49.1 Kb) eth1 Link encap:Ethernet HWaddr 00:50:56:8E:27:0D inet addr:19.86.100.176 Bcast:19.86.100.255 Mask:255.255.255.0 UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:14 errors:0 dropped:0 overruns:0 frame:0 TX packets:0 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:840 (840.0 b) TX bytes:0 (0.0 b)
En outre, la sortie de la commande netstat indique que la passerelle par défaut pointe vers eth0,
# netstat -rn Kernel IP routing table Destination Gateway Genmask Flags MSS Window irtt Iface 0.0.0.0 19.86.101.1 0.0.0.0 UG 0 0 0 eth0 19.86.100.0 0.0.0.0 255.255.255.0 U 0 0 0 eth1 19.86.101.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0 127.0.0.0 0.0.0.0 255.0.0.0 U 0 0 0 lo 169.254.0.0 0.0.0.0 255.255.0.0 U 0 0 0 eth0
Avec les paramètres ci-dessus, vous pourrez peut-être envoyer un ping aux deux passerelles et communiquer avec d'autres appareils sans aucun problème. Mais n'oubliez pas que tout le trafic est acheminé via eth0 par défaut.
Lorsque vous envoyez un ping à l'adresse IP 19.86.100.176 depuis l'extérieur de votre réseau, vous remarquerez peut-être qu'il ne sera pas pingable.
Afin de mettre en œuvre cela, vous devez créer une nouvelle stratégie dans la table de routage. La table de routage se trouve dans /etc/iproute2/rt_tables. Le fichier de règles initial avant la configuration peut ressembler à celui illustré ci-dessous.
# cat /etc/iproute2/rt_tables # # reserved values # 255 local 254 main 253 default 0 unspec # # local # #1 inr.ruhep #
Pour afficher toutes les règles actuelles, utilisez la commande ip comme indiqué ci-dessous :
# ip rule show 0: from all lookup local 32766: from all lookup main 32767: from all lookup default
Tout d'abord, effectuez une sauvegarde des rt_Tables avant d'apporter des modifications.
cd /etc/iproute2 cp rt_tables rt_tables.orig
Ensuite, créez une nouvelle entrée de table de routage de stratégie dans le fichier /etc/iproute2/rt_tables :
echo "1 admin" >> /etc/iproute2/rt_tables
Ajoutez maintenant les entrées de routage dans la table admin.
ip route add 19.86.100.0/24 dev eth1 src 19.86.100.176 table admin ip route add default via 19.86.100.1 dev eth1 table admin
Dans l'exemple ci-dessus :
- Dans la première commande ip, nous ajoutons le sous-réseau 19.86.100.0 avec un masque de réseau 255.255.255.0 avec l'adresse IP source 19.86.100.176 et l'appareil eth1 à la table d'administration.
- Dans la deuxième commande ip, nous ajoutons la route 19.86.100.1 à la table admin. De cette façon, toutes les règles définies dans la table d'administration acheminent le trafic via l'appareil eth1.
Une fois les commandes ci-dessus exécutées avec succès, vous devez indiquer au système d'exploitation comment utiliser ce tableau.
Dans le "ip rule show", vous pouvez remarquer la ligne "32766:from all lookup main". Il s'agit de la ligne qui demande au système d'exploitation d'acheminer tout le trafic défini dans la table "main" qui est la passerelle par défaut.
Toutes les règles sont exécutées dans l'ordre croissant. Nous allons donc ajouter des entrées de règles au-dessus de la table "principale".
ip rule add from 19.86.100.176/24 table admin ip rule add to 19.86.100.176/24 table admin ip route flush cache
Dans l'exemple ci-dessus :
- La première commande ajoute la règle selon laquelle tout le trafic allant vers l'IP d'eth1 doit utiliser la table de routage "admin" au lieu de la table "principale".
- La deuxième commande ajoute la règle selon laquelle tout le trafic sortant de l'IP d'eth1 doit utiliser la table de routage "admin" au lieu de la table "principale".
- La troisième commande est utilisée pour valider toutes ces modifications dans les commandes précédentes
Enfin, vérifiez que vos modifications sont correctement effectuées à l'aide de la commande suivante :
# ip rule show 0: from all lookup local 32764: from all to 19.86.100.176/24 lookup admin 32765: from 19.86.100.176/24 lookup admin 32766: from all lookup main 32767: from all lookup default
À ce stade, vous devriez pouvoir envoyer un ping à l'adresse IP 19.86.100.176 depuis le réseau extérieur et voir que tout le trafic censé utiliser eth1 fonctionne comme prévu.
Pour rendre ces modifications persistantes lors du redémarrage, vous pouvez ajouter ces commandes à /etc/init.d/boot.local (pour SUSE Linux) ou /etc/rc.d/rc.local (pour Redhat, CentOS).
Si vous souhaitez configurer une adresse IP supplémentaire sur un sous-réseau différent, répétez toutes les étapes ci-dessus, mais utilisez un nom de table différent. Au lieu de la table "admin", utilisez la table "admin-new".