연결 끊기시 VPN을 자동 재 연결하기


13

Mac OS X 10.7.3에서 내장 VPN을 사용합니다. IPSec, FWIW입니다. 때때로 연결이 끊어집니다 (아마도 회사 서버에 문제가 있음). 자동으로 다시 연결하는 방법이 있습니까? 때때로 나는 잠시 동안 눈치 채지 못합니다.

답변:


9

다음 AppleScript를 사용하여 응용 프로그램으로 저장 한 다음 에이전트 (도크 아이콘 없음)로 설정할 수 있습니다.

이 스크립트는 VPN 연결이 없을 때 설정합니다. 따라서 연결이 끊어진 직후에도 다시 연결해야합니다. VPN 연결을 확인하기 위해 간격을 변경할 수 있습니다. 스크립트에서 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)
phil pirozhkov

IKEv2 VPN에서는 작동하지 않습니다. 그렇게하는 방법은 다음과 같습니다 : matt.coneybeare.me/… -service-on-your-mac /
coneybeare

8

제공된 답변을 약간 변경했습니다. 무언가 가치가 있다면 땅에 들어갈 가치가 있기 때문입니다. VPN이 끊어지면 다시 연결하고 싶지만 의도적으로 VPN 연결이 끊어지면 다시 연결하지 않았습니다. 내가 생각해 낸 해결책은 효과적이고 우아하지 않았습니다.

먼저 pppd 시작 및 종료에 후크를 추가하여 원하는 VPN 상태를 추적했습니다. 이러한 파일은 루트가 소유해야하며 세계 읽기 / 실행 권한 ( sudo chmod 755 /etc/ppp/ip-*) 이 있어야합니다 .

/ 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 이하

#!/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'상태 변수를 확인하여 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"을 VPN이 호출 된 것으로 변경하십시오 . 또한 시작시 'reconnect_vpn'파일이 없으므로 파일을 찾을 수 없을 때 기본값으로 사용할 부울 (startOnLogin)을 추가했습니다. 나는 즉시 시작하고 싶지만, 그렇지 않으면 false로 변경하십시오.

나는 당신이 VPN 행동에 대해 특별한 사람이라면 당신도 해결책을 찾을 때까지 혼란을 좋아하는 사람이기 때문에이 답변에는 청중이 없습니다. 그러나 경우에 따라 여기 있습니다. 누군가에게 도움이되기를 바랍니다.


IKEv2 VPN에서는 작동하지 않습니다. 그렇게하는 방법은 다음과 같습니다 : matt.coneybeare.me/… -service-on-your-mac /
coneybeare

4

VPN 자동 연결 (Mac App Store 링크) 이라고하는 앱이 있습니다. $ 0.99입니다.

시작되면 메뉴 표시 줄에 나타납니다. VPN을 "켜기"위해 사용하면 OS X의 네트워크 환경 설정 분할 창에서 설정 한 VPN 연결 프로파일을 모니터링하고 항상 연결 상태를 유지합니다. VPN Auto-Connect의 메뉴 표시 줄 아이콘은 정의한 모든 VPN 연결 목록을 제공하며 항상 연결할 연결을 선택할 수 있습니다.


다른 질문에 오신 것을 환영합니다! 답변 주셔서 감사합니다, 존! 연결 한 앱에 대한 추가 정보를 추가 할 수 있습니까? 질문에 어떻게 대답합니까? OP가 필요로하는 앱의 특징은 무엇입니까?
daviesgeek

VPN 자동 연결은 IKEv2 VPN과 작동합니다. 그렇게하는 방법은 다음과 같습니다 : matt.coneybeare.me/… -service-on-your-mac /
coneybeare

0

새로운 옵션은 AppStore에서 사용 가능한 VPN 모니터 입니다. 자동 로그인, VPN 연결을 통한 사이클링 등과 같은 더 많은 사용자 정의가 가능합니다. 최소한 OS X 10.9 Mavericks가 필요합니다.


