Połącz się z VPN (OpenVPN) z usługi dokującej w roju

11

Mam uruchomiony serwer OpenVPN, który ujawnia niektóre prywatne adresy IP, chciałbym, aby moje usługi dokowania roju miały dostęp do tych adresów.

W idealnym przypadku nie byłoby klienta OpenVPN „wewnątrz” kontenerów, ponieważ oczekuje się, że obrazy zostaną wdrożone w środowisku, w którym VPN nie będzie konieczny.

Co próbowałem do tej pory

Pomyślnie podłączyłem kontener do mojej sieci VPN za pomocą obrazu dperson / openvpn-client .

Udało mi się uruchomić inny kontener, używając tego kontenera jako sieci za pomocą --net=container:my-vpn-clientflagi.

Teraz próbuję skonfigurować usługę dokowania, która będzie uzyskiwać dostęp do moich prywatnych adresów IP, a znalazłem:

  • Nie mogę uruchomić klienta openVPN w usłudze, ponieważ nie można jej podać cap-add: NET_ADMIN. Dyskusja na ten temat dotyczy otwartych problemów, ale nadal są one otwarte.
  • Pomyślałem, że mogę uruchomić kontener klienta openVPN „obok” klastra roju, ale nie mogę go używać, network_mode: "container:my-vpn-client"ponieważ nie jest obsługiwany i ma sens, ponieważ nie mogłem zmusić dowolnego kontenera do obecności w każdym węźle roi się od nich, ale nie jest to sama usługa.
  • Próbowałem utworzyć sieć z możliwością przyłączania (mostek / nakładka) i po prostu włożyłem w nią mój klient klienta OpenVPN i oczekiwałem, że inni członkowie tej sieci przejdą przez tę rurkę ... i byłem rozczarowany.

Więc mam jakiś pomysł?

PS Jeśli może to pomóc, polega to głównie na skonfigurowaniu automatycznych testów, które będą uruchamiać usługi na pojedynczej maszynie dokującej w trybie roju, jak w inicjacji roju> rozmieszczenie stosu> uruchomienie testów> opuszczenie roju. Więc czy jest jakiś „hack” za to ... i może być zainteresowany;)


źródło

Odpowiedzi:

1

Robię to dokładnie tak samo, na twoim kliencie dokującym openvpn będziesz musiał skonfigurować 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

Dla mnie ustawiłem to, aby uruchamiało się przy starcie systemu przez iptables-restore

Na hoście dokera dodaj następujące elementy do / 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 Tego używasz gdzie

  • 172.18.0.0 to sieć dokerów
  • 172.18.0.50 jest jednym z twoich kontenerów dokerów
  • 172.18.0.100 to twój klient dockv opennpn
  • 192.168.11.222 to prywatny adres IP, do którego klienci mają mieć dostęp
  • tun0 to interfejs OpenVPN klienta dokera
  • eth1 to interfejs sieciowy 172.18.0.0 twojego klienta dokującego openvpn
iskry
źródło
Doskonała odpowiedź ... pozytywnie oceniany. Zauważ, że należy rozwiązać dwie kwestie: (1) zapewnienie, że ruch jest kierowany do właściwego miejsca, oraz (2) upewnienie się, że oprogramowanie działające w środowisku Docker wie, że trasa istnieje. Można też trzeba powiedzieć OpenVPN jak przekierować ruch, używając ccrpliku tak, jakby mieli do czynienia z siecią lokalną. Podobnie jak w przypadku wszystkich routingu TCP / IP, „ traceroutejest twoim najlepszym przyjacielem, tak jak jest, tcpdumplub WireShark”.
Mike Robinson,