¿Cuál es la mejor manera de agregar una ruta permanente?

11

Necesito agregar una ruta que no se eliminará después de reiniciar. Leí estas dos formas de hacerlo:

Agregar up route add -net 172.X.X.0/24 gw 172.X.X.X dev ethXal archivo /etc/network/interfaces

o

Cree el archivo /etc/network/if-up.d/route con:

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

y hacerlo ejecutable:

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

Entonces estoy confundido. ¿Cuál es la mejor manera de hacerlo?

Pozinux
fuente
1
Parece que estás enfocado en un sistema Linux? (tenemos AIX, HPUX, Irix, Solaris, ....) en el sitio.
Jeff Schaller
Tienes razón, lo siento, no especifiqué que estaba en un sistema Linux Debian. Gracias por recordármelo.
Pozinux el

Respuestas:

14

Usted mencionó /etc/network/interfaces, entonces es un sistema Debian ...

Crear una tabla de enrutamiento con nombre. Como ejemplo, he usado el nombre "mgmt" a continuación.

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

Arriba, el kernel admite muchas tablas de enrutamiento y se refiere a ellas mediante enteros únicos numerados del 0 al 255. También se define un nombre, mgmt, para la tabla.

A continuación, /etc/iproute2/rt_tablessigue un vistazo a un valor predeterminado , que muestra que algunos números están reservados. La elección en esta respuesta de 200 es arbitraria; uno puede usar cualquier número que no esté en uso, 1-252.

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

A continuación, un archivo de interfaces Debian 7/8 define eth0y eth1. eth1es la red 172. eth0podría usar DHCP también. 172.16.100.10es la dirección IP para asignar eth1. 172.16.100.1es la dirección IP del enrutador.

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

Reinicie o reinicie la red.

Actualización - Expounding en EL

Me di cuenta en un comentario de que "también te estabas preguntando por RHEL". En Enterprise Linux ("EL" - RHEL / CentOS / et al), cree una tabla de enrutamiento con nombre como se mencionó anteriormente.

El /etc/sysconfig/networkarchivo EL :

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

El /etc/sysconfig/network-scripts/ifcfg-eth0archivo EL , usando una configuración estática (sin NetworkManager y sin especificar "HWADDR" y "UUID" para el ejemplo, a continuación) sigue.

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

A /etc/sysconfig/network-scripts/ifcfg-eth1continuación se muestra EL archivo EL (sin NetworkManager y sin especificar "HWADDR" y "UUID" para el ejemplo a continuación).

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

El /etc/sysconfig/network-scripts/route-eth1archivo EL :

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

El /etc/sysconfig/network-scripts/rule-eth1archivo EL :

from 172.16.100.0/24 lookup mgmt
Christopher
fuente
0

En la distribución basada en Debian, puede agregar una ruta estática de forma permanente de la siguiente manera:

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

En la distribución basada en RHEL:

echo "172.X.X.X/24 via 172.X.X.X" | sudo tee --append /etc/sysconfig/network-scripts/route-ethX
GAD3R
fuente
3
El no sudotiene sentido en sus dos comandos. O ya eres root, por lo que >>funciona, o no lo eres, en cuyo caso >>se aplica como tu usuario original y solo echose ejecuta como root. Además, esto falla lamentablemente si hay múltiples interfaces definidas en /etc/network/interfaces.
roaima
1
echo "algo" | sudo tee filename
JSBach
esto no funciona para instancias de Debian en gcp
Parv Sharma 02 de
De hecho, con respecto a la versión de Debian, el comando dado depende en gran medida de qué interfaz esté configurada por última vez en el archivo / etc / network / interfaces
Gohu