OpenVPN को सफलतापूर्वक कनेक्ट करने के बाद मैं एक स्क्रिप्ट कैसे चलाऊँ?


50

मैं किसी स्क्रिप्ट को OpenVPN से कैसे जोड़ सकता हूं ताकि जब VPN सफलतापूर्वक कनेक्ट हो जाए तो यह चलता है?


ग्राहक के मामले में मुझे लगता है? आप कौन से सॉफ़्टवेयर का उपयोग कर रहे हैं? OpenVPN, या एक आवरण (जैसे NetworkManager)?
लेकेनस्टाइन

@ लेकेनस्टेन, रैपर network-manger-openvpn
ऑक्सीविवि

जवाबों:


62

network-manager-openvpnऐसी कार्यक्षमता प्रदान नहीं करता है, आपको openvpnसीधे उपयोग करना होगा ।

--script-security 2 --up /path/to/your/scriptकनेक्ट करते समय इसे पास करें। यदि आप किसी कॉन्फ़िगरेशन फ़ाइल का उपयोग कर रहे हैं /etc/openvpn/, तो अगली लाइनों को अपनी कॉन्फ़िगरेशन फ़ाइल में जोड़ें:

script-security 2
# run /etc/openvpn/up.sh when the connection is set up
up /etc/openvpn/up.sh

से OpenVPN मैनपेज :

-स्क्रिप्ट-सुरक्षा स्तर [विधि]
              यह निर्देश OpenVPN के उपयोग पर नीति-स्तरीय नियंत्रण प्रदान करता है
              बाहरी कार्यक्रमों और लिपियों का। निचले स्तर के मूल्य अधिक हैं
              प्रतिबंधक, उच्चतर मूल्य अधिक अनुमेय हैं। के लिए सेटिंग्स
              का स्तर:

              0 - बाहरी कार्यक्रमों की सख्ती से कोई कॉलिंग नहीं।
              1 - (डिफ़ॉल्ट) केवल कॉल किए गए निष्पादनों जैसे ifconfig,
              आईपी, मार्ग, या नेटश।
              2 - अंतर्निहित निष्पादकों और उपयोगकर्ता-परिभाषित की कॉल करने की अनुमति दें
              स्क्रिप्ट।
              3 - पर्यावरण के माध्यम से स्क्रिप्ट को पासवर्ड को पारित करने की अनुमति दें
              चर (संभावित असुरक्षित)।
       - सीएमडी
              शेल को सफल TUN / TAP डिवाइस ओपन (प्री) के बाद चलाना है
              --user UID परिवर्तन)। अप स्क्रिप्ट निर्दिष्ट करने के लिए उपयोगी है
              रूट ट्रैफ़िक, जो रूट आईपी ट्रैफ़िक को निजी के लिए नियत करता है
              सबनेट जो वीपीएन कनेक्शन के दूसरे छोर पर मौजूद है
              सुरंग।
निष्पादन का लिपि क्रम
       - टीसीपी / यूडीपी सॉकेट बाइंड और ट्यून / टैप ओपन के बाद निष्पादित।
       - टीसीपी / यूडीपी और ट्यून / टैप बंद होने के बाद बंद हुआ।

स्क्रिप्ट निष्पादन के लिए और अधिक कार्यक्रम हैं, जिन्हें मैनुअल पेज पर पाया जा सकता है ।

बनाएँ /etc/openvpn/up.sh, और इसे निष्पादित करने की अनुमति दें (जैसे, 755 या 700)। IPv6 पता और मार्ग जोड़ने के लिए उदाहरण सामग्री (शैक्षिक उद्देश्यों के लिए दिखाया गया है, इसे सीधे कॉपी न करें):

#!/bin/sh
# add an IPv6 address to device $dev (environment variable)
ip -6 addr add 2001:db8::1:2/112 dev $dev
# and the IPv6 route for this net using gateway 2001:db8::1
ip -6 route add 2001:db8::1:0/112 via 2001:db8::1 dev $dev

ध्यान दें कि यह upस्क्रिप्ट रूट के रूप में चलाई जाती है। यदि आपने सेटिंग Userऔर Groupसेटिंग निर्दिष्ट नहीं की है, तो OpenVPN downरूट की तरह स्क्रिप्ट भी चलाएगा ।


यदि आप नहीं जानते कि सीधे ओपनवैप का उपयोग कैसे करें, तो अपना वर्तमान कॉन्फ़िगरेशन विवरण जोड़ें: कनेक्शन प्रकार (जैसे X509-प्रमाण पत्र), गेटवे पोर्ट, एलजेडओ-संपीड़न, टीसीपी का बल, टैप डिवाइस का उपयोग, सिफर, एचएमएसी और टीएलएस। अपनी IP सेटिंग्स का उल्लेख करें, भले ही वे स्वचालित न हों। अपनी गोपनीयता के लिए, अपने वास्तविक पते को छोड़ दें।
लीकेनस्टाइन

