在越狱的 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 中有几处内容看起来不对:
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
我有一个 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 中有几处内容看起来不对:
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