0

삭제 된 VPN 서비스를 스크립트로 자동 재 연결 합니다 .

내가 사용했던 rjarvis2010솔루션을 하지만 난 그게 꽤 행복하지 않았다.

연결하려는 VPN 서비스가 다양하므로 연결된 VPN을 자동으로 다시 연결하는 스크립트를 원했습니다.

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 위치 이름이 무엇이든

완료되면 응용 프로그램으로 저장하고 로그인 항목에 저장하면 좋습니다.

에 설명 된대로 또한,이 중요합니다, 당신은 PPP 후크를 설정해야 rjarvis2010 의 ' 솔루션

또한 여러 VPN을 동시에 연결하려고 시도하지 않는 것이 좋습니다. 이 스크립트를 중지하려면 반복 루프가 외부 입력을 수신 할 수 없으므로 활동 모니터를 통해 강제로 종료해야 할 수도 있습니다.


0

VPN 연결을 유지하기 위해 다른 접근 방식을 사용하고 있습니다. 여기에는 launchd사용자가 로그인하지 않아도 VPN 연결을 유지할 수 있는 매우 간단한 데몬이 실행됩니다 (절전 모드에서 다시 시작할 때 VPN 연결 끊기 팝업을 피함).

launchd터미널에서 plist 파일을 만듭니다 .

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이 자동으로 다시 연결됩니다…

편집하다:

사용자가 로그인하기 전에 (서버에 유용함) 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네트워크 설정을 통해 볼 수 있고 연결 가능한 VPN 연결이 표시되지 않습니다.
phil pirozhkov

@philpirozhkov IKEv2 VPN에서는 작동하지 않습니다. 그렇게하는 방법은 다음과 같습니다 : matt.coneybeare.me/… -service-on-your-mac /
coneybeare

0

여기에 로그인 후크를 사용하는 몇 가지 답변이 있음을 알았습니다.이 버전은 Launch Agent 및 Launch Daemons를 위해 최신 버전의 OS X에서 더 이상 사용되지 않습니다.

스크립트를 작성하고 에이전트를 시작했습니다. 에이전트는 30 초마다 셸 스크립트를 호출하고 VPN 네트워크에서 고정 된 IP 주소를 핑 (Ping)하려고합니다. 해당 IP를 Ping 할 수없는 경우 VPN 연결을 활성화합니다.

Apple Script App을 통해이 작업을 수행 한 경우 앱 아이콘은 항상 도크에 있습니다. 백그라운드에서 자동으로 실행하는 것을 선호합니다.

아래 프로젝트를 복제하고 추가 정보의 지시를 따르십시오. 최종 결과는 시작 라이브러리 plist 파일을 / Library / LaunchAgents /에 배치하고 쉘 스크립트를 / Library / Application Support / melonsmasher /에 배치하는 설치 프로그램 패키지입니다.

VPN 연결 이름과 VPN 네트워크에있는 IP 주소로 쉘 스크립트 (auto-vpn)를 편집하십시오. plist 파일 (com.melonsmasher.autovpn.plist)에서 실행 간격을 변경할 수 있습니다.

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


-2

AppleScript의 장점은 거의 모든 작업을 수행 할 수 있다는 점이며 무료입니다. 단점은 일반적으로 응답 속도가 일정하지 않고 (고정 시간 간격으로 폴링) 기본 MAC OS X 앱만 가질 수있는 기능이 없다는 것입니다. 새롭고 새로운 VPN 자동 재 연결 앱은 앱 스토어의 "VPN Monitor"이며, VPN 연결이 끊어지면 즉시 재 연결하고, 선호하는 서비스가 다운 된 경우 다른 VPN 서비스에 다시 연결할 수 있습니다. 가동 중지 시간을 추적하고 최소 시스템 리소스를 사용하여 백그라운드에서 상태 표시 줄 응용 프로그램으로 실행됩니다. VPN 모니터


2
FAQ, 특히 자기 진흥
nohillside
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.