Définir une table de routage persistante sur Debian

13

J'ai modifié ma table de routage en supprimant une règle et en ajoutant deux nouvelles règles pour ma deuxième interface eth1:

route del -net 10.1.2.0 netmask 255.255.255.0
route add -host 10.1.2.51 eth1
route add -host 10.1.2.52 eth1

Je veux que les règles survivent au redémarrage. Je pourrais écrire un simple script rc pour supprimer 1 règle et en insérer 2 nouvelles, mais je me demandais s'il y avait un moyen de configurer ifconfig, de ne pas ajouter une règle de route pour l'interface (eth1) au démarrage, ou mieux encore, pour spécifier les règles à ajouter.

Quelle serait une façon propre de le faire? Ne ifconfigme permet de spécifier des règles personnalisées pour le routage?

Martin Vegter
la source

Réponses:

21

Vous pouvez ajouter les appels au post-upcrochet lorsque l'interface apparaît. La configuration de l'interface se trouve dans /etc/network/interfaces. Voici un exemple:

auto eth1
iface eth1 inet dhcp
  post-up route del -net 10.1.2.0 netmask 255.255.255.0
  post-up route add -host 10.1.2.51 eth1
  post-up route add -host 10.1.2.52 eth1
  pre-down route add -net 10.1.2.0 netmask 255.255.255.0
  pre-down route add -host 10.1.2.51 eth1
  pre-down route add -host 10.1.2.52 eth1

Depuis la page de manuel - interfaces :

post-up command
Exécuter la commande après avoir lancé l'interface. Si cette commande échoue, ifup s'interrompt, s'abstenant de marquer l'interface comme configurée (même si elle a vraiment été configurée), imprime un message d'erreur et se termine avec l'état 0.

pré-down command
Exécuter la commande avant de supprimer l'interface. Si cette commande échoue, ifdown s'interrompt, marque l'interface comme déconfigurée (même si elle n'a pas vraiment été déconfigurée) et se termine avec l'état 0.

De plus, sous Linux, les «net-tools» routesont obsolètes et devraient être remplacés par les outils du package iproute2 .

Lectures complémentaires:

Marco
la source
pourrais-je, au lieu de supprimer la première règle, l'empêcher d'être créé en premier lieu? Comment une règle d'itinéraire est-elle créée de toute façon? À partir des paramètres réseau dans /etc/network/interfaces? Et comment puis-je savoir que lorsque la post-exécution s'exécute, la règle à supprimer existe déjà? La page de manuel ne dit pas à quel moment elle a été créée.
Martin Vegter
1
Étant donné que je ne connais ni votre réseau ni la configuration de votre hôte, je ne peux pas dire comment cette route a fait son chemin dans la table de routage. Vient-il avec un bail DHCP? Sinon, enregistrez vos services /etc/init.det recherchez ceux qui pourraient éventuellement bricoler avec la table de routage. Jetez également un œil à l' /etc/networkinclusion de sous-répertoires.
Marco
5
post-upet pre-downsont des alias pour upet down, respectivement. Et l'ajout d'un || :à la fin d'une ligne permet à la commande d'échouer et de ne pas déranger ifup / ifdown. J'ajoute généralement cela à route del, au cas où la route n'existe pas encore et ne peut donc pas être supprimée.
Tino