Systemd 无法在 lxd 管理的 16.04 容器中启动 openvpn

Systemd 无法在 lxd 管理的 16.04 容器中启动 openvpn

openvpnExecStart=使用单元文件中的精确调用从命令行启动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没有成功:

[email protected] - OpenVPN connection to server
   Loaded: loaded (/lib/systemd/system/[email protected]; 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]: [email protected]: 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]: [email protected]: Unit entered failed state.
Mar 17 09:54:52 vpn systemd[1]: [email protected]: 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

答案1

我也一直在寻找解决方法。我发现有效的方法是注释掉LimitNPROC中的行。/lib/systemd/system/[email protected]

别忘了追赶systemctl daemon-reload它。

答案2

最好避免修改源自系统包的 systemd 单元。只需使用 systemd override drop-in:

systemctl edit openvpn@

openvpn 的单元名称服务器2.4.5-xenial0可能会有所不同,例如对于软件包版本

systemctl edit openvpn-server@

然后放入编辑器:

[Service]
LimitNPROC=infinity

它应该创建文件(或与相应单元名称类似的文件)。要激活它,您可能需要使用以下命令重新加载 systemd/etc/systemd/system/[email protected]/override.conf

systemctl daemon-reload

如果使用 成功启动单元,LimitNPROC=infinity则返回并将限制更改为高于默认值 的值10。限制很重要,可以防止服务消耗所有可用的 pid,这可能导致拒绝服务。

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

答案3

我还必须补充那些在他们各自的 tun 兄弟下面咆哮的人

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

在 L2 级别上运行它。

相关内容