如何在 Ubuntu 15.04 上启动 OpenVPN 客户端服务

use*_*916 25 openvpn 15.04

我可以启动 OpenVPN 并将其指向配置文件,一切正常,例如:

sudo openvpn /etc/openvpn/myvpn.conf
Run Code Online (Sandbox Code Playgroud)

但是当我尝试启动服务时

sudo /etc/init.d/openvpn start
Run Code Online (Sandbox Code Playgroud)

我得到的只是系统日志中的输出:

Jun 23 21:02:30 pc systemd[1]: Starting OpenVPN service...
Jun 23 21:02:30 pc systemd[1]: Started OpenVPN service.
Run Code Online (Sandbox Code Playgroud)

但它在骗我,没有运行 openvpn 服务:

gk@pc:/etc/openvpn$ ps -aux | grep openvpn
gk   15456  0.0  0.0  13688  2128 pts/0    S+   21:18   0:00 grep --color=auto openvpn
Run Code Online (Sandbox Code Playgroud)

没有其他 openvpn 进程在运行。如何启动服务?

我很高兴地注意到 /lib/systemd/system/openvpn.service 里面有:

[Service]
Type=oneshot
RemainAfterExit=yes
ExecStart=/bin/true
ExecReload=/bin/true
WorkingDirectory=/etc/openvpn
Run Code Online (Sandbox Code Playgroud)

我很确定 /bin/true 不是我的 openvpn 客户端应用程序。这就是为什么 openvpn 客户端在 Ubuntu 15.04 上无法从命令行工作的原因吗?

Jde*_*eBP 38

这就是为什么 openvpn 客户端在 Ubuntu 15.04 上无法从命令行工作的原因吗?

不。原因是您没有阅读该单元文件顶部的注释,而是rc直接调用 System 5脚本。 不要rc直接调用 System 5脚本,尤其是在rc不使用System 5 的系统上,例如 Ubuntu 版本 15。

service在 OpenVPN 的情况下,通过命令间接调用它们也是错误的。

OpenVPN 是 systemd 下的模板化服务。这些服务被命名为。所以你应该开始你的实例openvpn@config.service/etc/openvpn/myvpn.conf

systemctl 启动 openvpn@myvpn.service

进一步阅读

  • 仅供参考,但在 Ubuntu 15 上的这两个文件中都没有任何注释表明我所做的事情是错误的。确实很少有文档表明 systemctl 是现在使用的正确方法,实际上有足够的文档表明 /etc/init.d/xxxx _should_ 只在幕后使用 systemctl 并且应该是对用户透明,因此现有脚本不会全部中断。 (4认同)
  • 你有一个错字:`systemctl start openvpn@myvpn.service` 应该是`systemctl start openvpn@myvpn`。 (2认同)