Tengo un servidor OpenVPN ejecutándose que expone algunas direcciones IP privadas, me gustaría que mis servicios de enjambre Docker accedan a esas direcciones.
Idealmente, no habría un cliente OpenVPN "dentro" de los contenedores, ya que se espera que las imágenes se implementen en un entorno donde no será necesaria una VPN.
Lo que probé hasta ahora
Conecté con éxito un contenedor a mi VPN con la imagen dperson / openvpn-client .
Lancé con éxito otro contenedor usando ese contenedor como su red usando la --net=container:my-vpn-client
bandera.
Ahora estoy tratando de configurar un servicio acoplable que accederá a mis direcciones IP privadas y lo que encontré es:
- No puedo ejecutar el cliente openVPN en un servicio ya que no se puede proporcionar
cap-add: NET_ADMIN
. Hay problemas abiertos con Docker discutiendo este asunto, pero aún están abiertos. - Pensé que podría hacer que el contenedor del cliente openVPN se ejecute "al lado" del clúster de enjambre, pero no puedo usarlo
network_mode: "container:my-vpn-client"
ya que no es compatible y tiene sentido ya que no podría forzar la presencia de un contenedor arbitrario en cada nodo del enjambre sin que sea un servicio en sí mismo. - Intenté crear una red conectable (puente / superposición) y simplemente pegué mi contenedor de cliente OpenVPN y espero que mágicamente otros miembros de esa red atraviesen esa tubería ... y me decepcionó.
Así que aquí estoy, ¿alguna idea?
PD: si puede ayudar, esto es principalmente para configurar algunas pruebas automatizadas que ejecutarán los servicios en una sola máquina acoplable en modo enjambre, como en swarm init> despliegue de pila> ejecutar pruebas> dejar enjambre. Entonces, si hay un "truco" para eso ... podría estar interesado;)
ccr
archivo como si se tratara de una red local. Como con todo el enrutamiento TCP / IP, "traceroute
es su mejor amigo, tal como estátcpdump
o WireShark".