Sürü üzerinde bir docker hizmetinden bir VPN'ye (OpenVPN) bağlanma


11

Bazı özel IP adreslerini açığa çıkaran bir OpenVPN sunucum var, docker sürülerimin bu adreslere erişmesini istiyorum.

İdeal olarak, görüntülerin bir VPN'nin gerekli olmayacağı bir ortamda dağıtılması beklendiği için kapların içinde "OpenVPN istemcisi" olmazdı.

Şimdiye kadar denedim

VPN'ime dperson / openvpn-client görüntüsüyle bir kapsayıcı bağladım .

--net=container:my-vpn-clientBayrağı kullanarak ağı olarak o kapsayıcıyı kullanarak başka bir kapsayıcı daha başarıyla başlattım .

Şimdi özel IP adreslerime erişecek bir docker hizmeti kurmaya çalışıyorum ve ne buldum:

  • OpenVPN istemcisini verilemediği için bir hizmette çalıştıramıyorum cap-add: NET_ADMIN. Docker ile bu konuyu tartışan açık sorunlar var ama hala açıklar.
  • Ben sürüsü küme "yanında" çalıştırmak OpenVPN istemci konteyner olabilir düşündüm, ama network_mode: "container:my-vpn-client"desteklenmediği gibi mantıklı olamaz ve mantıklı çünkü ben muhtemelen her düğüm üzerinde keyfi bir kap mevcut olmaya zorlayamadı hizmetin kendisi olmadan sürüsü.
  • Takılabilir bir ağ (köprü / kaplama) oluşturmayı denedim ve OpenVPN istemci konteyneri içine yapıştırdım ve sihirli bir şekilde o ağın diğer üyelerinin bu borudan geçmesini bekledim ... ve hayal kırıklığına uğradım.

Yani buradayım, bir fikrin var mı?

PS Eğer yardımcı olabilirse, bu temelde sürüsü init> yığın dağıtım> çalışma testleri> sürüsü izni gibi, sürüsü modunda tek liman işçisi makinede hizmetleri çalıştıracak bazı otomatik testler kurmaktır. Yani bunun için bir "kesmek" varsa ... ilginizi çekebilir ;)

Yanıtlar:


1

Aynı şeyi yapıyorum, openvpn docker istemcinizde NAT yapılandırmanız gerekecek

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

Benim için bunu bir iptables-restore yoluyla önyükleme yapmak üzere ayarladım

Docker ana makinenizde, / etc / network / arabirimlerine aşağıdakileri ekleyin

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 Nerede kullandığınız budur

  • 172.18.0.0 liman işçisi ağınız
  • 172.18.0.50 liman işçisi konteynırlarınızdan biridir
  • 172.18.0.100 docker openvpn istemcinizdir
  • 192.168.11.222, liman işçisi istemcilerinizin erişmesini istediğiniz özel IP'dir
  • tun0, docker istemcinizin OpenVPN arayüzüdür
  • eth1, openvpn docker istemcinizin 172.18.0.0 ağ arabirimidir

Mükemmel bir yanıt ... seçildi. Ele alınması gereken iki konu olduğuna dikkat edin : (1) trafiğin uygun yere yönlendirilmesini sağlamak ve (2) Docker ortamında çalışan yazılımın rotanın var olduğunu bilmesini sağlamak. Sen olabilir ayrıca bir kullanarak, rota nasıl trafik OpenVPN'i söylememe gerek ccryerel bir ağ ile uğraşan sanki dosyayı. Tüm TCP / IP yönlendirmelerinde olduğu gibi, " tracerouteolduğu gibi en iyi arkadaşınız tcpdumpveya WireShark."
Mike Robinson
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.