我有 openvpn 配置,用户进行 2 因素身份验证。
如果我手动启动它,请运行:
/usr/sbin/openvpn --writepid /run/whatever --cd /etc/openvpn/ --config /etc/openvpn/work.conf
它要求输入用户名,然后是密码(由我手机上的软件提供),然后是私钥密码。然后就可以了。
但是如果/当我尝试通过正常的服务调用启动它时:
=# service openvpn start work
没有打印任何内容,openvpn 不起作用,journalctl 显示:
=# systemctl status openvpn
● openvpn.service - OpenVPN service
Loaded: loaded (/lib/systemd/system/openvpn.service; enabled; vendor preset: enabled)
Active: active (exited) since czw 2015-05-28 10:24:22 CEST; 17min ago
Process: 30395 ExecStart=/bin/true (code=exited, status=0/SUCCESS)
Main PID: 30395 (code=exited, status=0/SUCCESS)
CGroup: /system.slice/openvpn.service
maj 28 10:24:22 krowka systemd[1]: Starting OpenVPN service...
maj 28 10:41:40 krowka systemd[1]: Started OpenVPN service.
除了手动构建 /usr/sbin/openvpn 调用之外,我还能做些什么来使其通过“服务”调用或任何其他方式“正常”工作吗?
答案1
我尝试通过正常的服务调用启动它:# 服务 openvpn 开始工作
不,这不正常。这是 System 5 工具集的一个怪癖,它使用两个参数rc
调用 System 5脚本。rc
该rc
脚本采用非标准第二个参数作为要使用的 OpenVPN 配置的基本名称。
这是 Ubuntu Linux。您没有使用 System 5 rc
。您没有使用它的rc
脚本。您正在使用 systemd。您正在使用 systemd 服务单元,事实上 OpenVPN 已经使用它很多年了。 systemd 服务单元不是脚本,也不是有脚本参数。
他们拥有的是模板参数,而 OpenVPN 实际上是该技术的早期采用者之一模板单元机制一出现,至少从 2011 年起就有模板化单元。 (OpenVPN 的模板化新贵职位至少从 2012 年起就一直在流传。)
你正在看/lib/systemd/system/openvpn.service
。你应该关注的是.在配置名称上实例化它:/lib/systemd/system/[email protected]
systemctl preset [email protected]
systemctl disable [email protected]
systemctl start [email protected]
systemctl stop [email protected]
systemctl status [email protected]
或者让 Debian/Ubuntu 来完成繁重的工作。有一个单位发电机在引导程序或运行时/lib/systemd/system-generators/openvpn-generator
自动针对每个*.conf
文件实例化此模板。/etc/openvpn
systemctl daemon-reload