
症状描述
首次安装OpenVPN后可以正常连接,但只要一重启macOS,就无法连接成功一直超时。
原因解析
OpenVPN macOS客户端只是一个壳子,实际上是给本地服务的socket连接发消息,重启后OpenVPN客户端依赖的服务没有启动导致无法使用
解决方案
方案一:仅调整macOS设置
这个方案是否可行取决于你的macOS机器上 “设置->通用->登录项与扩展->App后台活动” 中是否有对应OpenVPN的项目,如果有,直接打开即可
方案二:给macOS新增一个App后台活动
需要用到终端terminal执行下面整段命令:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36
| sudo tee /Library/LaunchDaemons/local.openvpn.ovpnagent.plist >/dev/null <<'PLIST' <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "https://www.apple.com/DTDs/PropertyList-1.0.dtd"> <plist version="1.0"> <dict> <key>Label</key> <string>local.openvpn.ovpnagent</string>
<key>ProgramArguments</key> <array> <string>/Library/Frameworks/OpenVPNConnect.framework/Versions/Current/usr/sbin/ovpnagent</string> </array>
<key>RunAtLoad</key> <true/>
<key>KeepAlive</key> <true/>
<key>ThrottleInterval</key> <integer>10</integer>
<key>StandardOutPath</key> <string>/var/log/local.openvpn.ovpnagent.log</string>
<key>StandardErrorPath</key> <string>/var/log/local.openvpn.ovpnagent.log</string> </dict> </plist> PLIST
sudo chown root:wheel /Library/LaunchDaemons/local.openvpn.ovpnagent.plist sudo chmod 644 /Library/LaunchDaemons/local.openvpn.ovpnagent.plist
sudo plutil -lint /Library/LaunchDaemons/local.openvpn.ovpnagent.plist
|
正常会返回:
1
| /Library/LaunchDaemons/local.openvpn.ovpnagent.plist: OK
|
然后加载它:
1 2 3 4 5 6 7
| sudo launchctl bootout system/local.openvpn.ovpnagent 2>/dev/null || true
sudo launchctl bootstrap system \ /Library/LaunchDaemons/local.openvpn.ovpnagent.plist
sudo launchctl enable system/local.openvpn.ovpnagent sudo launchctl kickstart -k system/local.openvpn.ovpnagent
|
检查运行状态:
1 2 3 4 5 6
| sudo launchctl print system/local.openvpn.ovpnagent | grep -E 'state =|pid =|runs =|last exit code'
pgrep -alf ovpnagent
ls -l /var/run/agent_ovpnconnect.sock
|
预期结果:
1 2
| state = running pid = ...
|
并且 socket 存在:
1
| /var/run/agent_ovpnconnect.sock
|