कनेक्शन ड्रॉप पर वीपीएन को ऑटो-फिर से कनेक्ट करना


13

मैं मैक ओएस एक्स 10.7.3 पर अंतर्निहित वीपीएन का उपयोग करता हूं। यह IPSec, FWIW है। समय-समय पर, यह डिस्कनेक्ट हो जाता है (शायद मेरे कॉर्पोरेट सर्वर के साथ एक मुद्दा)। क्या स्वचालित रूप से पुन: कनेक्ट करने के लिए इसे प्राप्त करने का एक तरीका है? कभी-कभी मैं कुछ समय के लिए ध्यान नहीं देता, जो थोड़े कष्टप्रद है।

जवाबों:


9

आप निम्न AppleScript का उपयोग कर सकते हैं , इसे एक एप्लिकेशन के रूप में सहेज सकते हैं और इसे एक एजेंट (कोई डॉक आइकन) के रूप में सेट कर सकते हैं।

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

on idle
    tell application "System Events"
        tell current location of network preferences
            set myConnection to the service "VPN University"
            if myConnection is not null then
                if current configuration of myConnection is not connected then
                    connect myConnection
                end if
            end if
        end tell
        return 120
    end tell
end idle

मैंने समझाया है कि इस उत्तर में इसे कैसे सेट किया जाए ।


Can’t get «class svce» "MyVPN" of «class locc» of «class netp» of application "System Events". System Events got an error: Can’t get service "MyVPN" of current location of network preferences. (-1728)
दार पिरोझकोव

यह IKEv2 VPN के साथ काम नहीं करेगा। यहां बताया गया है कि आप ऐसा कैसे कर सकते हैं: Matt.coneybeare.me/… -service -on-your-mac /
coneybeare

8

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

पहले मैंने pppd स्टार्टअप के लिए हुक जोड़े और वांछित वीपीएन स्टेट का ट्रैक रखने के लिए शटडाउन किया। इन फ़ाइलों को रूट के स्वामित्व में होना चाहिए, और इनके पास विश्व पठन / निष्पादित अनुमतियां ( sudo chmod 755 /etc/ppp/ip-*) हैं।

/ Etc / पीपीपी / आईपी-अप:

#!/bin/sh
echo true > /var/run/reconnect_vpn
chmod 644 /var/run/reconnect_vpn

/ etc / ppp / ip-down: OS X 10.9.5 और नीचे के लिए

#!/bin/sh
tail /var/log/ppp.log | grep '\[DISCONNECT\]'
if [ $? == 0 ] ; then
echo false > /var/run/reconnect_vpn
fi

/ etc / ppp / ip-down: OS X 10.10 और इसके बाद के संस्करण के लिए

#!/bin/sh
tail /var/log/ppp.log | grep '\[TERMINATE\]'
if [ $? == 0 ] ; then
echo false > /var/run/reconnect_vpn
fi

फिर ऊपर AppleScript को संशोधित करके, मैं वीपीएन को वापस लाने के लिए यह निर्धारित करने के लिए '/ var / run / reconnect_vpn' स्थिति चर की जांच करने में सक्षम था:

on idle
    tell application "System Events"
        tell current location of network preferences
            set myConnection to the service "VPN"
            set startOnLogin to true
            local doReconnect
            try
                set doReconnect to (do shell script "cat /var/run/reconnect_vpn")
            on error errMsg
                set doReconnect to startOnLogin
            end try
            if myConnection is not null and doReconnect then
                if current configuration of myConnection is not connected then
                    connect myConnection
                end if
            end if
        end tell
        return 120
    end tell
end idle

पहले की तरह, set myConnection to the service "VPN"अपने वीपीएन को जो भी कहा जाता है, उसे लाइन में बदलें । इसके अलावा, स्टार्टअप पर 'reconnect_vpn' फ़ाइल मौजूद नहीं है, इसलिए मैंने एक बूलियन (startOnLogin) को डिफ़ॉल्ट के रूप में सेवा करने के लिए जोड़ा जब फ़ाइल नहीं मिली। मैं तुरंत शुरू करना पसंद करता हूं, लेकिन यदि आप इसे झूठे में नहीं बदलते हैं।

