Enrutar el tráfico de un contenedor de docker a través de una VPN (proporcionada por un segundo contenedor)

Necesito entender cómo hacer que dos contenedores docker funcionen con un escenario como este:

Hay una sucursal con un enrutador y un cliente. La red es 192.168.190.0/24 y las direcciones son 1 y 57.

Hay en otro lugar una máquina virtual frente a Internet con IP pública XYZK y el entorno docker instalado en la parte superior.En el interior hay dos contenedores. El primero es un servidor web que se encuentra solo en una red privada con la dirección 192.168.80.2. El otro contenedor tiene una conexión en la red privada con la dirección 192.168.80.44 y expone su puerto 1194 en la otra interfaz de red a la IP pública.

Necesito poder hacer que 192.168.190.57 abra las páginas en 192.168.80.2.

La parte de VPN funciona bien (el enrutador se conecta y se puede hacer ping desde el cliente) y no necesito ayuda en eso.

Esta es una maqueta de mi archivo docker-compose.

version: '2'services:  openvpn:    image: mycompany/openvpn    restart: 'always'    cap_add:      - NET_ADMIN    ports:      - '1194:1194/udp'    networks:      nat:      private_net:          ipv4_address: '192.168.80.44'  coredns:    image: 'nginx'    restart: 'always'    links:      - openvpn:private_net_vpn    networks:      private_net:        ipv4_address: '192.168.80.2'networks:  private_net:    internal: true    ipam:      config:        - subnet: '192.168.80.0/24'  nat:

Escenario descrito anteriormente

Al final descubrí el problema.

De forma predeterminada, si define una red internal: true significa que se promulgarán algunas reglas de iptables para bloquear la salida de todos los contenedores en el segmento lan.

Al principio pensé que era solo la ruta de, digamos, 192.168.80.2 a 192.168.80.1 (la ip asignada a la máquina host para ese segmento de LAN) y luego a Internet. Al leer detenidamente todas las reglas de iptables, descubrí que el reenvío también está deshabilitado.

Extracción de la internal: true permitió que el contenedor se enrutara a través de la VPN como se esperaba a costa de permitir que el servidor web accediera directamente a la Internet pública.

Sí, lo hago. 192.168.190.57 también puede hacer ping al servidor VPN. Además, el servidor VPN puede hacer ping a 192.168.80.2.

puede "‘rastrear "’ el servidor web desde el cliente VPN ? también intente “'curl”’, el ping puede estar bloqueado en el contenedor

No, no pude. Ningún protocolo en absoluto (icmp, tcp, udp) funcionó de la forma en que se configuró. Pero lo descubrí. Más sobre mi propia respuesta a continuación.

¿Qué imagen de Openvpn está utilizando ? ¿Ha probado el método de proxy web descrito aquí Docker Hub

Si observa detenidamente el esquema de la imagen, podrá ver que el contenedor de docker para la VPN es un servidor, no un cliente. No creo que esa imagen funcione para mí.

ok, ¿tiene esta entrada en " ‘push’ route 192.168.80.0 255.255.255.0 “” en el archivo de configuración de su servidor openvpn ?