ठीक है ठीक है, मैंने सीधे OpenVPN (और हाँ, मेरे पास .conf फ़ाइल) का उपयोग करने का फैसला किया है, लेकिन क्या कनेक्शन खो जाने पर यह स्वचालित रूप से फिर से कनेक्ट हो जाएगा? और जब भी इंटरनेट कनेक्शन हो तो मैं इसे अपने आप कैसे कनेक्ट करूं? और अंत में, मुझे समझ में नहीं आया कि मुझे जवाब में आपके द्वारा बताई गई लाइनों को कहां जोड़ना है।
ऑक्सीविवि

मैंने openvpnसीधे उपयोग करने के उत्तर का विस्तार किया है । सर्वर सेट करते समय, मैंने देखा कि OpenVPN सर्वर के नीचे जाने पर पुन: कनेक्ट करने का प्रयास करेगा। निश्चित नहीं है कि OpenVPN आपके नेटवर्क इंटरफ़ेस के नीचे जाने की कोशिश कर रहा है या नहीं।
लेकेनस्टाइन

मेरा मुद्दा तब नहीं है जब नेटवर्क इंटरफ़ेस नीचे जाता है - यह इंटरनेट कनेक्शन खो जाने और फिर से प्राप्त होने पर फिर से कनेक्ट करने का प्रयास करता है। जब भी मुझे इंटरनेट कनेक्शन मिलेगा मैं सिर्फ वीपीएन से जुड़ना चाहता हूं।
ऑक्सीविवि

ओह, और क्या स्क्रिप्ट सभी वीपीएन कनेक्शन पर लागू होती है? और कृपया जवाब देते समय @Oxwivi को टैग करें, मुझे अन्यथा सूचित नहीं किया जाएगा।
ऑक्सीविवि

5

प्रश्न के लिए: "मैं ओपनवीपीएन के लिए एक स्क्रिप्ट को कैसे जोड़ सकता हूं ताकि वीपीएन सफलतापूर्वक जुड़ा होने पर यह चलता रहे?" मैं यह बताना चाहता हूं कि लेकेनस्टाइन ने एक उत्कृष्ट उत्तर दिया । लेकिन, जिस समय उनका जवाब तैयार किया गया था, उसमें इस बात पर थोड़ी स्पष्टता नहीं थी कि एक ओव्यूंट मशीन पर ओपनवपन को शुरू करने के लिए ओपनवैप कमांड लाइन तर्क कैसे प्रदान किए जाने चाहिए, खासकर इसलिए कि यह रिबूट के बाद भी काम करता है।


Openvpn कमांड लाइन तर्क उबंटू पर:

स्वाभाविक रूप से, कोई कमांड लाइन से किसी भी उपलब्ध कानूनी विकल्प के साथ ओपनवैप शुरू कर सकता है। लेकिन, एक उबंटू मशीन पर, यदि कोई रिबूट के बाद उसी कमांड लाइन के तर्कों के साथ ओपनवैप शुरू करना चाहता है, तो उन्हें फ़ाइल को संपादित करने पर विचार करना चाहिए /etc/default/openvpn। निम्नलिखित लाइनों की जांच करें:

# Optional arguments to openvpn's command line
OPTARGS="" 

से समुदाय OpenVPN आदमी पेज पर--script-security

-स्क्रिप्ट-सुरक्षा स्तर
    यह निर्देश ओपनवीपीएन के बाहरी उपयोग पर नीति-स्तरीय नियंत्रण प्रदान करता है 
    कार्यक्रम और स्क्रिप्ट। निचले स्तर के मूल्य अधिक प्रतिबंधात्मक, उच्चतर हैं
    मूल्य अधिक अनुमेय हैं। स्तर के लिए सेटिंग्स:
0 - बाहरी कार्यक्रमों की सख्ती से कोई कॉलिंग नहीं। 
1 - (डिफ़ॉल्ट) केवल कॉल किए गए निष्पादक जैसे ifconfig, ip, मार्ग,
या नेटेश। 
2 - अंतर्निहित निष्पादनयोग्य और उपयोगकर्ता-परिभाषित स्क्रिप्ट की कॉल करने की अनुमति दें। 
3 - पर्यावरण चर के माध्यम से स्क्रिप्ट को पासवर्ड को पारित करने की अनुमति दें
(संभावित असुरक्षित)।

V2.3 से पहले ओपनवीपीएन रिलीज ने भी एक विधि ध्वज का समर्थन किया, जिसने संकेत दिया कि कैसे 
OpenVPN को बाहरी कमांड और स्क्रिप्ट को कॉल करना चाहिए। इसे या तो निष्पादित किया जा सकता है
या प्रणाली। OpenVPN v2.3 के रूप में, इस ध्वज को अब स्वीकार नहीं किया गया है। अधिकांश * निक्स में
वातावरण निष्पादित () दृष्टिकोण का उपयोग बिना किसी समस्या के किया गया है।

