在越狱的 iOS 设备上的 shell 中自动启动 OpenVPN

Auto Start OpenVPN in shell on a Jail Broken iOS device

我有一个 iPad Air 2 Jail-broken。

我目前安装了带有 shell 版 openvpn 的 OpenVPN:

OpenVPN 2.3-alpha1 i686-apple-darwin10 [SSL (OpenSSL)] [LZO2] [eurephia] [MH] [PF_INET6] [IPv6 payload 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 应用程序,但它需要我手动切换连接。

如果有人对我如何实现这一目标有其他想法,我愿意接受建议。

谢谢

你的方向是正确的。 launchd 守护进程是必经之路。

您的 plist 中有几处内容看起来不对:

  1. OnDemand 已弃用,您需要改用 KeepAlive。在您的情况下,只需将其设置为 true
  2. 通常您不会混用 ProgramProgramArguments。他们基本上做同样的事情,只有后者可以做更多。你最好只 ProgramArguments
  3. 实际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