मुझे लग रहा है कि यदि आप इस तरह के व्यक्ति हैं, तो यह वीपीएन व्यवहार के बारे में विशेष रूप से है, तो आप भी उस तरह के व्यक्ति हैं जो एक समाधान खोजने तक चारों ओर fumbling पसंद करते हैं और इसलिए इस जवाब का कोई दर्शक नहीं है। लेकिन सिर्फ मामले में, यहाँ यह है। आशा है कि यह किसी की मदद करता है।


यह IKEv2 VPN के साथ काम नहीं करेगा। यहां बताया गया है कि आप ऐसा कैसे कर सकते हैं: Matt.coneybeare.me/… -service -on-your-mac /
coneybeare

4

एक ऐप है जो इसे वीपीएन ऑटो-कनेक्ट (मैक ऐप स्टोर लिंक) कहता है। यह $ 0.99 है।

एक बार शुरू होने के बाद, यह आपके मेनू बार में रहता है; जब आप इसका उपयोग वीपीएन को "चालू" करने के लिए करते हैं, तो यह आपके द्वारा ओएस एक्स के नेटवर्क वरीयता फलक में स्थापित वीपीएन कनेक्शन प्रोफाइल की निगरानी करेगा और यह सुनिश्चित करेगा कि आप हमेशा इससे जुड़े रहें। वीपीएन ऑटो-कनेक्ट का मेनू-बार आइकन आपके द्वारा परिभाषित सभी वीपीएन कनेक्शनों की एक सूची प्रदान करता है और आपको यह चुनने की सुविधा देता है कि कौन सा हमेशा कनेक्ट करना है।


अलग पूछने के लिए आपका स्वागत है! आपके उत्तर के लिए धन्यवाद, जॉन! क्या आप अपने द्वारा लिंक किए गए ऐप के बारे में अधिक जानकारी जोड़ सकते हैं? यह प्रश्न का उत्तर कैसे देता है? ओपी को जिस ऐप की ज़रूरत है, उसे कौन सी विशिष्ट विशेषताएं बनाती हैं?
डेविसगेक

वीपीएन ऑटो-कनेक्ट काम IKEv2 वीपीएन के साथ। यहां बताया गया है कि आप ऐसा कैसे कर सकते हैं: Matt.coneybeare.me/… -service -on-your-mac /
coneybeare

0

एक नया विकल्प वीपीएन मॉनिटर एपस्टोर पर उपलब्ध है। यह अधिक अनुकूलन के लिए अनुमति देता है, जैसे ऑटो-लॉगिन, वीपीएन कनेक्शन के माध्यम से साइकिल चलाना, आदि। कम से कम OS X 10.9 Mavericks की आवश्यकता है।


0

स्क्रिप्ट ऑटो वीपीएन किसी भी गिराए गए सेवा को फिर से कनेक्ट करें ।

मैं rjarvis2010 के समाधान का उपयोग कर रहा था, लेकिन मैं इससे बहुत खुश नहीं था।

मेरे पास कई अलग-अलग वीपीएन सेवाएं हैं जिनसे मैं जुड़ता हूं, इसलिए मुझे एक ऐसी स्क्रिप्ट चाहिए थी जो किसी भी वीपीएन को अपने आप से जोड़ देगा।