कुछ निर्देश जैसे कि --up बाहरी स्क्रिप्ट में विकल्पों को पारित करने की अनुमति देते हैं।
इन मामलों में सुनिश्चित करें कि स्क्रिप्ट नाम में कोई रिक्त स्थान नहीं है या 
कॉन्फ़िगरेशन पार्सर चोक कर देगा क्योंकि यह निर्धारित नहीं कर सकता है कि स्क्रिप्ट कहाँ है 
नाम समाप्त होता है और स्क्रिप्ट विकल्प शुरू होते हैं।

एक संक्षिप्त अनुभाग के साथ संयुक्त --up

- सीएमडी
    सफल TUN / TAP डिवाइस ओपन (प्री- यूसर UID चेंज) के बाद कमांड cmd रन करें।
    cmd में स्क्रिप्ट (या निष्पादन योग्य प्रोग्राम) के लिए एक पथ होता है, वैकल्पिक रूप से अनुसरण किया जाता है
    तर्क से। पथ और तर्क एकल- या दोहरे-उद्धृत और / या हो सकते हैं
    एक बैकस्लैश का उपयोग करके बच गया, और एक या एक से अधिक स्थानों से अलग होना चाहिए।

उदाहरण:

Openpvn server.conf के साथ मेरी मशीन पर, मेरी /etc/default/openvpnफ़ाइल में निम्नलिखित पंक्तियाँ हैं :

OPTARGS="
    --script-security 2
    --up /etc/openvpn/nat.sh
" 

संयोग से, nat.sh ने निजी नेटवर्क ट्रैफ़िक को रूटिंग के लिए नेटवर्क एड्रेस ट्रांसलेशन को ओपनवैप क्लाइंट से पब्लिक इंटरनेट पर सेट किया है; जब कोई एक सार्वजनिक वाईफ़ाई पहुंच बिंदु पर भरोसा नहीं करता है तो उसके लिए अच्छा है।


रिबूट के बाद अपेक्षित के रूप में पुनः आरंभ करने की अनुमति देने के अलावा, जब /etc/openvpn/[client or server].confऔर /etc/default/openvpnफाइलों को ठीक से कॉन्फ़िगर किया जाता है, तो ओपनवैप को शुरू या बंद किया जा सकता है:

sudo service openvpn start
sudo service openvpn stop

अन्य उपयोगी विकल्पों service openvpnमें शामिल हैं cond-restart,force-reload,reload, restart,soft-restart, start, status, stop


3

के रूप में यह एक बहुत पुराना धागा है, मुझे यकीन नहीं है कि अगर ब्याज की है। यदि आप अभी भी एक वीपीएन से कनेक्ट करने के लिए NetworkManager का उपयोग करना चाहते हैं, तो आप एक साधारण udv नियम जोड़ सकते हैं:

KERNEL=="vpn0", RUN+="/PATH_TO_THE_SCRIPT/SCRIPT_NAME"

वीपीएन बनने के बाद यह किसी भी स्क्रिप्ट को चलाना चाहिए।


1

मैंने इस मुद्दे को हल करने के लिए अपने शोध में उत्तर पर ठोकर खाई और मुझे पता चला कि सबसे अच्छा समाधान है (ओपनवैप सर्वर का उपयोग निम्नानुसार है:

निष्पादित होने के लिए एक स्क्रिप्ट बनाएं:

# nano /etc/openvpn/up.sh
<file:contents>
#!/bin/sh

# export >> /var/log/openvpn/openvpn-up.log
D=`date "+%Y-%m-%d %H:%M"`
echo "[$D] ($local_port_1:$proto_1) $X509_0_CN: $trusted_ip => $ifconfig_pool_remote_ip" >> /var/log/openvpn/openvpn-up.log
</file>

निम्नलिखित पंक्तियों को ओपेनवोन कॉन्फ़िगरेशन (आमतौर पर /etc/openvpn/server.conf) में जोड़ें। ऊपर दिए गए उत्तर में, इसका उपयोग ऊपर और नीचे किया गया था, जो कि सर्वर शुरू होने (पुनरारंभ) होने पर उपयोग किया जाता है। जब क्लाइंट कनेक्ट (डिस्कनेक्ट) करता है, तो डायरेक्ट क्लाइंट-कनेक्ट (और क्लाइंट-डिस्कनेक्ट) का उपयोग किया जाता है।

# nano /etc/openvpn/server.conf
<file:add>
script-security 2
client-connect /etc/openvpn/up.sh
</file>

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