OpenVPN क्लाइंट-टू-क्लाइंट


18

client-to-clientविकलांगों के साथ एक TUN (लेयर 3) OpenVPN सर्वर का उपयोग करते समय , मेरे ग्राहक अभी भी एक दूसरे से बात कर सकते हैं।

क्लाइंट-टू-क्लाइंट कॉन्फिगरेशन को दस्तावेज़ीकरण के अनुसार इसे रोकना चाहिए:

यदि आप वीपीएन के ऊपर एक दूसरे तक पहुँचने में सक्षम होने के लिए क्लाइंट को जोड़ना चाहते हैं तो क्लाइंट-टू-क्लाइंट निर्देश को बाहर करें। डिफ़ॉल्ट रूप से, क्लाइंट केवल सर्वर तक पहुंचने में सक्षम होंगे।

जब यह विकल्प अक्षम हो जाता है तो ग्राहक एक दूसरे से संवाद क्यों कर सकते हैं?

यहाँ मेरा सर्वर कॉन्फिडेंस है:

port 443
proto tcp
dev tun
ca /etc/openvpn/keys/ca.crt
cert /etc/openvpn/keys/server.crt
key /etc/openvpn/keys/server.key
dh /etc/openvpn/keys/dh4096.pem
topology subnet
server 10.10.201.0 255.255.255.128
ifconfig-pool-persist ipp.txt
crl-verify /etc/openvpn/keys/crl.pem
push "route [omitted]"
push "dhcp-option DNS [omitted]"
keepalive 10 120
comp-lzo
user nobody
group nogroup
persist-key
persist-tun
plugin /usr/lib64/openvpn/plugins/openvpn-plugin-auth-pam.so login
cipher AES-256-CBC
tls-auth /etc/openvpn/keys/pfs.key 0
verb 4

जवाबों:


56

अगर client-to-clientहै सक्षम , VPN सर्वर आगे ग्राहक करने के लिए ग्राहक के पैकेट आंतरिक रूप से (यानी कर्नेल में) होस्ट के IP परत करने के लिए उन्हें भेजे बिना। होस्ट नेटवर्किंग स्टैक उन पैकेटों को बिल्कुल नहीं देखता है।

           .-------------------.
           | IP Layer          |
           '-------------------'


           .-------------------.
           | TUN device (tun0) |
           '-------------------'


           .-------------------.
           | OpenVPN server    |
           '-------------------'
             ^           |
          1  |           |  2   
             |           v
 .----------------.  .----------------.
 | Client a       |  | Client b       |
 '----------------'  '----------------'

अगर client-to-clientहै विकलांग , एक और ग्राहक के लिए एक ग्राहक से पैकेट मेजबान IP परत के माध्यम से जाना (iptables, रूटिंग तालिका, आदि) मशीन की मेजबानी VPN सर्वर की: अगर आईपी अग्रेषण सक्षम किया गया है , मेजबान पैकेट आगे हो सकता है (का उपयोग करते हुए अपने TUN इंटरफ़ेस और वीपीएन डेमॉन के लिए फिर से राउटिंग टेबल) सुरंग के अंदर सही ग्राहक को पैकेट अग्रेषित करेगा।

           .-------------------.
           | IP Layer          |  (4) routing, firewall, NAT, etc.
           '-------------------'      (iptables, nftables, conntrack, tc, etc.)
              ^          |
          3   |          |  5
              |          v
           .-------------------.
           | TUN device (tun0) |
           '-------------------'
             ^           |
          2  |           |  6  
             |           v
           .-------------------.
           | OpenVPN server    |
           '-------------------'
             ^           |
          1  |           |  7  
             |           v
 .----------------.  .----------------.
 | Client a       |  | Client b       |
 '----------------'  '----------------'

इस स्थिति में ( client-to-clientअक्षम), आप ग्राहक-से-ग्राहक पैकेट को iptables का उपयोग करके ब्लॉक कर सकते हैं:

 iptables -A FORWARD -i tun0 -o tun0 -j DROP

tun0आपका VPN इंटरफ़ेस कहाँ है


इसे उत्तर के रूप में चिह्नित किया गया; संक्षिप्त रूप से अभी तक बहुत जानकारीपूर्ण है और वास्तव में जवाब में iptables फ़ायरवॉल नियम प्रदान करता है।
लोबी

