Systemd无法在LXD管理的16.04容器中启动OpenVPN


27

openvpn使用单位文件中的确切ExecStart=调用从命令行正常启动systemd

/usr/sbin/openvpn --daemon ovpn-server --status /run/openvpn/server.status 10 --cd /etc/openvpn --script-security 2 --config /etc/openvpn/server.conf /run/openvpn/server.pid

ps ax 确认该过程在那里:

1634 ?        Ss     0:00 /usr/sbin/openvpn --daemon ovpn-server --status /run/openvpn/server.status 10 --cd /etc/openvpn --script-security 2 --config /etc/openvpn/server.conf --writepid /run/openvpn/

systemctl start openvpn@server不成功:

● openvpn@server.service - OpenVPN connection to server
   Loaded: loaded (/lib/systemd/system/openvpn@.service; disabled; vendor preset: enabled)
   Active: failed (Result: exit-code) since Thu 2016-03-17 09:54:52 UTC; 4s ago
     Docs: man:openvpn(8)
           https://community.openvpn.net/openvpn/wiki/Openvpn23ManPage
           https://community.openvpn.net/openvpn/wiki/HOWTO
  Process: 1679 ExecStart=/usr/sbin/openvpn --daemon ovpn-server --status /run/openvpn/server.status 10 --cd /etc/openvpn --script-security 2 --config /etc/openvpn/server.conf --writepid /run/openvpn/s
 Main PID: 819 (code=exited, status=1/FAILURE)

Mar 17 09:54:52 vpn ovpn-server[1679]:   push_ifconfig_ipv6_remote = ::
Mar 17 09:54:52 vpn ovpn-server[1679]:   enable_c2c = DISABLED
Mar 17 09:54:52 vpn ovpn-server[1679]:   duplicate_cn = DISABLED
Mar 17 09:54:52 vpn ovpn-server[1679]:   cf_max = 0
Mar 17 09:54:52 vpn ovpn-server[1679]:   cf_per = 0
Mar 17 09:54:52 vpn ovpn-server[1679]:   max_clients = 1024
Mar 17 09:54:52 vpn systemd[1]: openvpn@server.service: Control process exited, code=exited status=1
Mar 17 09:54:52 vpn systemd[1]: Failed to start OpenVPN connection to server.
Mar 17 09:54:52 vpn systemd[1]: openvpn@server.service: Unit entered failed state.
Mar 17 09:54:52 vpn systemd[1]: openvpn@server.service: Failed with result 'exit-code'.

journalctl | grep ovpn-server | tail -n 100认为它无法分叉:

Mar 17 09:57:44 vpn ovpn-server[1693]: OpenVPN 2.3.10 x86_64-pc-linux-gnu [SSL (OpenSSL)] [LZO] [EPOLL] [PKCS11] [MH] [IPv6] built on Feb  2 2016
Mar 17 09:57:44 vpn ovpn-server[1693]: library versions: OpenSSL 1.0.2g  1 Mar 2016, LZO 2.08
Mar 17 09:57:44 vpn ovpn-server[1693]: daemon() failed or unsupported: Resource temporarily unavailable (errno=11)
Mar 17 09:57:44 vpn ovpn-server[1693]: Exiting due to fatal error

对于我,此问题在带有Ububtu 16.4的OpenVZ上发生了-通过按LimitNPROC答案中的说明进行注释,该服务开始正常。
Piotr Kula 2016年

Answers:


46

我也一直在寻找解决办法。我发现可以用注释掉该LimitNPROC/lib/systemd/system/openvpn@.service

不要忘记systemctl daemon-reload之后。


3
谢谢!您是如何诊断问题的?即使知道答案,LimitNPROC lxd也不会搜寻立即对我有帮助的点击。
克里斯蒂安·大卫

5
我拉了一个15.10 lxd实例,开始比较systemd配置。LimitNPROC最初并不令人怀疑,但在较早的配置中并不存在,因此我尝试将其删除并解决了。到那时,我已经把头发扯了整整一天。
伊恩

8
谢谢,这也解决了我的问题!systemctl daemon-reload在生效之前,我确实必须先跑步。
Quentin Skousen

1
有报道吗?
user1338062 '16


14

最好避免修改源自系统软件包的systemd单元。只需使用systemd Override插件即可:

systemctl edit openvpn@

openvpn 服务器的单位名称可能不同,例如。对于软件包版本2.4.5-xenial0,它将是

systemctl edit openvpn-server@

然后放入编辑器:

[Service]
LimitNPROC=infinity

它应该创建/etc/systemd/system/openvpn@.service.d/override.conf文件(或对应的单位名称类似)。要激活它,您可能需要重新加载systemd

systemctl daemon-reload

如果成功启动设备,LimitNPROC=infinity请返回并将限值更改为比默认值更高的值10。该限制对于防止服务使用所有可能导致拒绝服务的pid至关重要。

学分:
覆盖:https : //unix.stackexchange.com/a/398541/218321
“无限限制”:https : //unix.stackexchange.com/a/345596/218321


3
这也可以修复容器openvpn内部openvz
Stuart Cardall

这是比公认的更好的解决方案。我刚刚升级了容器,openvpn停止工作。这是因为我更新了库存systemd文件而不是替代文件。
WoJ

1

我还必须添加那些吼叫他们各自的屯兄弟

DeviceAllow=/dev/net/tap rw
DeviceAllow=/dev/net/tap1 rw

在L2级别上运行它。


欢迎来到Ask Ubuntu!我建议编辑此答案以将其扩展为有关如何执行此操作的特定详细信息。(另请参阅“我如何编写一个好的答案?”,以获取有关在Ask Ask Ubuntu上认为哪种答案最有价值的一般建议。)
David Foerster
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.