वीपीएन क्लाइंट के लिए पोर्ट आगे?


21

मैं एक पहेली के एक बिट में चला गया और एक समाधान खोजने के लिए ज्यादा किस्मत नहीं थी। अभी मैं (दुख की बात) वेरिज़ोन 3 जी के माध्यम से नेट से जुड़ा हुआ हूं। वे सभी आने वाले ट्रैफ़िक को फ़िल्टर करते हैं इसलिए कनेक्शन स्वीकार करने के लिए पोर्ट खोलना मेरे लिए असंभव है।

वर्तमान में मेरे पास linode.com पर एक लिनक्स वर्चुअल मशीन है, और सोचा कि pptpdकुछ iptablesपोर्ट फ़ॉरवर्डिंग करने का प्रयास करने के लिए मेरे दिमाग को पार किया जाए । मैंने pptpdस्थापित किया है और मेरी घरेलू मशीन खुशी से जुड़ती है। उस ने कहा, यहाँ कुछ सामान्य जानकारी है:

सर्वर (डेबियन) WAN IP: xxxx on eth0 - pptpd IP: yyy1 on ppp0 - क्लाइंट वीपीएन आईपी: yyy100

सत्यापित करने के लिए कि मैं पागल नहीं था, मैंने सर्वर से क्लाइंट पर खुले बंदरगाहों में कुछ कनेक्शन का प्रयास किया, और ग्राहक वीपीएन आईपी के माध्यम से कनेक्शन स्वीकार करता है।

मैं यह पूरा करना चाहता हूं:

इंटरनेट -> वान आईपी: पोर्ट -> ग्राहक वीपीएन आईपी के लिए आगे: पोर्ट

उदाहरण के लिए, अगर मैं अपने क्लाइंट पर पोर्ट 6000 ओपन करता था, तो एक व्यक्ति xxxx: 6000 पर टेलनेट कर सकता था, और सर्वर उसे पकड़ कर 192.168.3.100:6000 पर फॉरवर्ड कर सकता था।

मैंने कम से कम 20 अलग-अलग Googled up iptablesconfig की कोशिश की है और किसी ने अभी तक काम नहीं किया है। क्या किसी के पास कोई विचार है, या शायद एक पूरी तरह से अलग दृष्टिकोण है जिसके बारे में मुझे पता नहीं हो सकता है? यहाँ लक्ष्य एक भयावह फ़ायरवॉल कनेक्शन के माध्यम से सुनना है, अधिमानतः टीसीपी और यूडीपी ट्रैफ़िक दोनों।

जवाबों:


25

इस काम को करने के लिए आपको अपने वीपीएन सर्वर (लाइनोड) पर तीन काम करने होंगे:

  1. आपको आईपी अग्रेषण सक्षम करना होगा:

    sysctl -w net.ipv4.ip_forward=1
    
  2. पोर्ट को अग्रेषित करने के लिए गंतव्य NAT (DNAT) सेट करें। शायद आपने पहले ही इसका पता लगा लिया है क्योंकि यह मानक पोर्ट अग्रेषण सामान है, लेकिन पूर्णता के लिए:

    iptables -t nat -A PREROUTING -d x.x.x.x -p tcp --dport 6000 -j DNAT --to-dest y.y.y.100:6000
    
  3. स्रोत NAT (SNAT) सेट करें ताकि आपके VPN क्लाइंट के परिप्रेक्ष्य से, कनेक्शन VPN सर्वर से आ रहा है:

    iptables -t nat -A POSTROUTING -d y.y.y.100 -p tcp --dport 6000 -j SNAT --to-source y.y.y.1
    

आपको एसएनएटी की आवश्यकता का कारण यह है क्योंकि अन्यथा आपका वीपीएन क्लाइंट अपने रिटर्न पैकेट को सीधे मेजबान को भेजेगा, जिसने कनेक्शन (zzzz) को अपने डिफ़ॉल्ट गेटवे (यानी वेरिज़ोन 3 जी) के माध्यम से शुरू किया था, और वीपीएन के माध्यम से नहीं। इस प्रकार रिटर्न पैकेट पर स्रोत IP पता आपका Verizon 3G पता होगा, और xxxx नहीं, यह सभी प्रकार की समस्याओं का कारण बनता है, क्योंकि zzzz ने वास्तव में xxxx से कनेक्शन शुरू किया है

अधिकांश पोर्ट फ़ॉरवर्डिंग सेटअप में, SNAT की आवश्यकता नहीं होती है क्योंकि पोर्ट फ़ॉरवर्डिंग करने वाला होस्ट डेस्टिनेशन होस्ट (जैसे होम राउटर) के लिए डिफ़ॉल्ट गेटवे भी होता है।

यह भी ध्यान दें कि यदि आप पोर्ट को किसी भिन्न पोर्ट (7000 के लिए) कहते हैं, तो SNAT नियम को 7000 पर मिलान करना चाहिए, न कि 6000 पर।


हैलो एजीडब्ल्यूए, प्रतिक्रिया के लिए धन्यवाद। मेरे पास पहले से ही ip_forwarding था, और आपके नियमों ने पूरी तरह से काम किया, हालांकि शुरू में नहीं। मुद्दा था (मेरे iptables noobness में) कि मुझे एहसास नहीं था कि iptables -F ने nat प्रविष्टियों को फ्लश नहीं किया था, और iptables -L उन्हें सूचीबद्ध नहीं कर रहा था। यह पता लगाने के बाद कि उन्हें कैसे ठीक से सूचीबद्ध करना है, मैंने पहले भी कई परस्पर विरोधी प्रविष्टियों पर ध्यान दिया। निस्तब्धता और अपने नियमों की कोशिश करने के बाद, यह पूरी तरह से काम करता है। एक त्वरित प्रश्न हालांकि, आपके नियमों में आप tcp निर्दिष्ट करते हैं। टीसीपी / यूडीपी ट्रैफ़िक दोनों के लिए इसे "सभी" कार्य में बदल देगा?
विले ब्रिगांडियर

