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.