Quelle est la meilleure façon d'ajouter un itinéraire permanent?


11

Je dois ajouter un itinéraire qui ne sera pas supprimé après le redémarrage. J'ai lu ces deux façons de procéder:

Ajouter up route add -net 172.X.X.0/24 gw 172.X.X.X dev ethXau fichier /etc/network/interfaces

ou

Créez le fichier /etc/network/if-up.d/route avec:

#!/bin/sh
route add -net 172.X.X.0/24 gw 172.X.X.X dev ethX

et le rendre exécutable:

chmod +x /etc/network/if-up.d/route

Je suis donc confus. Quelle est la meilleure façon de procéder?


1
on dirait que vous êtes concentré sur un système Linux? (nous avons AIX, HPUX, Irix, Solaris, ....) sur le site.
— Jeff Schaller

Vous avez raison, désolé, je n'ai pas précisé que c'était sur un système Linux Debian. Merci de me le rappeler.
— Pozinux

Réponses:


14

Vous l'avez mentionné /etc/network/interfaces, c'est donc un système Debian ...

Créez une table de routage nommée. À titre d'exemple, j'ai utilisé le nom «mgmt» ci-dessous.

echo '200 mgmt' >> /etc/iproute2/rt_tables

Ci-dessus, le noyau prend en charge de nombreuses tables de routage et s'y réfère par des entiers uniques numérotés de 0 à 255. Un nom, mgmt, est également défini pour la table.

Ci-dessous, un aperçu d'un défaut /etc/iproute2/rt_tablessuit, montrant que certains numéros sont réservés. Le choix dans cette réponse de 200 est arbitraire; on peut utiliser n'importe quel nombre qui n'est pas déjà utilisé, 1-252.

#
# reserved values
#
255     local
254     main
253     default
0       unspec
#
# local
#

Ci-dessous, un fichier d'interfaces Debian 7/8 définit eth0et eth1. eth1est le réseau 172. eth0pourrait également utiliser DHCP. 172.16.100.10est l'adresse IP à attribuer eth1. 172.16.100.1est l'adresse IP du routeur.

source /etc/network/interfaces.d/*

# The loopback network interface
auto lo
iface lo inet loopback

# The production network interface
auto eth0
allow-hotplug eth0
# iface eth0 inet dhcp 
# Remove the stanzas below if using DHCP.
iface eth0 inet static
  address 10.10.10.140
  netmask 255.255.255.0
  gateway 10.10.10.1

# The management network interface
auto eth1
allow-hotplug eth1
iface eth1 inet static
  address 172.16.100.10
  netmask 255.255.255.0
  post-up ip route add 172.16.100.0/24 dev eth1 src 172.16.100.10 table mgmt
  post-up ip route add default via 172.16.100.1 dev eth1 table mgmt
  post-up ip rule add from 172.16.100.10/32 table mgmt
  post-up ip rule add to 172.16.100.10/32 table mgmt

Redémarrez ou redémarrez le réseau.

Mise à jour - Exposé sur EL

J'ai remarqué dans un commentaire que vous "vous demandiez aussi pour RHEL". Dans Enterprise Linux ("EL" - RHEL / CentOS / et al), créez une table de routage nommée comme mentionné ci-dessus.

Le /etc/sysconfig/networkfichier EL :

NETWORKING=yes
HOSTNAME=host.sld.tld
GATEWAY=10.10.10.1

Le /etc/sysconfig/network-scripts/ifcfg-eth0fichier EL , utilisant une configuration statique (sans NetworkManager et ne spécifiant pas "HWADDR" et "UUID" pour l'exemple ci-dessous) suit.

DEVICE=eth0
TYPE=Ethernet
ONBOOT=yes
NM_CONTROLLED=no
BOOTPROTOCOL=none
IPADDR=10.10.10.140
NETMASK=255.255.255.0
NETWORK=10.10.10.0
BROADCAST=10.10.10.255

LE /etc/sysconfig/network-scripts/ifcfg-eth1fichier EL (sans NetworkManager et ne spécifiant pas "HWADDR" et "UUID" pour l'exemple ci-dessous) suit.

DEVICE=eth1
TYPE=Ethernet
ONBOOT=yes
NM_CONTROLLED=no
BOOTPROTOCOL=none
IPADDR=172.16.100.10
NETMASK=255.255.255.0
NETWORK=172.16.100.0
BROADCAST=172.16.100.255

Le /etc/sysconfig/network-scripts/route-eth1fichier EL :

172.16.100.0/24 dev eth1 table mgmt
default via 172.16.100.1 dev eth1 table mgmt

Le /etc/sysconfig/network-scripts/rule-eth1fichier EL :

from 172.16.100.0/24 lookup mgmt

0

Sur la distribution basée sur Debian, vous pouvez ajouter une route statique de façon permanente comme suit:

 echo "up route add -net 172.X.X.X/24 gw 172.X.X.X dev ethX" | sudo tee --append /etc/network/interfaces

Sur la distribution basée sur RHEL:

echo "172.X.X.X/24 via 172.X.X.X" | sudo tee --append /etc/sysconfig/network-scripts/route-ethX

3
Le sudon'a aucun sens dans vos deux commandes. Soit vous êtes déjà root, donc ça >>marche, soit vous ne l'êtes pas, auquel cas le >>est appliqué en tant qu'utilisateur d'origine et seul le echoest exécuté en tant que root. En outre, cela échoue lamentablement s'il existe plusieurs interfaces définies dans /etc/network/interfaces.
— roaima

1
écho "qch" | sudo tee filename
— JSBach

cela ne fonctionne pas pour les instances debian dans gcp
— Parv Sharma

En effet, concernant la version Debian, la commande donnée dépend fortement de la dernière interface configurée dans le fichier / etc / network / interfaces
— Gohu
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.