我有一台iPad Air 2被囚禁。
我目前安装了OpenVPN,其shell版本为openvpn:
OpenVPN 2.3-alpha1 i686-apple-darwin10 [SSL(OpenSSL)] [LZO2] [eurephia] [MH] [PF_INET6] [IPv6有效载荷20110522-1(2.2.0)]建于2012年5月28日
我正在尝试将OpenVPN的命令行可执行文件设置为启动守护程序,因此它会在重新启动后自动连接到我的OpenVPN服务器。这需要超级自动化,以便我可以将ipad安装在我不在身体附近的地方。
我在/ Library / LaunchDaemons
创建了以下plist文件<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN"
"http://www.apple.com/DTDs/PropertyList-1.0.dtd";>
<plist version="1.0">
<dict>
<key>Label</key>
<string>org.openvpn</string>
<key>OnDemand</key>
<false/>
<key>Program</key>
<string>/usr/local/sbin/openvpn</string>
<key>ProgramArguments</key>
<array>
<string>openvpn</string>
<string>—-cd</string>
<string>/var/mobile/Documents/Configurations/bigfoot.ovpn</string>
<string>--config</string>
<string>bigfoot.ovpn</string>
<string>--auto-proxy</string>
</array>
<key>RunAtLoad</key>
<true/>
<key>TimeOut</key>
<integer>90</integer>
<key>WorkingDirectory</key>
<string>/etc/openvpn</string>
</dict>
</plist>
重启后,这个过程似乎没有开始,我在“dmesg”中没有看到任何方向来帮助我,这将是很棒的。
我会使用OpenVPN GUI应用程序,但它需要我手动切换连接。
如果有人不知道如何实现这一目标,我愿意接受建议。
谢谢
答案 0 :(得分:0)
你正朝着正确的方向前进。 launchd
守护进程是可行的方法。
有些事情在你的plist中看起来不正确:
OnDemand
,而是需要使用KeepAlive
。在您的情况下,只需将其设置为true
Program
和ProgramArguments
。他们基本上做同样的事情,只有后者才能做得更多。最好只使用ProgramArguments
实际ProgramArguments
看起来错了。请记住,这些是将传递给openvpn进程的程序参数。他们应该看起来像这样
<key>ProgramArguments</key>
<array>
<string>/usr/local/sbin/openvpn</string>
<string>--config</string>
<string>/var/mobile/Documents/Configurations/bigfoot.ovpn</string>
<string>--auto-proxy</string>
</array>
并且不需要Program
现在,当您想要调试launchd
守护进程时,您不需要在每次需要测试时重新启动。你可以用这个:
launchctl load /Library/LaunchDaemons/org.openvpn.plist
它会将您的守护程序加载到launchd
并启动它。如果出现问题,他会告诉你。当您需要重新加载plist(进行一些更改)时,您可以:
launchctl unload /Library/LaunchDaemons/org.openvpn.plist
停止守护程序并从launchd
然后
launchctl load /Library/LaunchDaemons/org.openvpn.plist