Systemd gagal memulai openvpn dalam lxd yang dikelola 16,04 kontainer

27

openvpndimulai dengan baik dari baris perintah menggunakan ExecStart=panggilan persis dari systemdfile unit:

/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 menegaskan bahwa prosesnya ada:

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/

Tetapi systemctl start openvpn@servertidak berhasil:

[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'.

Saya menafsirkan journalctl | grep ovpn-server | tail -n 100bahwa itu gagal membayar:

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
Christian David
sumber
Masalah ini terjadi pada saya di OpenVZ dengan Ububtu 16.4 - Dengan mengomentari LimitNPROCjawabannya, layanan mulai berjalan dengan baik.
Piotr Kula

Jawaban:

46

Saya sudah mencari perbaikan untuk ini juga. Apa yang saya temukan untuk bekerja adalah mengomentari LimitNPROCbaris masuk /lib/systemd/system/[email protected].

Jangan lupa lari systemctl daemon-reloadsetelah itu.

Iain
sumber
3
Terima kasih! Bagaimana Anda mendiagnosis masalah ini? Bahkan mengetahui jawabannya, googling untuk LimitNPROC lxdtidak akan menghasilkan hit yang segera membantu saya.
Christian David
5
Saya menarik 15,10 lxd instance dan mulai membandingkan konfigurasi systemd. LimitNPROC pada awalnya tidak mencurigakan tetapi tidak ada pada konfigurasi yang lebih lama, jadi saya mencoba menghapusnya dan menyelesaikannya. Saya sudah mencabuti rambut saya selama satu hari pada saat itu.
Iain
8
Terima kasih, ini memperbaiki masalah saya juga! Saya memang harus berlari systemctl daemon-reloadsebelum mulai berlaku.
Quentin Skousen
1
Apakah ini sudah dilaporkan?
user1338062
2
Seseorang melaporkan ini sebagai github.com/lxc/lxd/issues/3336
happyskeptic
14

Lebih baik untuk menghindari unit systemd modyfying yang berasal dari paket sistem. Cukup gunakan drop over systemd override:

systemctl edit openvpn@

Nama unit untuk server openvpn mungkin berbeda, mis. untuk versi paket 2.4.5-xenial0nantinya

systemctl edit openvpn-server@

Kemudian dimasukkan ke dalam editor:

[Service]
LimitNPROC=infinity

Seharusnya membuat /etc/systemd/system/[email protected]/override.conffile (atau serupa untuk nama unit yang sesuai). Untuk mengaktifkannya, Anda mungkin ingin memuat ulang systemd

systemctl daemon-reload

Jika memulai unit berhasil dengan LimitNPROC=infinitykemudian kembali dan ubah batas ke nilai yang lebih tinggi dari standar 10. Batas ini penting untuk mencegah layanan dari mengkonsumsi semua pids yang tersedia yang dapat menyebabkan penolakan layanan.

Kredit:
timpa: https://unix.stackexchange.com/a/398541/218321
"batas tak terbatas": https://unix.stackexchange.com/a/345596/218321

porbas
sumber
3
ini juga memperbaiki openvpndi dalam openvzwadah
Stuart Cardall
Ini adalah solusi yang lebih baik daripada yang diterima. Saya baru saja memperbarui wadah saya dan openvpn berhenti bekerja. Ini karena saya memperbarui file stock systemd bukan menimpa.
WoJ
1

Saya juga harus menambahkan mereka di bawah saudara tun mereka masing-masing

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

untuk menjalankannya pada level L2.

Thomas
sumber
Selamat Datang di Tanya Ubuntu! Saya sarankan untuk mengedit jawaban ini untuk memperluasnya dengan detail spesifik tentang bagaimana melakukan ini. (Lihat juga Bagaimana cara saya menulis jawaban yang baik? Untuk saran umum tentang jawaban seperti apa yang dianggap paling berharga di Ask Ubuntu.)
David Foerster