on idle
    tell application "System Events"
        tell location "Uni" of network preferences
            -- keep checking for VPN name until a VPN is connected
            set empty to true
            repeat until empty is false
                try
                    -- set variable "myVPN" to the name of the service that is connected and is a VPN
                    set myVPN to get name of first service whose (kind is greater than 11 and kind is less than 17) and connected of current configuration is true
                    set empty to false
                on error
                    set empty to true
                    delay 15
                end try
            end repeat

            -- doReconnect is a file that reads from the ppp.log and contains "true" by default, "false" if the vpn service was manually disconnected recently
            local doReconnect
            set doReconnect to (do shell script "cat /var/run/reconnect_vpn")

            repeat while doReconnect contains "true"
                set ConfProp to get current configuration of service myVPN
                if connected of ConfProp is false then
                    delay 1
                    set doReconnect to (do shell script "cat /var/run/reconnect_vpn")
                    if doReconnect contains "true" then
                        try
                            connect service myVPN
                        on error errorMessage
                        end try
                    else
                        exit repeat
                    end if
                end if
                delay 5
            end repeat
        end tell
    end tell
    return 1
end idle

इसे आपके लिए काम करने के लिए, आपको बदलने की आवश्यकता है

  • Uni आपके स्थान का नाम जो भी हो

एक बार जब आप ऐसा कर लेते हैं, तो इसे एक एप्लिकेशन के रूप में सहेजें और इसे अपने लॉगिन आइटम में रखें और आप जाने के लिए अच्छे हैं।

इसके अलावा, और यह महत्वपूर्ण है, आपको पीपीपी हुक सेट करने की आवश्यकता है जैसा कि rjarvis2010 के समाधान में वर्णित है

इसके अलावा, मैं आपको एक साथ कई वीपीएन को जोड़ने की कोशिश नहीं करने की सलाह दूंगा। इस स्क्रिप्ट को रोकने के लिए आपको गतिविधि मॉनिटर के माध्यम से इसे छोड़ने के लिए मजबूर करने की आवश्यकता हो सकती है (जैसा कि दोहराए गए लूप इसे कई बार बाहरी इनपुट प्राप्त करने की अनुमति नहीं देते हैं)।


0

मैं अपने वीपीएन कनेक्शन को जीवित रखने के लिए विभिन्न तरीकों का उपयोग कर रहा हूं। इसमें एक बहुत ही सरल launchdडेमॉन चलाना शामिल है जो बिना किसी लॉग इन के वीपीएन कनेक्शन को बनाए रखने की अनुमति देता है (यह स्लीप मोड से फिर से शुरू होने पर वीपीएन डिस्कनेक्शन पॉपअप से बचता है)।

launchdटर्मिनल से एक फ़ाइल बनाएं :

sudo nano /Library/LaunchDaemons/my.vpn.connector.plist

और निम्नलिखित सामग्री दर्ज करें:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>RunAtLoad</key>
    <true/>
    <key>KeepAlive</key>
    <dict>
        <key>NetworkState</key>
        <true/>
    </dict>
    <key>Label</key>
    <string>my.vpn.connector</string>
    <key>ProgramArguments</key>
    <array>
        <string>bash</string>
        <string>-c</string>
        <string>(test $(networksetup -showpppoestatus MyVPN) = 'disconnected' &&  ping -o my.vpn.server.url && networksetup -connectpppoeservice MyVPN) ; sleep 10</string>
    </array>
</dict>
</plist>

आप अपना डेमॉन और परीक्षण शुरू करने के लिए निम्न आदेश का उपयोग कर सकते हैं:

launchctl load /Library/LaunchDaemons/my.vpn.connector.plist

इस तरह, आपके पास सभी उपयोगकर्ताओं के लिए एक डेमॉन चल रहा है, कनेक्शन केवल तभी प्रयास किया जाता है जब इंटरनेट कनेक्शन उपलब्ध हो। इसके अलावा, वीपीएन अपने आप फिर से जुड़ जाता है जब इंटरनेट कनेक्शन वापस आ जाता है ...

संपादित करें:

मुझे यह विधि सबसे अधिक मजबूत लगती है क्योंकि यह vpn कनेक्ट को स्वचालित रूप से बनाने की अनुमति देता है, इससे पहले कि उपयोगकर्ता लॉग (सर्वर के लिए उपयोगी) हो।

योसेमाइट के अपडेट (OSX 10.10)

    <key>KeepAlive</key>
    <dict>
        <key>NetworkState</key>
        <true/>
    </dict>

