从另一个容器访问VPN容器上的客户端

时间:2020-06-02 10:41:11

标签: docker docker-compose openvpn

美好的一天,

很抱歉,如果重复的话,我的要求与this帖子相同,但没有答案,这就是为什么我再次询问。

我有多个容器在服务器上运行,但让我们假设以下三个容器:

  1. 运行Web服务的容器A
  2. 运行数据库的容器B
  3. 运行OpenVPN的容器C,该容器可以访问2个客户端C1( 192.168.100.1 )和C2( 192.168.100.2

我希望容器A可以访问容器C上的VPN网络(以便能够ping通C1和C2),并且不允许容器B(其他任何容器)都可以访问到C1和C2。

目前,VPN容器已连接到HOST网络,但这允许所有容器都可以访问VPN

这是我尝试过的:

容器A和C

version: '2'
services:
  odoo:
    container_name: container_a
    ports:
      - "8990:8069"
      - "8992:8072"
    tty: true
    external_links:
      - db12
    networks:
      - default
      - vpn_network

  vpn:
      image: dperson/openvpn-client
      container_name: container_c
      cap_add:
        - net_admin
      networks:
        - vpn_network
      read_only: true
      tmpfs:
        - /run
        - /tmp
      restart: unless-stopped
      security_opt:
        - label:disable
      stdin_open: true
      tty: true
      volumes:
        - /dev/net:/dev/net:z
        - ./vpn:/vpn ## This is where the VPN config is

      ## THIS GIVES ACCESS FOR ALL CONTAINERS AND I DO NOT WANT THAT
      # network_mode: "host"

networks:
  default:
    external:
      name: postgres_default12
  vpn_network:
    external:
      name: vpn_network

容器B

version: '2'

services:
  db_primary:
    build: .
    image: sudotechodoo/odoo:postgres12
    container_name: db12
    ports:
      - "5432:5432"
    restart: always
    volumes:
      - data_postgres_main:/var/lib/postgresql/data

volumes:
  data_postgres_main:
    external:
      name: postgres_data12

networks:
  default:
    external:
      name: postgres_default12

如何更改它以便可以在容器A中ping C1或C2,但不能从容器C中ping通?

提前谢谢

0 个答案:

没有答案