58 votes

Comment définir des routes statiques dans un serveur Ubuntu ?

J'utilise Ubuntu depuis Ubuntu 8.10 ; aujourd'hui je travaille avec Ubuntu 12.04 Server.

J'ai des difficultés à conserver les routes statiques au démarrage. D'habitude, je mets les commandes de route

/sbin/route add -net <IP>/<MASK> <GW> dev <ethX>

sur /etc/rc.local ou je créerais un fichier (nommé routes ) dans le répertoire /etc/network/if-up/ mais je remarque que sur 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 lorsqu'elles sont dans le fichier spécifié.

J'ai déjà essayé de changer le nom du fichier pour d'autres noms en pensant que mon nom de fichier ( routes ) pourrait être erroné dans Ubuntu 12.04, mais cela n'a pas non plus fonctionné.

Je remarque aussi que la commande /sbin/ifconfig œuvre, moins le /sbin/route .

Qu'est-ce qui a changé dans la mise en place du réseau ?

Comment puis-je définir des routes statiques sur Ubuntu 12.04 ?

72voto

Eric Carvalho Points 51571

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

20voto

Gangdia Jervis Points 1

J'ai constaté très souvent que le bon endroit pour définir une route statique est dans /etc/network/interfaces, c'est ok si vous allez 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 terminera par l'erreur :

ifup eth1

RTNETLINK answers: File exists
Failed to bring up eth1.

Parce qu'il essaie de définir une route mais celle-ci est déjà définie. L'interface sera de toute façon en service mais ifup ne mettra pas à jour /run/network/ifstate. La prochaine fois que vous utiliserez ifdown, vous ne pourrez pas le faire à moins d'utiliser le drapeau --force.

Pour que ifup continue à configurer même si des routes sont déjà définies, vous pouvez utiliser ce format lors de la définition des routes 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 terminée.

ifup eth1

RTNETLINK answers: File exists
RTNETLINK answers: File exists
ssh stop/waiting
ssh start/running, process 18553

9voto

mmehboobhan Points 91

Vous pouvez essayer ceci (l'ajouter à /etc/network/interfaces ), il s'agit d'un moyen presque complet 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/

6voto

NGRhodes Points 8890

Il existe un paquet ifupdown-extra disponible dans Ubuntu.
Il fournit des scripts automatiques (installés en /etc/network/*/ ), dont l'un est utilisé pour ajouter des routes statiques.

Le fichier de configuration pour cela est /etc/network/routes

Le haut de ce fichier de configuration contient une bonne description :

Ce fichier de configuration est lu par le static-routes if-updown script. et le /etc/init.d/networking-routes script pour configurer une liste de routes associées soit à une interface donnée, soit à des routes globales.

Un exemple d'itinéraire que j'utilise est le suivant :

192.168.240.0 255.255.255.0 192.168.130.3 em3

4voto

user269484 Points 107

Utilisation de nmcli J'ai pu exécuter une solution persistante (la solution @isapir n'a pas fonctionné sur mon appareil).

sudo nmcli connection modify <conection-name> +ipv4.routes "<ip>/<mask> <gw> <mt>"

Par exemple :

sudo nmcli connection modify ssid-name +ipv4.routes "1.1.1.0/24 192.168.0.1 100"

Après cela, il est possible d'appliquer les modifications en coupant et en rétablissant la connexion (pas besoin de redémarrer complètement NetworkManager) :

sudo nmcli con down ssid-name ; sudo nmcli con up ssid-name

Pour voir les connexions actuelles, exécutez :

sudo nmcli connection

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X