VPN'nin bağlantı kesildiğinde otomatik olarak yeniden bağlanmasını sağlama


13

Mac OS X 10.7.3'te yerleşik VPN kullanıyorum. Bu IPSec, FWIW. Zaman zaman bağlantı kesilir (muhtemelen şirket sunucumla ilgili bir sorun). Otomatik olarak yeniden bağlanmasını sağlamanın bir yolu var mı? Bazen bir süredir fark etmiyorum, bu biraz sinir bozucu.

Yanıtlar:


9

Aşağıdaki AppleScript'i kullanabilir, bir uygulama olarak kaydedebilir ve bir aracı olarak ayarlayabilirsiniz (dock simgesi yok).

Bu komut dosyası, yokken bir VPN bağlantısı kuracaktır. Bu nedenle, bağlantınız kesildikten kısa bir süre sonra yeniden bağlanmalıdır. VPN bağlantınızı kontrol etmek için aralığı değiştirebilirsiniz, kodda 120 saniyedir.

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

Bunu bu cevapta nasıl ayarlayacağımı açıkladım .


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)
phil pirozhkov

Bu IKEv2 VPN'leriyle çalışmaz. İşte bunu yapabilirsiniz: matt.coneybeare.me/... -hizmetidir-on-your-mac /
coneybeare

8

Verilen cevapta bazı değişiklikler yaptım, çünkü eğer bir şey yapmaya değiyorsa, yeryüzünde yapmaya değer. VPN düştüyse yeniden bağlanmak istedim, ancak VPN kasıtlı olarak kesildiyse yeniden bağlanmak istemedim. Ortaya koyduğum çözüm hem etkili hem de yetersizdi.

İlk önce istenen VPN durumunu takip etmek için pppd başlatma ve kapatma işlemlerine kancalar ekledim. Bu dosyalar köklere sahip olmalı ve dünya okuma / yürütme izinlerine ( sudo chmod 755 /etc/ppp/ip-*) sahip olmalıdır.

/ Etc / ppp / ip-up:

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

/ etc / ppp / ip-down: OS X 10.9.5 ve altı için

#!/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 ve üstü için

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

Daha sonra yukarıdaki AppleScript'i değiştirerek, VPN'yi geri getirip getirmeyeceğinizi belirlemek için '/ var / run / reconnect_vpn' durum değişkenini kontrol edebildim:

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

Daha önce olduğu gibi, hattı set myConnection to the service "VPN"VPN'nizin adı ne olursa olsun değiştirin . Ayrıca, başlangıçta 'reconnect_vpn' dosyası mevcut olmadığından, dosya bulunamadığında varsayılan olarak hizmet etmek için bir boole (startOnLogin) ekledim. Hemen başlamak istiyorum, ama eğer bunu yanlış olarak değiştirmezseniz.

VPN davranışı konusunda bu tür bir kişi iseniz, aynı zamanda bir çözüm bulana kadar etrafta dolaşmaktan hoşlanan bir kişi olduğunuzu ve bu cevabın izleyicisinin olmadığını hissediyorum. Ama her ihtimale karşı, işte burada. Umarım birine yardım eder.


Bu IKEv2 VPN'leriyle çalışmaz. İşte bunu yapabilirsiniz: matt.coneybeare.me/... -hizmetidir-on-your-mac /
coneybeare

4

VPN Auto-Connect (Mac App Store bağlantısı) adı verilen bir uygulama var . 0,99 dolar.

Bir kez başladığında, menü çubuğunda yaşıyor; VPN'i "açmak" için kullandığınızda, OS X'in Ağ tercih bölmesinde ayarladığınız bir VPN bağlantı profilini izler ve her zaman ona bağlı kalmanızı sağlar. VPN Otomatik Bağlantı'nın menü çubuğu simgesi, tanımladığınız tüm VPN bağlantılarının bir listesini sağlar ve hangisine her zaman bağlanacağınızı seçmenize olanak tanır.


Farklı Sormaya hoş geldiniz! Cevabınız için teşekkürler, John! Bağlandığınız uygulama hakkında daha fazla bilgi ekleyebilir misiniz? Bu soruya nasıl cevap veriyor? Hangi özel özellikler OP'nin ihtiyaç duyduğu uygulamayı yapar?
daviesgeek

VPN Auto-Connect, IKEv2 VPN'lerle çalışır. İşte bunu yapabilirsiniz: matt.coneybeare.me/... -hizmetidir-on-your-mac /
coneybeare

0

Yeni bir seçenek AppStore'da bulunan VPN Monitor . Otomatik oturum açma, VPN bağlantıları üzerinden bisiklete binme gibi daha fazla özelleştirmeye izin verir. En azından OS X 10.9 Mavericks gereklidir.


0

Senaryo otomatik yeniden herhangi bir VPN hizmeti düştü.

Ben kullanarak olmuştu rjarvis2010 'ın çözüm ama oldukça memnun değildi.

