एक सर्वर में ssh जो एक वीपीएन सेवा से जुड़ा है


22

मेरे पास एक वर्चुअल प्राइवेट सर्वर है, जिसे मैं एक वेब सर्वर चलाना चाहता हूं जबकि मेरा सर्वर एक वीपीएन सेवा से जुड़ा है

जब मेरे प्रदाता के लिए वीपीएन कनेक्शन नहीं है, तो मैं इस सर्वर, ssh, scp, http आदि के साथ कुछ भी कर सकता हूं।

एक बार जब Openvpn चल रहा है और प्रदाता की वीपीएन सेवा से जुड़ा है, तो सर्वर किसी भी कारण से और किसी अच्छे कारण से सुलभ नहीं है

तस्वीर कुछ इस तरह है:

           My VPS                             ------------
         +----------------+                  /            \
         |                |                 /   Internet  /       101.11.12.13
         |        50.1.2.3|-----------------\   cloud    /----<--- me@myhome
         |                |                  /           \
         |     10.80.70.60|                 /             \
         +----------------+                 \              \
                        :                    \_____________/
                        :                           :
                        :                           :
                        :                           :
                        :                           :
                  +------------------+              :
                  |     10.80.70.61  |              :
                  |               \  |              :
                  |                \ |              :
                  | 175.41.42.43:1197|..............:
                  |   175.41.42.43:yy|   
                  |       .....      |
                  |   175.41.42.43:xx|
                  +------------------+



Legend                  
------ Line No VPN connection present
...... Line VPN connection established

स्पष्ट करने के लिए चीजें:

  • ऊपर और नीचे के सभी आईपी पते और पोर्ट संख्या काल्पनिक हैं
  • पोर्ट नंबर xx, yy और बीच में कुछ भी वाली लाइनें मेरी धारणा हैं, न कि कुछ जिसे मैं एक तथ्य के लिए जानता हूं।
  • मैं एक क्रॉन जॉब सेट करता हूं जो हर मिनट मेरा एक और VPS चलाता है, apache2 चल रहा है। Apache2 लॉग में, मैं मूल आईपी एड्रेस को 50.1.2.3 से 175.41.42.43 में बदलते देख सकता हूं, जब वीपीएन सक्रिय है, इसलिए वीपीएन ठीक काम कर रहा है

OpenVPN लॉग ये दिखाते हैं:

UDPv4 link remote: [AF_INET]175.41.42.43:1197
[ProviderName] Peer Connection Initiated with [AF_INET]175.41.42.43:1197
TUN/TAP device tun0 opened
do_ifconfig, tt->ipv6=0, tt->did_ifconfig_ipv6_setup=0
sbin/ip link set dev tun0 up mtu 1500
/sbin/ip addr add dev tun0 local 10.80.70.60 peer 10.80.70.61

इस बिंदु पर, मैं से ssh करने में सक्षम होना चाहते हैं myhomeके लिए My VPS, चित्र में, जबकि वीपीएन निर्भर है और पुट्टी का उपयोग कर।

अतीत में, मेरे एक कार्यस्थल में, मुझे एक अत्यंत सुरक्षित सर्वर में ssh करने के लिए एक बहुत ही अजीब अनुक्रम दिया गया है, जिसमें @स्ट्रिंग में तीन संकेत थे। इसलिए, जैसा कि मैं कल्पना करता हूं, यह बॉक्स से बॉक्स में कूद रहा था, लेकिन चूंकि जंप बॉक्स विंडोज़ ओएस के कुछ संस्करण और उन पर एक मालिकाना ऐप चला रहे थे, इसलिए मेरे लिए कोई दृश्यता नहीं थी कि यह देखने के लिए क्या हो रहा था। इसलिए मैंने ज्यादा ध्यान नहीं दिया। अब मुझे एहसास होने लगा है, मैं उसी या इसी तरह की स्थिति में हो सकता हूं।

आरेख और / या लॉग स्निपेट में आईपी पते और बंदरगाहों का उपयोग करते हुए, क्या कोई मुझे बता सकता है कि मैं इस सुरंग से कैसे पार कर सकता हूं और अपने सर्वर तक पहुंच सकता हूं?

जवाबों:


10

आप अपने VPS से लॉक हो जाते हैं क्योंकि एक बार वीपीएन सेवा समाप्त हो जाने के बाद, आपके ssh पैकेट वीपीएन के माध्यम से रूट किए जाते हैं न कि आपके VPS के सार्वजनिक IP 50.2.1.3 पर।

अपने सर्वर को मानें:

  • सार्वजनिक आईपी 50.1.2.3 है (आपके उदाहरण के अनुसार सेटअप)
  • सार्वजनिक आईपी सबनेट 50.1.2.0/24 है
  • डिफ़ॉल्ट गेटवे xxx1 है
  • eth0 डिवाइस गेटवे के लिए है

Iproute2 का उपयोग करके निम्नलिखित कार्य करें:

