Systemd không khởi động openvpn trong container 16.04 được quản lý lxd


27

openvpnbắt đầu tốt từ dòng lệnh bằng cách sử dụng ExecStart=cuộc gọi chính xác từ systemdtệp đơn vị:

/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 xác nhận rằng quá trình là có:

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/

Nhưng systemctl start openvpn@serverkhông thành công:

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

Tôi giải thích journalctl | grep ovpn-server | tail -n 100rằng nó thất bại trong ngã ba:

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

Vấn đề này xảy ra với tôi trên OpenVZ với Ububtu 16.4 - Bằng cách bình luận LimitNPROCnhư trong câu trả lời, dịch vụ đã bắt đầu tốt.
Piotr Kula

Câu trả lời:


46

Tôi cũng đang tìm cách khắc phục vấn đề này. Những gì tôi đã tìm thấy để làm việc là bình luận ra LimitNPROCdòng trong /lib/systemd/system/openvpn@.service.

Đừng quên chạy systemctl daemon-reloadtheo sau đó.


3
Cảm ơn bạn! Làm thế nào bạn chẩn đoán vấn đề? Ngay cả khi biết câu trả lời, googling vì LimitNPROC lxdđã không trả lại một hit mà ngay lập tức hữu ích cho tôi.
Christian David

5
Tôi lấy một ví dụ 15.10 lxd và bắt đầu so sánh cấu hình systemd. Ban đầu, LimitNPROC không nghi ngờ nhưng nó không tồn tại trong cấu hình cũ hơn nên tôi đã thử gỡ bỏ nó và nó đã giải quyết nó. Vào thời điểm đó, tôi đã xé tóc ra một ngày.
Iain

8
Cảm ơn, điều này đã khắc phục vấn đề của tôi quá! Tôi đã phải chạy systemctl daemon-reloadtrước khi nó có hiệu lực.
Quentin Skousen

1
Điều này đã được báo cáo?
user1338062

2
Ai đó đã báo cáo điều này là github.com/lxc/lxd/issues/3336
happyskeptic

14

Tốt hơn hết là tránh các đơn vị systemd modyfying có nguồn gốc từ các gói hệ thống. Chỉ cần sử dụng trình đơn ghi đè systemd:

systemctl edit openvpn@

Tên đơn vị cho máy chủ openvpn có thể khác, ví dụ. cho phiên bản gói 2.4.5-xenial0nó sẽ được

systemctl edit openvpn-server@

Sau đó đưa vào trình chỉnh sửa:

[Service]
LimitNPROC=infinity

Nó sẽ tạo /etc/systemd/system/openvpn@.service.d/override.conftập tin (hoặc tương tự cho tên đơn vị tương ứng). Để kích hoạt nó, bạn có thể muốn tải lại systemd với

systemctl daemon-reload

Nếu bắt đầu thiết bị thành công, LimitNPROC=infinityhãy quay lại và thay đổi giới hạn thành giá trị cao hơn giá trị mặc định 10. Giới hạn này rất quan trọng để ngăn chặn dịch vụ tiêu thụ tất cả các loại thuốc có sẵn có thể gây ra sự từ chối dịch vụ.

Tín dụng:
ghi đè: https://unix.stackexchange.com/a/398541/218321
"không giới hạn": https://unix.stackexchange.com/a 4325596/218321


3
cái này cũng sửa openvpntrong openvzcác container
Stuart Cardall 11/03/18

Đây là một giải pháp tốt hơn so với giải pháp được chấp nhận. Tôi vừa nâng cấp container của mình và openvpn dừng hoạt động. Điều này là do tôi đã cập nhật tệp stock systemd thay vì ghi đè.
WoJ

1

Tôi cũng đã phải thêm những người dưới đây

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

để chạy nó ở cấp L2.


Chào mừng bạn đến hỏi Ubuntu! Tôi khuyên bạn nên chỉnh sửa câu trả lời này để mở rộng nó với các chi tiết cụ thể về cách thực hiện việc này. (Xem thêm Làm thế nào để tôi viết một câu trả lời hay? Để có lời khuyên chung về loại câu trả lời nào được coi là có giá trị nhất trên Hỏi Ubuntu.)
David Foerster
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.