Bağlandığım birçok farklı VPN hizmetim var, bu yüzden bağlandığım VPN'leri otomatik olarak yeniden bağlayacak bir komut dosyası istedim.

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

Sizin için çalışmasını sağlamak için,

  • Uni konumunuzun adı ne olursa olsun

İşiniz bittiğinde, bir uygulama olarak kaydedin ve Giriş Öğelerinize yerleştirin ve hazırsınız.

Açıklandığı gibi Ayrıca, bu önemli, PPP kurmak için kanca gerek rjarvis2010 s' çözüm

Ayrıca, aynı anda birden fazla VPN bağlamayı denemenizi tavsiye ederim. Bu komut dosyasını durdurmak için etkinlik izleyicisinden çıkmaya zorlamanız gerekebilir (yineleme döngüleri zaman zaman harici girdi almasına izin vermediğinden).


0

VPN bağlantımı canlı tutmak için farklı bir yaklaşım kullanıyorum. Bu, launchdherhangi bir kullanıcı oturum açmadan VPN bağlantısının korunmasına izin veren çok basit bir arka plan programının çalışmasını içerir (bu, uyku modundan devam ederken VPN bağlantısının kesilmesi açılır pencerelerini de önler).

launchdterminalden bir plist dosyası oluşturun :

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

ve aşağıdaki içeriği girin:

<?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>

Daemon'unuzu başlatmak ve test etmek için aşağıdaki komutu kullanabilirsiniz:

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

Bu şekilde, tüm kullanıcılar için çalışan bir arka plan programınız olur, yalnızca internet bağlantısı olduğunda bağlantı denenir. Ayrıca, internet bağlantısı tekrar sağlandığında VPN otomatik olarak yeniden bağlanır…

Düzenle:

Bir kullanıcı oturum açmadan önce (sunucular için yararlıdır) bir vpn bağlantısının otomatik olarak yapılmasına izin verdiği için bu yöntemi en sağlam buluyorum.

Yosemite Güncellemeleri (OSX 10.10)

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

Yosemite'de amortismana tabi tutulur. Bunun yerine aşağıdakileri kullanabilirsiniz

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

Ayrıca

networksetup -connectpppoeservice MyVPN

Artık Yosemite'de çalışmıyor. Bunu bunun yerine kullanabilirsiniz

scutil --nc start MyVPN

scutil --nc listAğ ayarları üzerinden görülen ve bağlanabilen VPN bağlantımı listelemiyor.
phil pirozhkov

@philpirozhkov Bu, IKEv2 VPN'leriyle çalışmaz. İşte bunu yapabilirsiniz: matt.coneybeare.me/... -hizmetidir-on-your-mac /
coneybeare

0

Burada giriş kancalarını kullanan birkaç cevap olduğunu gördüm, bunlar OS X'in yeni sürümlerinde Launch Agent ve Launch Daemons lehine kullanımdan kaldırıldı.

Bir senaryo ve fırlatma aracısı oluşturdum. Aracı her 30 saniyede bir kabuk komut dosyası çağırır ve vpn ağında statik olan bir IP adresine ping işlemi yapmaya çalışır. Bu IP'ye ping atamazsa vpn bağlantınızı etkinleştirir.

Bunu bir Apple Script Uygulaması aracılığıyla yaptıysanız, uygulama simgesi her zaman dock'unuzda olacaktır. Bunun arka planda otomatik olarak çalışmasını tercih ederim.

Aşağıdaki projeyi kopyalayın ve benioku içindeki talimatları izleyin. Sonuç, / Library / LaunchAgents / dizinine bir başlatma aracı plist dosyası ve / Library / Application Support / melonsmasher / dizinine bir kabuk betiği yerleştirecek bir yükleyici paketidir.

Kabuk betiğini (auto-vpn) VPN bağlantı adınızla ve VPN ağındaki bir IP adresiyle düzenlediğinizden emin olun. Çalışma aralığını plist dosyasında (com.melonsmasher.autovpn.plist) değiştirebilirsiniz.

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


-2

AppleScripts'in güzelliği, onunla neredeyse her şeyi yapabilmeniz ve ücretsiz olması, dezavantajı genellikle çok duyarlı olmamaları (sabit bir zaman aralığında yoklama) ve sadece yerel MAC OS X uygulamalarının sahip olabileceği özelliklerden yoksun olmasıdır. Güzel ve yeni bir VPN otomatik yeniden bağlanma uygulaması, uygulama mağazasında "VPN Monitor" dir, bir VPN bağlantısı düştüğü anda anında yeniden bağlanır, tercih edilen hizmet kapalıysa farklı bir VPN hizmetine yeniden bağlanabilir, başlangıçta bağlanır, arıza sürenizi takip eder ve bir durum çubuğu uygulaması olarak arka planda çalıştırmak için minimum sistem kaynaklarını kullanır. VPN Monitör


2
Lütfen SSS'ye, özellikle kendi kendini
tanıma
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.