J'ai utilisé Ubuntu depuis Ubuntu 8.10; aujourd'hui, je travaille avec Ubuntu 12.04 Server.
J'ai de la difficulté à garder les routes statiques au démarrage. Je mettrais habituellement les commandes de route
/sbin/route add -net <IP>/<MASK> <GW> dev <ethX>
dans /etc/rc.local
ou je créerais un fichier (nommé routes
name__) dans le répertoire /etc/network/if-up/
, mais je remarque que sous Ubuntu 12.04, cela ne fonctionne pas.
Si je tape les commandes dans le shell, elles fonctionnent, mais les mêmes commandes ne fonctionnent pas quand elles sont dans le fichier spécifié.
J'ai déjà essayé de changer le nom de fichier en un autre nom en pensant que mon nom de fichier (routes
name__) pouvait être erroné dans Ubuntu 12.04, mais cela ne fonctionnait pas non plus.
Je remarque également que la commande /sbin/ifconfig
fonctionne, moins le /sbin/route
.
Qu'est-ce qui a changé dans la configuration du réseau?
Comment définir des routes statiques sur Ubuntu 12.04?
Vous pouvez mettre des routes statiques dans /etc/network/interfaces
:
auto eth0
iface eth0 inet static
address 192.168.1.2
netmask 255.255.255.0
up route add -net 192.168.0.0 netmask 255.255.0.0 gw 192.168.1.1
up route add -net 172.16.0.0 netmask 255.240.0.0 gw 192.168.1.1
J'ai trouvé très souvent que l'emplacement correct pour définir une route statique est dans/etc/network/interfaces. Si vous envisagez de redémarrer globalement le réseau avec /etc/init.d/networking restart par exemple. Mais si vous allez utiliser ifdown et ifup pour arrêter individuellement une interface, ifup se termine par l'erreur suivante:
ifup eth1
RTNETLINK answers: File exists
Failed to bring up eth1.
À cause de cela tente de définir un itinéraire mais celui-ci est déjà défini. L’interface sera toujours active, mais si ifup ne met pas à jour/run/network/ifstate, la prochaine fois que vous le ferez, vous ne pourrez le faire que si vous utilisez l’option --force.
Pour que ifup continue de configurer même si les itinéraires sont déjà définis, vous pouvez utiliser ce format pour définir les itinéraires dans/etc/network/interfaces.
up ip route add 172.16.0.0/24 via 192.168.10.1 || true
up ip route add 192.168.0.0/16 via 192.168.10.1 || true
De cette façon, vous aurez l'avertissement dans la sortie mais la configuration de l'interface sera complétée
ifup eth1
RTNETLINK answers: File exists
RTNETLINK answers: File exists
ssh stop/waiting
ssh start/running, process 18553
Vous pouvez essayer ceci (ajoutez-le à /etc/network/interfaces
), c’est une façon presque complète de définir des itinéraires:
auto eth0
iface eth0 inet static
post-up /sbin/route add -net 192.168.0.0 netmask 255.255.0.0 gw 192.168.1.1
post-up /bin/mount -t nfs 192.168.0.203:/motd/ /motd/
Il existe un paquetage ifupdown-extra disponible dans Ubuntu.
Il fournit des scripts automatiques (installés dans /etc/network/*/
), l'un d'eux servant à ajouter des itinéraires statiques.
Le fichier de configuration correspondant est /etc/network/routes
Le haut de ce fichier de configuration a une bonne description:
Ce fichier de configuration est lu par le script static-routes if-updown et le script /etc/init.d/networking-routes pour établir une liste de routes associées à une interface donnée ou à des routes globales.
Un exemple de route que j'utilise est:
192.168.240.0 255.255.255.0 192.168.130.3 em3
ce qui a fonctionné pour nous était
Sudo route add -net 192.168.0.2/32 gw 192.168.1.1 netmask 255.255.0.0
j'avais l'habitude de courir sur un Mac:
Sudo route -n add -net 192.168.0.2/32 192.168.1.1
mais sur un Ubuntu, le "gw" entre les IP et la dernière partie "masque de réseau" était manquant (également -n pas nécessaire sur ubuntu)