¿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?


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

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

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
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.