GNU/Linux >> Tutoriales Linux >  >> Linux

Cómo agregar múltiples rutas en Linux usando ejemplos de comandos ip

Además de la ruta predeterminada, también puede configurar rutas adicionales.

Por ejemplo, su servidor puede tener 2 interfaces (eth0 y eth1). De forma predeterminada, todo el tráfico se enruta a través de la interfaz eth0, independientemente de la dirección IP que haya configurado en eth1.

Para enrutar el tráfico entrante y saliente a través de eth1, que no sea la ruta predeterminada (eth0), también debe agregar rutas adicionales para eth1 .

En este tutorial, usemos el siguiente ejemplo:

  • eth0 se configuró con la dirección IP 19.86.101.54 con la máscara de red 255.255.255.0 y la puerta de enlace predeterminada 19.86.101.1
  • eth1 se configuró con la dirección IP 19.86.100.176 con la máscara de red 255.255.255.0 y la dirección IP de la puerta de enlace es 19.86.100.1

Puede ver su dirección IP actual de sus tarjetas de interfaz usando el comando ifconfig como se muestra a continuación.

# ifconfig -a
eth0      Link encap:Ethernet  HWaddr 00:50:56:8E:0B:EC
          inet addr:19.86.101.54  Bcast:19.86.101.255  Mask:255.255.255.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:3735 errors:0 dropped:0 overruns:0 frame:0
          TX packets:336 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:295679 (288.7 Kb)  TX bytes:50312 (49.1 Kb)

eth1      Link encap:Ethernet  HWaddr 00:50:56:8E:27:0D
          inet addr:19.86.100.176  Bcast:19.86.100.255  Mask:255.255.255.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:14 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:840 (840.0 b)  TX bytes:0 (0.0 b)

Además, la salida del comando netstat indica que la puerta de enlace predeterminada apunta a eth0,

# netstat -rn
Kernel IP routing table
Destination     Gateway         Genmask         Flags   MSS Window  irtt Iface
0.0.0.0         19.86.101.1     0.0.0.0         UG        0 0          0 eth0
19.86.100.0     0.0.0.0         255.255.255.0   U         0 0          0 eth1
19.86.101.0     0.0.0.0         255.255.255.0   U         0 0          0 eth0
127.0.0.0       0.0.0.0         255.0.0.0       U         0 0          0 lo
169.254.0.0     0.0.0.0         255.255.0.0     U         0 0          0 eth0

Con la configuración anterior, es posible que pueda hacer ping en ambas puertas de enlace y comunicarse con otros dispositivos sin ningún problema. Pero recuerde que todo el tráfico se enruta a través de eth0 de forma predeterminada.

Cuando hace ping a la dirección IP 19.86.100.176 desde fuera de su red, puede notar que no se podrá hacer ping.

Para implementar esto, necesita crear una nueva política en la tabla de enrutamiento. La tabla de enrutamiento se encuentra en /etc/iproute2/rt_tables. El archivo de regla inicial antes de la configuración puede parecerse al que se muestra a continuación.

# cat /etc/iproute2/rt_tables
#
# reserved values
#
255     local
254     main
253     default
0       unspec
#
# local
#
#1      inr.ruhep
#

Para ver todas las reglas actuales, use el comando ip como se muestra a continuación:

# ip rule show
0:      from all lookup local
32766:  from all lookup main
32767:  from all lookup default

Primero, realice una copia de seguridad de las rt_Tables antes de realizar cualquier cambio.

cd /etc/iproute2
cp rt_tables rt_tables.orig

A continuación, cree una nueva entrada en la tabla de enrutamiento de políticas en el archivo /etc/iproute2/rt_tables:

echo "1 admin" >> /etc/iproute2/rt_tables

Ahora agregue las entradas de enrutamiento en la tabla de administración.

ip route add 19.86.100.0/24 dev eth1 src 19.86.100.176 table admin
ip route add default via 19.86.100.1 dev eth1 table admin

En el ejemplo anterior:

  • En el primer comando ip, agregamos la subred 19.86.100.0 con una máscara de red 255.255.255.0 con la dirección IP de origen 19.86.100.176 y el dispositivo eth1 a la tabla de administración.
  • En el segundo comando ip, agregamos la ruta 19.86.100.1 a la tabla de administración. De esta forma, todas las reglas definidas en la tabla de administración enrutan el tráfico a través del dispositivo eth1.

Una vez que los comandos anteriores se ejecutan con éxito, debe indicarle al sistema operativo cómo usar esta tabla.

En la "muestra de reglas de ip" puede notar la línea "32766:de todas las búsquedas principales". Esta es la línea que indica al sistema operativo que enrute todo el tráfico definido en la tabla "principal", que es la puerta de enlace predeterminada.

Todas las reglas se ejecutan en orden ascendente. Por lo tanto, agregaremos entradas de reglas sobre la tabla "principal".

ip rule add from 19.86.100.176/24 table admin
ip rule add to 19.86.100.176/24 table admin
ip route flush cache

En el ejemplo anterior:

  • El primer comando agrega la regla de que todo el tráfico que va a la IP de eth1 debe usar la tabla de enrutamiento "admin" en lugar de la "principal".
  • El segundo comando agrega la regla de que todo el tráfico saliente de la IP de eth1 debe usar la tabla de enrutamiento "admin" en lugar de la "principal".
  • El tercer comando se usa para confirmar todos estos cambios en los comandos anteriores

Finalmente, verifique que sus cambios se hayan realizado correctamente usando el siguiente comando:

# ip rule show
0:      from all lookup local
32764:  from all to 19.86.100.176/24 lookup admin
32765:  from 19.86.100.176/24 lookup admin
32766:  from all lookup main
32767:  from all lookup default

En este punto, debería poder hacer ping a la dirección IP 19.86.100.176 desde la red externa y ver que todo el tráfico que se supone que usa eth1 funciona como se esperaba.

Para que estos cambios sean persistentes durante el reinicio, puede agregar estos comandos a /etc/init.d/boot.local (para SUSE Linux) o /etc/rc.d/rc.local (para Redhat, CentOS).

Si desea configurar una dirección IP más en una subred diferente, repita todos los pasos anteriores, pero use un nombre de tabla diferente. En lugar de la tabla "admin", use la tabla "admin-new".


Linux
  1. Cómo reiniciar Linux usando la línea de comandos

  2. ¿Cómo matar un proceso en Linux usando el comando?

  3. 5 ejemplos prácticos de comandos de fuser de Linux

  4. Cómo navegar por la línea de comandos de Linux mediante combinación de teclas (ejemplos de comandos Ctrl de Linux)

  5. Cómo acelerar el proceso de arranque de Linux usando ejemplos de comandos de Startpar

Cómo crear un directorio en Linux usando el comando mkdir

Cómo usar el comando Dig en Linux (10 ejemplos)

Cómo usar el comando rm de Linux con ejemplos

Comando Agregar ruta de Linux con ejemplos

7 ejemplos de comandos de ruta de Linux (cómo agregar una ruta en Linux)

Ejemplos de comandos de ruta en Linux