Equilibrio de carga de servidor global para OpenVPN sobre OpenVPN con DSR

Equilibrio de carga de servidor global para OpenVPN sobre OpenVPN con DSR

Ok, entonces... No soy en ningún sentido un profesional en lo que respecta a redes, equilibrio de carga, túneles o conexiones VPN, PERO intenté algunas cosas para que este concepto teórico funcionara, obviamente sin éxito.

Lo que intento lograr: crear una VPN pública (tan abierta para conexiones externas desde Internet), hacer que los clientes se conecten a un servidor equilibrador de carga que luego reenvía el tráfico en función de la menor cantidad de conexiones a los servidores backend que no están en la misma red. y solo se puede acceder a través de Internet (no, desafortunadamente no hay forma de cambiar esto) y hacer que respondan directamente al cliente (DSR) para que el ancho de banda se produzca principalmente en los nodos backend y no en el balanceador de carga para que no haya cuellos de botella. en el equilibrador de carga.

Entonces mi idea fue: dado que nuestro proveedor de alojamiento no ofrece redes privadas, necesito conectar de forma remota varios servidores para equilibrar la carga juntos. Por lo tanto, para fines de prueba creé:

  • Un servidor equilibrador de carga que también funciona como servidor VPN interno para crear la red que pensé es necesario para conectar los servidores de forma privada y colocarlos en la misma subred.
  • Un primer nodo de servidor VPN externo que está "detrás" del servidor del equilibrador de carga en el sentido de que quiero conectarme al equilibrador de carga y luego reenviar el tráfico a uno de los nodos usando "menos conexiones" y luego hacer que el nodo se conecte directamente al cliente (Retorno directo del servidor) para que todo el ancho de banda no vuelva a ocurrir en el balanceador de carga
  • Una IP virtual (10.8.0.250)

Después de crear con éxito la VPN y conectarle el nodo, tengo las siguientes IP:

10.8.0.1 (Load Balancer and internal VPN Server)
10.8.0.10 (First external VPN Server node)

En el Load Balancer habilité el reenvío de IP y creé la siguiente entrada DNAT:

sudo iptables -t nat -A PREROUTING -i eth0 -p udp --dport 1194 -j DNAT --to-destination 10.8.0.250

y la siguiente entrada IPVS:

ipvsadm -A -u 10.8.0.250:1194 -s wlc
ipvsadm -a -u 10.8.0.250:1194 -r 10.8.0.10:1194 -g -w 1

También agregué la IP virtual a la interfaz de bucle invertido del nodo del servidor VPN externo para que aceptara el tráfico entrante por la IP virtual.

Eso es básicamente lo que hice y no funciona.

Ahora mi pregunta es: ¿Existe alguna posibilidad de que esto funcione o simplemente estoy intentando algo que es imposible en la forma en que lo hago? Y si es así: ¿Cuál sería la mejor manera de hacerlo dado que los servidores solo estarán conectados a través de Internet y no hay forma de agruparlos en la misma red privada?

¡Gracias de antemano por cualquier pista!

información relacionada