Рейтинг:0

Docker подключается к определенным служебным портам через WAN или VPN

флаг de

Есть ли хорошее руководство или пример для настройки сложной (общедоступной/частной) сети с докером?

Итак, забегая вперед, предположим:

  1. У меня есть рабочая установка обратного прокси, работающая в докере. (jwilder/nginx-прокси)
  2. У меня есть служба Pihole, работающая в докере. (Планируйте принудительно использовать его внутри VPN)
  3. У меня есть VPN-сервер, работающий в докере. (килеманна/openvpn)
  4. У меня несколько серверов.

Для каждого стека службы, работающего в докере, запущенном с помощью docker compose, я указываю 2 сети, интерфейс и серверную часть.

сети:
  внешний интерфейс:
    внешний:
      имя: реверс_прокси
  серверная часть:
    внешний:
      имя: впн

Внешний интерфейс указывает, что к нему можно получить доступ через обратный прокси-сервер. Серверная часть указывает, что к ней можно получить доступ через VPN.

Когда я создаю службы в докере, независимо от того, на каком сервере они находятся, я хочу иметь доступ к серверным службам только через ту же VPN.

Так, например, если я запускаю:

Сервисы:
  дБ:
    изображение: MySQL: 5.7
    имя_контейнера: db.service1.example.com
  сервис1:
    зависит от:
      - дб
    изображение: вордпресс
    имя_контейнера: service1.example.com
    среда:
      - ВИРТУАЛЬНЫЙ_ХОСТ=service1.example.com
      - LETSENCRYPT_HOST=service1.example.com
      - ВИРТУАЛЬНЫЙ_ПОРТ=80
    сети:
      - бэкэнд
      - внешний интерфейс
  административная служба:
    изображение: phpmyadmin/phpmyadmin
    имя_контейнера: admin.service1.example.com
    среда:
      - ВИРТУАЛЬНЫЙ_ХОСТ=admin.service1.example.com
      - LETSENCRYPT_HOST=admin.service1.example.com
      - ВИРТУАЛЬНЫЙ_ПОРТ=80
    сети:
      - бэкэнд
    
сети:
  внешний интерфейс:
    внешний:
      имя: реверс_прокси
  серверная часть:
    внешний:
      имя: впн

(Обратите внимание, что приведенный выше код не содержит информации о правильной настройке экземпляра mysql и не будет работать. Это всего лишь пример)

Чтобы сделать то, что я хочу, я предполагаю, что мне нужен контейнер VPN-клиента, подключенный к контейнеру VPN-сервера (если он находится на том же сервере, что и контейнер VPN-сервера) и второй обратный прокси-сервер для управления маршрутизацией? Я не совсем уверен. Я также не уверен, что вместо соединений клиент-сервер в VPN мне нужны соединения сервера-сервера, которые я даже не уверен, что это правильно/возможно

Конечная цель - иметь http://service1.example.com виден в открытом интернете. и имеют http://admin.service1.example.com 404, если вы не подключены к VPN.

Я на правильном пути?

Из того, что я видел о доступе к службам в докере через VPN, я могу маршрутизировать весь сервис и все порты только через VPN. Или же иметь порты, указанные в самом VPN Который направляет трафик контейнера через VPN, но доступ к нему не ограничивается VPN.

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.