1
मेरे पास आरेख के बारे में एक प्रश्न है, क्या आप इसे चार-चार और अंतरिक्ष द्वारा अंतरिक्ष द्वारा आकर्षित करते हैं? या क्या आप किसी भी ऐप का उपयोग करने में मदद कर रहे हैं जो आपको बस और जल्दी से मिल जाएगा?
मोहम्मद नौरेलिन

3
@MohammedNoureldin, मैंने asciio ( search.cpan.org/dist/App-Asciio ) के साथ मूल चित्र बनाया है जो asciiart चित्र के लिए WYSWYG बिंदु और क्लिक संपादक है।
ysdx

धन्यवाद, क्या आपने इसे खिड़कियों पर चलाने का प्रबंधन किया था? यह मध्य युग से एक ऐप लगता है, और मैं इसे विंडोज़ पर नहीं चला सकता, मैंने इसे कैमलबॉक्स पैकेज के साथ स्थापित करने की कोशिश की, लेकिन मुझे हमेशा 404 त्रुटि मिलती है।
मोहम्मद नौरेलिन

2
@MohammedNoureldin, मैं विंडोज का उपयोग नहीं कर रहा हूं। मैं डेबियन का उपयोग कर रहा हूं और यह पैकेजों से बहुत ही स्थापित है।
ysdx

7

जैसा कि आप यहाँ कहते हैं, आपको निर्देश पर टिप्पणी करने से ज्यादा कुछ करने की आवश्यकता है :

इस निर्देश को अलग-अलग ग्राहकों को एक-दूसरे को "देखने" में सक्षम बनाने के लिए अनुमति दें। डिफ़ॉल्ट रूप से, क्लाइंट केवल सर्वर को देखेंगे। ग्राहकों को केवल सर्वर को देखने के लिए मजबूर करने के लिए, आपको सर्वर के TUN / TAP इंटरफ़ेस को उचित रूप से फ़ायरवॉल करना होगा।

इसलिए आप प्रत्येक ग्राहक के लिए अलग आईपी पता नीति कॉन्फ़िगर कर सकते हैं। ग्राहक-विशिष्ट नियमों और यहां पहुंच नीतियों को कॉन्फ़िगर करने वाला अनुभाग देखें : https://openvpn.net/index.php/open-source/documentation/howto.html । और यहां: https://www.sbarjatiya.com/notes_wiki/index.php/Configuring_separate_IP_and_firewall_rule_for_each_openvpn_client


फिर इसका मतलब है कि मैंने क्या सोचा: इसे प्राप्त करने का एकमात्र तरीका प्रत्येक ग्राहक को अलग-अलग सबनेट पर रखना है। यह ज्यादातर सवाल का जवाब देता है, साथ ही आपने कुछ प्रलेखन दिया कि कैसे करना है। मैं जवाब के रूप में इसे नीचे चिह्नित करूंगा। धन्यवाद।
लोबी

6

openvpnइस सवाल के जवाब के लिए मैन पेज का अगला पैराग्राफ , हालांकि यह पहली बार पढ़ने पर जरूरी नहीं है:

क्योंकि OpenVPN सर्वर मोड एकल ट्यून या टैप इंटरफ़ेस के माध्यम से कई क्लाइंट्स को संभालता है, यह प्रभावी रूप से एक राउटर है। --client-to-client झंडा बल्कि TUN / नल इंटरफेस करने के लिए सभी क्लाइंट-उद्भव यातायात दबाव डालने के बजाए आंतरिक मार्ग ग्राहक करने के लिए ग्राहक यातायात के लिए OpenVPN बताता है।

जब इस विकल्प का उपयोग किया जाता है, तो प्रत्येक ग्राहक अन्य ग्राहकों को "देखेगा" जो वर्तमान में जुड़े हुए हैं। अन्यथा, प्रत्येक क्लाइंट केवल सर्वर को देखेगा। यदि आप कस्टम, प्रति-ग्राहक नियमों का उपयोग करके सुरंग यातायात को फायर करना चाहते हैं तो इस विकल्प का उपयोग न करें।

client-to-clientविकल्प शॉर्ट सर्किट सर्वर पर सामान्य मार्ग तालिकाओं। इसे हटाने से सर्वर के राउटिंग टेबल का उपयोग करने वाले ग्राहकों को रोका नहीं जा सकता है। यदि वे रूटिंग टेबल - और सर्वर के फ़ायरवॉल कॉन्फ़िगरेशन - क्लाइंट को एक दूसरे को देखने की अनुमति देते हैं तो वे ऐसा करने में सक्षम होंगे।

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