ip rule add table 128 from 50.1.2.3
ip route add table 128 to 50.1.2.0/24 dev eth0
ip route add table 128 default via x.x.x.1

फिर अपना OpenVPN क्लाइंट कॉन्फिगर चलाएं: openvpn --config youropenvpn-configfile.ovpn &

आप तब अपने सर्वर में ssh कर पाएंगे जबकि आपका सर्वर vpn सेवा से जुड़ा होगा।

आपको गैर-एसएस: 22 सत्रों से अपने सार्वजनिक आईपी तक पहुंच को प्रतिबंधित करने के लिए उचित आईपीटेबल फिल्टर जोड़ने की आवश्यकता होगी।


इसने खूबसूरती से काम किया।
एंथोनी जियोर्जियो

3
इसने मेरे लिए भी काम किया। फिर भी, मुझे यह समझने में परेशानी है कि यह वास्तव में क्या करता है; क्या आप यह बताना चाहेंगे कि यह किस तरह के कनेक्शनों को अनुमति / अस्वीकृति देता है?
कोडिंग भिक्षु

हाँ, मैं कुछ और स्पष्टीकरण भी चाहूंगा। "Iproute2 का उपयोग करके निम्नलिखित करें" स्पष्ट रूप से यह स्पष्ट नहीं करता है कि iproute2 क्या है, या इस क्रिया को करने के लिए किस मशीन पर है।
डीनरेसिन

मुझे अपना सार्वजनिक आईपी सबनेट कैसे मिलेगा? मैं थोड़ी देर के लिए वेब खोज रहा हूँ और यह नहीं मिल सकता है। हकीकत में यह क्या है?
टोनी फ्रेज़

2

यह थोड़ी देर हो सकती है, लेकिन ...

समस्या यह है कि OpenVPN द्वारा डिफ़ॉल्ट गेटवे बदल जाता है, और जब तक आप OpenVPN शुरू नहीं करते हैं, तब तक आपके वर्तमान SSH कनेक्शन को तोड़ देता है।

जो मेरे लिए काम करता है। यह iptables और ip (iproute2) का उपयोग करता है। नीचे, यह माना जाता है कि OpenVPN शुरू होने से पहले डिफ़ॉल्ट गेटवे इंटरफ़ेस "eth0" है। विचार यह सुनिश्चित करने के लिए है कि जब eth0 का कनेक्शन बनाया जाता है, भले ही eth0 अब डिफ़ॉल्ट गेटवे इंटरफ़ेस नहीं है, फिर भी कनेक्शन के लिए प्रतिक्रिया पैकेट eth0 पर फिर से चलते हैं।

आप कनेक्शन मार्क, फ़ायरवॉल मार्क और राउटिंग टेबल के लिए एक ही नंबर का उपयोग कर सकते हैं। मैंने उनके बीच के अंतर को अधिक स्पष्ट बनाने के लिए अलग-अलग संख्याओं का उपयोग किया।

# set "connection" mark of connection from eth0 when first packet of connection arrives
sudo iptables -t mangle -A PREROUTING -i eth0 -m conntrack --ctstate NEW -j CONNMARK --set-mark 1234

# set "firewall" mark for response packets in connection with our connection mark
sudo iptables -t mangle -A OUTPUT -m connmark --mark 1234 -j MARK --set-mark 4321

# our routing table with eth0 as gateway interface
sudo ip route add default dev eth0 table 3412

# route packets with our firewall mark using our routing table
sudo ip rule add fwmark 4321 table 3412

===

अपडेट करें:

ऊपर डेबियन जेसी पर मेरे लिए ठीक काम करता है। लेकिन पुराने व्हीज़ी सिस्टम पर मैंने अभी-अभी पाया है कि मुझे रूटिंग टेबल एंट्री में "थ्रू" जोड़ना होगा:

# our routing table with eth0 as gateway interface
sudo ip route add default dev eth0 via 12.345.67.89 table 3412

"12.345.67.89" मूल गैर-वीपीएन गेटवे होना चाहिए।


क्या यह एक्सप्रेसवीपीएन के साथ भी काम करना चाहिए? उनके पास एक इंस्टॉलर है जो कमांड लाइन टूल "एक्सप्रेसव्पन" के साथ आता है और आप "कनेक्ट" या "डिस्कनेक्ट" कह सकते हैं। मैंने कोशिश की है कि आपने क्या पोस्ट किया है और यह काम नहीं किया है। क्या यह ओपनवीपीएन होना चाहिए?
टोनी फ्रेज़

मैं सिर्फ यह काम नहीं कर सकता ... मुझे पागल कर रहा है। @Hcb द्वारा ऊपर दिया गया जवाब काम करता है। लेकिन मैं वास्तव में उत्सुक हूं कि आपका जवाब मेरे लिए काम क्यों नहीं कर रहा है! कुछ याद आ रहा है, जो मुझे लगता है कि MANGLE नियमों को क्रियान्वित नहीं किया जा रहा है
Motsel
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.