झुंड पर एक docker सेवा से VPN (OpenVPN) से कनेक्ट करें


11

मेरे पास एक OpenVPN सर्वर है जो कुछ निजी IP पतों को उजागर करता है, मैं चाहूंगा कि मेरी docker swarm सेवाएं उन पतों को एक्सेस करें।

आदर्श रूप से, एक OpenVPN क्लाइंट "इनसाइड" नहीं होगा क्योंकि छवियों को एक ऐसे वातावरण में तैनात किए जाने की उम्मीद है जहां एक वीपीएन आवश्यक नहीं होगा।

मैंने अब तक क्या कोशिश की

मैंने dperson / openvpn-client छवि के साथ अपने VPN में सफलतापूर्वक एक कंटेनर कनेक्ट किया है ।

मैंने उस कंटेनर का उपयोग करके सफलतापूर्वक एक और कंटेनर लॉन्च किया, जो --net=container:my-vpn-clientध्वज के उपयोग से उसके नेटवर्क के रूप में है ।

अब मैं एक डॉकटर सेवा स्थापित करने की कोशिश कर रहा हूं जो मेरे निजी आईपी पते तक पहुंच जाएगी और जो मुझे मिला है वह है:

  • मैं ओपनवीपीएन क्लाइंट को एक सेवा में नहीं चला सकता क्योंकि इसे नहीं दिया जा सकता cap-add: NET_ADMIN। इस मामले पर चर्चा करने वाले डॉकटर के साथ खुले मुद्दे हैं लेकिन वे अभी भी खुले हैं।
  • मुझे लगा कि मैं झुंड क्लस्टर के बगल में खुले वीपीएन क्लाइंट कंटेनर चला सकता हूं, लेकिन मैं इसका उपयोग नहीं कर सकता network_mode: "container:my-vpn-client"क्योंकि यह समर्थित नहीं है और इसका मतलब नहीं है क्योंकि मैं संभवतः एक मनमाना कंटेनर को हर नोड पर मौजूद होने के लिए मजबूर नहीं कर सकता। इसके बिना ही स्वयं सेवा हो जाती है।
  • मैंने एक अटैच नेटवर्क (ब्रिज / ओवरले) बनाने की कोशिश की और बस उसमें मेरा OpenVPN क्लाइंट कंटेनर चिपका दिया और उस पाइप के माध्यम से जाने के लिए जादुई रूप से उस नेटवर्क के अन्य सदस्यों से अपेक्षा की ... और मुझे निराशा हुई।

तो यहाँ मैं हूँ, किसी भी विचार?

PS यदि यह मदद कर सकता है, तो यह मुख्य रूप से कुछ स्वचालित परीक्षणों को सेटअप करने के लिए है जो कि झुंड मोड में एकल डॉकटर मशीन पर सेवाओं को चलाएंगे, जैसे कि झुंड init> स्टैक तैनाती> रन परीक्षण> झुंड अवकाश। इसलिए अगर उसके लिए "हैक" है ... मुझे दिलचस्पी हो सकती है;)

जवाबों:


1

मैं यह ठीक वही बात करता हूं, आपके ओपनवैप डॉक क्लाइंट पर आपको एनएटी को कॉन्फ़िगर करने की आवश्यकता होगी

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-रिस्टोर के माध्यम से बूट पर चलाने के लिए सेट किया है

अपने docker होस्ट पर, निम्नलिखित को / etc / नेटवर्क / इंटरफेस में जोड़ें

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 आपका डॉकटर नेटवर्क है
  • 172.18.0.50 आपके डॉकटर कंटेनरों में से एक है
  • 172.18.0.100 आपका docker openvpn क्लाइंट है
  • 192.168.11.222 वह निजी आईपी है जिसे आप चाहते हैं कि आपका डॉक ग्राहक पहुंच सके
  • tun0 आपके docker क्लाइंट का OpenVPN इंटरफ़ेस है
  • eth1 आपके Openvpn docker क्लाइंट का 172.18.0.0 नेटवर्क इंटरफ़ेस है

एक उत्कृष्ट प्रतिक्रिया ... उत्थान। ध्यान दें कि दो मुद्दों से कैसे निपटा जाए: (1) यह सुनिश्चित करना कि ट्रैफ़िक को उचित स्थान पर रूट किया जाए, और (2) यह सुनिश्चित करना कि डॉकर वातावरण में चल रहा सॉफ़्टवेयर जानता है कि मार्ग मौजूद है। आपको ओपनवीपीएन को यह भी बताना पड़ सकता है कि ट्रैफ़िक को कैसे रूट किया जाए, एक ccrफाइल का उपयोग करके जैसे कि आप एक स्थानीय नेटवर्क के साथ काम कर रहे थे। सभी टीसीपी / आईपी रूटिंग के साथ, " tracerouteआपका सबसे अच्छा दोस्त है, जैसा कि tcpdumpया वायरशार्क है।"
माइक रॉबिन्सन
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.