Policy Based Routing en CentOS 7
Por defecto en los servidores CentOS con multiples interfaces de red todo el tráfico es devuelto por la interface que contenga la ruta por defecto. Este comportamiento no tiene nada de malo hasta que nos encontramos en escenarios donde es obligatorio separar el tráfico.
Escenario
En nuestro escenario partimos de la presencia de un servidor con dos interfaces de red, la primera en la red 10.0.2.0/24 que tiene la puerta de enlace por defecto en la IP 10.0.2.2, vamos a llamarla “red pública”, y la segunda en la red 192.168.56.20/24, vamos a llamarla “red de gestión”. Queremos que todo el tráfico de la red de gestión se enrute por la segunda interfaz por temas de seguridad.
[root@routes ~]# ip addr show | grep "inet\b" | awk '{print $2" "$NF}'
127.0.0.1/8 lo
10.0.2.15/24 enp0s3
192.168.56.22/24 enp0s8
[root@routes ~]# ip route|grep default
default via 10.0.2.2 dev enp0s3 proto static metric 100
Instrucciones
Antes de comenzar a configurar PBR, en CentOS 7 es necesario instalar el siguiente paquete:
[root@routes ~]# yum install -y NetworkManager-dispatcher-routing-rules
El siguiente paso es crear la entrada de la política de enrutado:
[root@routes ~]# echo "2 mgt" >> /etc/iproute2/rt_tables
El siguiente paso es crear las reglas para la interfaz enp0s8:
[root@routes ~]# vi /etc/sysconfig/network-scripts/rule-enp0s8
from 192.168.56.22/32 table mgt
to 192.168.56.22/32 table mgt
El siguiente paso es crear la ruta por defecto para la interfaz enp0s8:
[root@routes ~]# vi /etc/sysconfig/network-scripts/route-enp0s8
default via 192.168.56.21 dev enp0s8 table mgt
Una vez configurado todo, tenemos que recargar la configuración para hacerla efectiva:
[root@routes ~]# nmcli connection reload
Comrpobamos que todo está configurado según esperabamos:
[root@routes ~]# ip rule show
0: from all lookup local
32764: from all to 192.168.56.22 lookup mgt
32765: from 192.168.56.22 lookup mgt
32766: from all lookup main
32767: from all lookup default
[root@routes ~]# ip route show table mgt
default via 192.168.56.21 dev enp0s8