Назад | Перейти на главную страницу

Маршрутизация трафика из одного контейнера докеров через VPN (предоставляется вторым контейнером)

Мне нужно понять, как заставить два контейнера докеров работать по такому сценарию:

Есть филиал с роутером и клиентом. Сеть - 192.168.190.0/24, а адреса - 1 и 57.

Где-то еще есть виртуальная машина, выходящая в Интернет с общедоступным IP-адресом X.Y.Z.K и установленной сверху средой докеров. Внутри два контейнера. Первый - это веб-сервер, подключенный только к частной сети с адресом 192.168.80.2. Другой контейнер имеет подключение к частной сети с адресом 192.168.80.44 и предоставляет свой порт 1194 на другом сетевом интерфейсе общедоступному IP-адресу.

Мне нужно, чтобы 192.168.190.57 открывал страницы на 192.168.80.2.

Часть VPN работает нормально (маршрутизатор подключается и получает ping-запрос от клиента), и мне в этом не нужна помощь.

Это макет моего файла для создания докеров.

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:

Сценарий, описанный ранее

В конце концов я обнаружил проблему.

По умолчанию, если вы определяете сеть internal: true это означает, что будут введены некоторые правила iptables, чтобы заблокировать выход всех контейнеров в сегменте локальной сети.

Вначале я думал, что это просто путь, скажем, от 192.168.80.2 к 192.168.80.1 (IP-адрес, назначенный хост-машине для этого сегмента локальной сети), а затем в Интернет. Внимательно прочитав все правила iptables, я обнаружил, что пересылка также отключена.

Удаление internal: true позволил контейнеру проходить через VPN, как и ожидалось, за счет предоставления веб-серверу прямого доступа к общедоступному Интернету.