आपका स्वागत है! (वैसे, मैं iptables-saveअपने iptables नियमों को दिखाने के लिए उपयोग करना पसंद करता हूं - जबकि उत्पादन मानव उपभोग के लिए अभिप्रेत नहीं है, यह अभी भी पठनीय है और आपके सभी iptables नियमों को दिखाता है।) नहीं, दुर्भाग्य से आप "सभी" का उपयोग नहीं कर सकते, क्योंकि --dportकेवल ऐसे प्रोटोकॉल के साथ काम करता है जिनमें वास्तव में पोर्ट होते हैं ("सभी" में उदाहरण के लिए ICMP शामिल होगा, जिसमें पोर्ट की कोई धारणा नहीं है)। आपको टीसीपी और यूडीपी के लिए अलग-अलग नियमों की आवश्यकता होगी।
AGWA

Iptables- सेव टिप के लिए धन्यवाद। सब कुछ टीसीपी और यूडीपी दोनों के लिए उम्मीद के मुताबिक काम करता है। चीयर्स।
विले ब्रिगांडियर

2
इस उत्तर के लिए बस एक अपडेट यह है कि iproute2 के साथ, आप वास्तव में अपने वीपीएन क्लाइंट को 2 गेटवे और वीएनएटी ट्रैफिक को वापस वीपीएन पर सेट कर सकते हैं। यह फायदेमंद है यदि आप SNAT का उपयोग नहीं करना चाहते हैं और सभी ट्रैफ़िक vpn सर्वर से आ रहे हैं। thomas-krenn.com/en/wiki/Two_Default_Gateways_on_One_System में यह कैसे सेट करना है, इसकी जानकारी शामिल है।
प्रेशिंगऑनवे

जब तक मैं ufw में 8080 की अनुमति देता हूं, तब तक मेरे लिए काम करता है, हालांकि मैंने ufw में 8080 की अनुमति दी है, लेकिन जैसे ही मैं ufw को सक्षम करता हूं, यह अग्रेषित सामान काम नहीं करता है .. कोई विचार?
सुधीर एन

3

मुझे भी यह समस्या थी और इसे घंटों हल करने की कोशिश की गई .. यहाँ मेरा समाधान है:

  • मेरे पास एक से अधिक VPNClientसमान थे IPAddress। इसलिए मैंने उनमें से प्रत्येक को एक स्थिर दियाIPAddress

एक निर्देशिका को परिभाषित करें जहां क्लाइंट स्क्रिप्ट संग्रहीत की जानी चाहिए, जैसे / etc / openvpn / staticclients और निर्देशिका बनाएं

mkdir /etc/openvpn/staticclients

सर्वर पर अपने Openvpn configfile के विकल्प के रूप में इस निर्देशिका को जोड़ें:

client-config-dir /etc/openvpn/staticclients

प्रत्येक क्लाइंट के लिए आपको एक फ़ाइल बनानी होगी। फ़ाइल नाम उस common nameविशेषता से मेल खाना चाहिए जो क्लाइंट के प्रमाण पत्र में निर्दिष्ट किया गया था। यह आदेश कंप्यूटर प्रमाणपत्र से CN प्राप्त करता है:

इस उदाहरण pushs IPAddressसाथ ग्राहक को 10.1.134.110/10.1.134.109 common name TESTCLIENT और भी सबनेट 10.1.135.0 के लिए एक अतिरिक्त मार्ग धक्का।

cat /etc/openvpn/staticclients/TESTCLIENT

ifconfig-push 10.1.134.110 10.1.134.109
push "route 10.1.135.0 255.255.255.0 10.1.134.62"
  • http://www.yougetsignal.com/tools/open-ports/ और http://canyouseeme.org/ ने बंदरगाहों का सही पता नहीं लगाया। मुझे क्लाइंट पर अपने एप्लिकेशन को अतिरिक्त रूप से शुरू करना पड़ा, ताकि वेबसाइटें इन पोर्ट को देख सकें।

  • इसके अतिरिक्त SNATनियमों की आवश्यकता नहीं है। केवल इन नियमों की आवश्यकता थी:

sysctl -w net.ipv4.ip_forward=1

iptables -t nat -A PREROUTING -p tcp --dport 28006 -j DNAT --to 10.1.134.110

2

अधिकांश सर्वरों में डिफ़ॉल्ट कॉन्फ़िगरेशन में आईपी फ़ॉरवर्डिंग अक्षम है। यदि आप अपने वीपीएन के माध्यम से आने वाले कनेक्शन को पुनर्निर्देशित करना चाहते हैं तो आपको इसे सक्षम करने की आवश्यकता है।

इसे इस्तेमाल करे:

sysctl -w net.ipv4.ip_forward = 1

मेरा मतलब है iptables कॉन्फ़िगरेशन के अलावा।


0

आप क्या प्राप्त करना चाहते हैं (शायद) pptpdOpenVPN और iptables के साथ बहुत संभव है , हालांकि, आप इस उपयोग के मामले के लिए एक बेहतर उम्मीदवार को चुन सकते हैं। मैं सिर्फ पढ़ने के इस जो वास्तव में उपयोग के इस मामले का सेटअप Tinc को वर्णन करता है। यह pptdpया OpenVPN भाग के लिए संभावित (सरल) विकल्प है । फिर आपको iptables के लिए बिल्कुल समान नियमों की आवश्यकता होगी।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.