2 votos

Reducir el número de rutas estáticas en el clúster de VPN

Estoy tratando de configurar una alta disponibilidad de OpenVPN clúster de nodos de trabajo que tenga una ip fija, independientemente de que el servidor de OpenVPN para conectarse. Este es un requisito, ya que las cosas están vinculados específicamente a la dirección ip. Yo estaba planeando tener un distribuida etcd en cada nodo maestro donde empujo a que nodo maestro tiene que los nodos de trabajo (conectar/desconectar el script con OpenVPN) y actualización, a continuación, actualiza la tabla de enrutamiento de cada maestro, en consecuencia (por ver el etcd clave).

Todo se ejecuta en la ventana acoplable contenedores.

He hecho un diagrama de la situación que tengo ahora con 3 nodos principales (M1,M2,M3), 3 nodos de trabajo (w1,w2,w3) y "sidecar" contenedores (M2M1, M3M1, M3M2) para conectar cada maestro a los otros maestros.

Con las siguientes tablas de enrutamiento configurado todo funciona bien, pero se requiere la actualización de las rutas de los nodos principales y el sidecar de contenedores. Aparte de la norma iptables -a FORWARD reglas para garantizar que el tráfico es enviado entre las interfaces solo tuve que agregar una regla iptables en los nodos de trabajo, e.g iptables -A POSTROUTING -o tap0 -m iprange --dst-range 5.0.0.0-5.255.255.255 -j SNAT --to-source 5.0.0.1 -t nat w1, de lo contrario sería enviar los paquetes con la dirección ip principal.

network situation

Me preguntaba si es posible la puesta en marcha de la política basado en rutas en el sidecar de contenedores tiene la regla "if it's coming from tap0 and it's from an ip in 5.0.0.0/8 then put it on eth0 towards the master node inside the same subnet" y al revés "if it's coming from eth0 and it's in an ip in 5.0.0.0/8 then put it on tap0 towards the vpn gateway". Si yo pudiera hacer eso, entonces sólo tengo que manipular las rutas de los nodos maestros

Estoy en lo correcto que sería necesario para marcar los paquetes con iptables y, a continuación, el programa de instalación de 2 tablas de ruta, uno correspondiente a cada marca y, a continuación, configurar la ruta en esa tabla?

Traté de establecer un puente antes, pero no pude conseguir que funcione.

(Y si hay una manera mucho mejor de cómo configurar una vpn de cluster server con ip fijas que a mi más bien complicada la instalación hágamelo saber)

EDITAR:

Con la ayuda de la respuesta a continuación he probado las siguientes instrucciones para M2M1, que funciona bien:

# Create the 2 tables to add specific routes on
echo "2     toeth" >> /etc/iproute2/rt_tables
echo "3     totap" >> /etc/iproute2/rt_tables

# Everything coming from eth0 will be going to the totap table and everything from tap0 will be going to the toeth table
ip rule add table totap iif eth0
ip rule add table toeth iif tap0

# Add the routes but on the specific table
ip r r 5.0.0.0/8 via 192.168.1.1 table totap
ip r r 5.0.0.0/8 via 172.30.2.2 table toeth

EDIT2:

En caso de que alguien esté interesado jugando con ella, he configurado un repo en github

2voto

RalfFriedl Puntos 494

Puede usar ip rule (ver man ip-rule ) para configurar tablas de enrutamiento específicas basadas en la IP de origen o de destino y en función de la interfaz de origen o destino. Debería ser capaz de lograr lo que quieres.

 SELECTOR := [ from PREFIX ] [ to PREFIX ] [ iif STRING ] [ oif STRING ] ...
 

EnMiMaquinaFunciona.com

EnMiMaquinaFunciona es una comunidad de administradores de sistemas en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros sysadmin, hacer tus propias preguntas o resolver las de los demás.

Powered by: