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".