# [Réseaux] Sauvegarder la table de routage.

## RaX

Bonsoir,

J'ai un petit peu cherché sur le Net avant de poster ici mais pour le moment sans trouver mon bonheur, c'est pourquoi j'ose pauser la question qui tue: "Comment peux t'on sauvegarder la table de routage d'un machine Linux?"

En gros j'ai un routeur Linux, tous se qui a de plus mignon, et qui connais plein de réseau (~2000) et plein d'hôtes (~50) (le chanceux). Seul petit problème, énormément de route ont été ajouté à la main (route add -net xxxxx) sans passer par la case 'sauvegarde dans un fichier'.

C'est pourquoi j'aimerai pouvoir sauvegarder cette table est pouvoir la restaurer après un éventuel re-démarrage de la machine.

Avant d'écrire un petit script qui ne marchera qu'a moitié (si c moi qui le code) je voulais savoir si une méthode plus élégante existe.

Bonne soirée et Merci.

----------

## kwenspc

Y a bien le fichier proc /proc/net/route mais c'est un peu brute de coffrage. (Il reste bien sur les commandes route ou ip pour un listing plus "lisible"). 

Je vois pas comment faire ça sans un script ou en codant en C* via une socket de type AF_NETLINK. Je serais intéressé par la réponse tiens.

[edit] ou n'importe quel langage qui wrap l'api socket [/edit]

----------

## truc

Comme l'a dit kwenspc, il y a la commande 'ip' que tu peux utiliser, il doit vraiment y avoir moyen de faire quelque chose avec ça car tu peux prendre une ligne de sortie pour la remettre en paramètre, j'ai souvent fait ça manuellement, donc, il y a sans doute moyen d'automatiser la chose.

exemple: *Quote:*   

> ip r l
> 
> 192.168.50.0/24 dev eth0  proto kernel  scope link  src 192.168.50.122 
> 
> 10.11.100.0/24 dev eth0  proto kernel  scope link  src 10.11.100.134 
> ...

 

=>  *Quote:*   

> ip r d 192.168.0.0/16 via 192.168.50.1 dev eth0

 

pour enlever la route, (ip r a .. pour l'ajouter), fin tu vois l'idée quoi

Donc je pense que tu peux jarter plutôt sereinement toute les routes 'scope link', puis tu sauvegardes le reste.

En gros

```
ip r l | sed -n '/[[:space:]]scope link[[:space:]]/d ; /[[:space:]]via[[:space:]]/s/^/ip r a /p' > rbkp
```

Puis, pour les remettre

```
. rbkp
```

----------

## geekounet

Heu, ya pas moyen de simplement tout sauver dans le /etc/conf.d/net ?  :Smile: 

----------

## kwenspc

 *geekounet wrote:*   

> Heu, ya pas moyen de simplement tout sauver dans le /etc/conf.d/net ? 

 

RaX a pas précisé la distrib  :Wink: 

----------

## RaX

 *Quote:*   

> 
> 
> Heu, ya pas moyen de simplement tout sauver dans le /etc/conf.d/net ? 

 

La question n'est pas où, mais comment :p

truc:

Comme ta proposition je crois que je vais devoir scripter. malheureusement j'ai pas iproute2 sur tous les routeurs  donc je vais bosser sur la sortie de netstat -rn.

J'ai un peu peur de me louper et de perdre des routes, mais bon faut vivre dangereusement parait-il.

----------

## kwenspc

 *RaX wrote:*   

> J'ai un peu peur de me louper et de perdre des routes, mais bon faut vivre dangereusement parait-il.

 

À ce qu'il semble vous vivez déjà dangereusement puisque vous n'avez sauvé aucune routes. imagines une coupure de courant ou un crash... ^^

(À ressortir comme argument si jamais on te demande pourquoi il manque 1 ou 2 routes après ta manip, au moins il vous restera la plus gros)

----------

## truc

Bon, dans ce cas, awk sera plus approprié.

Bon, je n'ai pas vérifié la syntaxe de route, mais c'est juste pour te donner un point de départ:

```
netstat -rn finet | awk '( $4 ~ /G/ ) { printf "route add -net %s -netmask %s -gateway %s %s\n", $1, $3, $2, $NF }'

route add -net 192.168.0.0 -netmask 255.255.0.0 -gateway 192.168.50.1 eth0

route add -net 127.0.0.0 -netmask 255.0.0.0 -gateway 127.0.0.1 lo

route add -net 0.0.0.0 -netmask 0.0.0.0 -gateway 10.11.100.1 eth0

```

Après faudra peut-être traiter des cas particuliers:

Est-ce que -net A.B.C.D -netmask 255.255.255.255 fonctionne ou faut-il ajouter la route avec -host

Tu vois l'idée quoi;)

----------

## RaX

Bonjour,

Bon je m'en suis sorti, avec la précieuse aide de "truc", pour le moment les clients ne gueule pas je pense donc que je n'ai perdu bcp de route. On verra bien dans la matinée. Pour les hôtes c'est supporté même avec avec route add -net, mais bon j'aurai pu faire un check de l'indice genre:  UGH = "route add -host" else "route add -net". Mais bon seul le résultat compte, même si ce n'ai pas très "esthétique"

kwenspc:

Bonne remarque, pourquoi crois-tu que je priais tous les soirs le dieu onduleur et le dieu disque dur ? Quand j'ai vu que on vais aucunes sauvegardes j'avais même peur de me connecter dessus en SSH =). 

Merci à tous en tous cas.

----------

