Press "Enter" to skip to content

苹果系统自动VPN重连

背景:

我的Mac创建了一条VPN,这个电脑为实验机器,需要保持VPN一直链接,偶发的状况VPN可能会断开。希望能够自动重连,但是Mac系统没有相关自动重连的功能。

方法:

创建一个脚本,他会周期的检查VPN的链接状态,如果发现VPN断开的,他会自动重连VPN。

创建脚本:

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

这里你唯一需要修改的是VPN University,需要改成和你的VPN配置名称一致。比如我的是 VPN (L2TP),这个不要改错,不然就完犊子了。

保存脚本:

这段脚本怎么存下来运行呢?

你需要打开你的程序列表,搜索一个叫 Script Editor的软件,中文可能叫脚本编辑器之类的(我的是英文操作系统)。然后打开会是一个类似文本编辑器的东西,将上面的脚本粘贴进去。

然后选择 文件 -> 保存 会出来一个弹出框,文件格式选择 选择 Application,下面有个选项 Stay open 勾选上,然后找个你熟悉的位置,取个你喜欢的名字存储。

你会发现脚本会有个特别的图标存储下来,你现在可以尝试断开你的VPN然后运行这个脚本,他会尝试帮你重连VPN,并且他会每120秒检测一次状态。

优化配置:

你可能希望他开机启动,希望他启动后隐藏他的图标之类。

隐藏他的图标:对着你的脚本点右键,显示内容,找到 Contents下面的Info.plist。

用xcode或者其他的编辑器编辑这个文件,增加一个配置项:Application is agent (UIElement) 类型是Boolean,值为YES。

开机启动:将你的脚本放到一个固定的地方,打开系统配置,用户和组配置,选择左侧你的用户,右边有个登录选项(login items),点开,然后下面的加号选择你的脚本。这样你的脚本会在你的用户登录后自动启动。

开机自动登录:有的时候,你希望如果你的设备意外断电,来电自启动之后会自动登录。进入系统配置,用户和组配置,登录选项里面有个自动登录项后面选择你的用户即可。

参考资料:

https://apple.stackexchange.com/questions/42610/getting-vpn-to-auto-reconnect-on-connection-drop

https://apple.stackexchange.com/questions/32392/how-to-auto-connect-to-vpn-upon-login-boot/32395#32395

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注