योसेमाइट में मूल्यह्रास किया गया है। आप इसके बजाय निम्नलिखित का उपयोग कर सकते हैं

    <key>KeepAlive</key>
    <true/>

भी

networksetup -connectpppoeservice MyVPN

अब योसमाइट में काम नहीं करता। आप इसके बजाय इसका उपयोग कर सकते हैं

scutil --nc start MyVPN

scutil --nc listमेरे वीपीएन कनेक्शन को सूचीबद्ध नहीं करता है, जो नेटवर्क सेटिंग्स के माध्यम से देखा और कनेक्ट किया जा सकता है।
फिल पिरोजोवकोव

@philpirozhkov यह IKEv2 VPN के साथ काम नहीं करेगा। यहां बताया गया है कि आप ऐसा कैसे कर सकते हैं: Matt.coneybeare.me/… -service -on-your-mac /
coneybeare

0

मैंने देखा कि यहाँ पर कुछ उत्तर हैं जो लॉगिन हुक का उपयोग करते हैं, जिन्हें लॉन्च एजेंट और लॉन्च डेमोंस के पक्ष में ओएस एक्स के नए संस्करणों में पदावनत किया गया है।

मैंने एक स्क्रिप्ट और लॉन्च एजेंट बनाया। एजेंट प्रत्येक 30 सेकंड में एक शेल स्क्रिप्ट को कॉल करता है और आईपी पते को पिंग करने की कोशिश करता है जो वीपीएन नेटवर्क पर स्थिर होता है। यदि यह उस IP को पिंग नहीं कर सकता है तो यह आपके vpn कनेक्शन को सक्षम करता है।

यदि आपने Apple स्क्रिप्ट ऐप के माध्यम से ऐसा किया है, तो ऐप आइकन हमेशा आपकी गोदी में रहेगा। मैं इस पृष्ठभूमि में स्वचालित रूप से चलना पसंद करता हूं।

नीचे दिए गए प्रोजेक्ट को क्लोन करें और रीडमी में निर्देशों का पालन करें। अंतिम परिणाम एक इंस्टॉलर पैकेज है जो / लाइब्रेरी / LaunchAgents / में एक लॉन्च एजेंट प्लिस्ट फाइल और / लाइब्रेरी / एप्लिकेशन सपोर्ट / मेलोंसमैशर / में एक शेल स्क्रिप्ट रखेगा।

अपने वीपीएन कनेक्शन नाम और वीपीएन नेटवर्क पर एक आईपी पते के साथ शेल स्क्रिप्ट (ऑटो-वीपीएन) को संपादित करना सुनिश्चित करें। आप plist फ़ाइल (com.melonsmasher.autovpn.plist) में रन अंतराल को बदल सकते हैं।

https://github.com/MelonSmasher/OSX-AutoVPN


-2

AppleScripts की सुंदरता यह है कि आप इसके साथ लगभग कुछ भी कर सकते हैं और यह मुफ़्त है, नकारात्मक पक्ष यह है कि वे आम तौर पर बहुत संवेदनशील नहीं होते हैं (एक निश्चित समय अंतराल पर मतदान) और अभाव में केवल मूल मैक ओएस एक्स ऐप हो सकते हैं। ऐप स्टोर में एक अच्छा और नया वीपीएन ऑटो पुनः कनेक्ट ऐप "वीपीएन मॉनिटर" है, यह एक वीपीएन कनेक्शन ड्रॉप होने के तुरंत बाद पुनः प्राप्त करता है, यदि पसंदीदा सर्विस डाउन हो, तो स्टार्ट-अप से कनेक्ट होने पर, एक अलग वीपीएन सेवा को फिर से कनेक्ट करने में सक्षम है, आपके डाउनटाइम पर नज़र रखता है और एक स्टेटसबार एप्लिकेशन के रूप में पृष्ठभूमि में चलने के लिए न्यूनतम सिस्टम संसाधनों का उपयोग करता है। वीपीएन मॉनिटर


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