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

この問題は、OpenVZでUbubtu 16.4を使用して発生しました- LimitNPROC回答のようにコメントアウトすることで、サービスは正常に開始されました。
ピョートル・クラ

回答:


46

私もこれの修正を探していました。動作することがわかったのは、のLimitNPROC行をコメントアウトすること/lib/systemd/system/openvpn@.serviceです。

systemctl daemon-reloadその後実行することを忘れないでください。


3
ありがとうございました!問題をどのように診断しましたか?答えを知っていても、グーグルLimitNPROC lxdはすぐに私に役立つヒットを返しませんでした。
クリスチャンデイビッド

5
15.10 lxdインスタンスを取得し、systemd構成の比較を開始しました。LimitNPROCは最初は疑わしくありませんでしたが、古い構成には存在しなかったため、削除してみて解決しました。その時点で、私は1日、髪を引き裂いていました。
イアン

8
おかげで、これも私の問題を修正しました!systemctl daemon-reload有効になる前に実行する必要がありました。
クエンティンスコーセン16

1
これは報告されていますか?
user1338062 16

2
誰かがこれを報告しgithub.com/lxc/lxd/issues/3336
happyskeptic

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
"unlimited limit":https : //unix.stackexchange.com/a/345596/218321


3
これはコンテナopenvpn内でも修正されopenvzます
スチュアート・カーダル

これは、受け入れられているものよりも優れたソリューションです。コンテナをアップグレードしたところ、openvpnが機能しなくなりました。これは、オーバーライドの代わりにストックsystemdファイルを更新したためです。
WoJ

1

私はまた、それぞれのツン兄弟を以下に追加する必要がありました

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

L2レベルで実行します。


Ask Ubuntuへようこそ!この回答を編集して、これを行う方法に関する具体的な詳細を追加することをお勧めします。(Ask Ubuntuでどのような回答が最も価値があると考えられるについての一般的なアドバイスについては、「良い回答を書くにはどうすればよいですか?」も参照してください。)
David Foerster
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.