Подключение к VPN (OpenVPN) из службы docker в swarm

у меня есть сервер OpenVPN работает подвергая некоторые частные IP-адреса, я хотел бы, чтобы мои докер Рой услуги для доступа к этим адресам.

В идеале, не было бы клиента OpenVPN "внутри" контейнеров, поскольку образы, как ожидается, будут развернуты в среде, где VPN не потребуется.

то, что я пробовал до сих пор

я успешно подключил контейнер к моему VPN с помощью dperson / openvpn-client изображение.

я успешно запустил другой контейнер, используя этот контейнер в качестве сети, используя --net=container:my-vpn-client флаг.

теперь Я пытаюсь создать docker service это будет доступ к моим частным IP-адресам и то, что я нашел:

  • я не могу запустить клиент openVPN в сервисе, так как он не может быть дан cap-add: NET_ADMIN. Есть открытые проблемы с Docker, обсуждающие этот вопрос, но они все еще открыты.
  • я понял, что я возможно, контейнер клиента openVPN запускается "рядом" с кластером swarm, но я не могу использовать network_mode: "container:my-vpn-client" поскольку он не поддерживается и имеет смысл, так как я не мог заставить произвольный контейнер присутствовать на каждом узле Роя, не будучи самим сервисом.
  • я попытался создать присоединяемую сеть (мост/оверлей) и просто вставил в нее свой клиентский контейнер OpenVPN и ожидал, что волшебным образом другие члены этой сети пройдут через эту трубу... и я был разочарованный.

Итак, я здесь, есть идеи?

P. S. Если это может помочь, это в основном настроить автоматические тесты, которые будут выполняться службы на один докер машиной находитесь в рой, как рой инит >
стек развертывания > выполнить тесты > Рой отпуск. Так что, если есть "взломать" для этого... i мая будет интересно 😉

22
задан sparks
29.01.2023 22:26 Количество просмотров материала 3127
Распечатать страницу

1 ответ

Я делаю то же самое, на вашем клиенте OpenVPN docker вам нужно будет настроить NAT

iptables -t nat -A POSTROUTING -s 172.18.0.0/24 -o tun0 -j SNAT --to-source 10.8.0.10
iptables -t nat -A POSTROUTING -d 172.18.0.50/32 -o eth1 -j SNAT --to-source 172.18.0.100

для меня я установил это для запуска при загрузке через iptables-restore

на хосте docker добавьте следующее в /etc/network/interfaces

post-up ip rule add from 172.18.0.0/16 table 200
post-up ip route add 192.168.11.222 via 172.18.0.100 table 200

NB это то, что вы используете, где

  • 172.18.0.0-ваша сеть docker
  • 172.18.0.50 является одним из ваших докер контейнеров
  • 172.18.0.100 ваш клиент docker openvpn
  • 192.168.11.222-это частный IP-адрес, к которому клиенты docker должны иметь доступ
  • tun0-это интерфейс OpenVPN вашего клиента docker
  • eth1-это сеть 172.18.0.0 интерфейс openvpn клиент докер
1
отвечен sparks 2023-01-31 06:14

Постоянная ссылка на данную страницу: [ Скопировать ссылку | Сгенерировать QR-код ]

Ваш ответ

Опубликуйте как Гость или авторизуйтесь

Имя
Вверх