Comment définir des routes statiques dans Ubuntu Server?

42

J'ai utilisé Ubuntu depuis Ubuntu 8.10; Aujourd'hui, je travaille avec Ubuntu 12.04 Server.

J'ai de la difficulté à garder des 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 ) dans le répertoire /etc/network/if-up/ , mais je remarque que sur Ubuntu 12.04 il ne fonctionne pas.

Si je tape les commandes dans le shell, elles fonctionnent, mais les mêmes commandes ne fonctionnent pas lorsqu'elles se trouvent dans le fichier spécifié.

J'ai déjà essayé de changer le nom du fichier en d'autres noms en pensant que mon nom de fichier ( routes ) pourrait ê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?

    
posée Frank Allan 25.07.2012 - 18:48
la source

5 réponses

51

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
    
réponse donnée Eric Carvalho 25.07.2012 - 18:57
la source
16

J'ai trouvé très souvent que le bon endroit pour définir une route statique se trouve dans / etc / network / interfaces, il est correct si vous voulez redémarrer globalement le réseau avec /etc/init.d/networking restart par exemple. Mais si vous allez utiliser ifdown et si pour arrêter individuellement une interface, ifup se terminera par l'erreur:

ifup eth1

RTNETLINK answers: File exists
Failed to bring up eth1.

À cause de cela, il essaie de définir une route mais elle est déjà définie. L'interface sera mise en ligne de toute façon mais ifup ne mettra pas à jour / run / network / ifstate, donc la prochaine fois que vous utiliserez ifdown, vous ne pourrez le faire que si vous utilisez le drapeau --force.

Pour continuer à configurer même si les 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
    
réponse donnée mseisdedos 08.02.2013 - 11:29
la source
8

Vous pouvez essayer ceci (ajoutez-le à /etc/network/interfaces ), ceci est un moyen presque complet pour 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/
    
réponse donnée mmehboobhan 26.07.2012 - 07:49
la source
4

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

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

La partie supérieure 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 configurer une liste de routes   associé soit à une interface donnée, soit à des routes globales.

Un exemple de route que j'utilise est:

192.168.240.0 255.255.255.0 192.168.130.3 em3
    
réponse donnée NGRhodes 20.08.2015 - 15:52
la source
2

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

je courais 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 "netmask" était manquant (également -n pas requis sur ubuntu)

    
réponse donnée Peter Perháč 08.09.2016 - 13:14
la source

Lire d'autres questions sur les étiquettes