Systemd ล้มเหลวในการเริ่ม openvpn ในคอนเทนเนอร์ lxd ที่มีการจัดการ 16.04


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เช่นเดียวกับในคำตอบบริการเริ่มต้นได้ดี
Piotr Kula

คำตอบ:


46

ฉันกำลังมองหาการแก้ไขสำหรับเรื่องนี้ด้วย สิ่งที่ฉันได้พบในการทำงานคือการแสดงความคิดเห็นออกมาในแนวLimitNPROC/lib/systemd/system/openvpn@.service

อย่าลืมเรียกใช้systemctl daemon-reloadหลังจากนั้น


3
ขอขอบคุณ! คุณวินิจฉัยปัญหาได้อย่างไร แม้จะรู้คำตอบแล้ว googling สำหรับLimitNPROC lxdจะไม่ได้กลับมาตีที่เป็นประโยชน์กับฉันทันที
Christian David

5
ฉันดึงอินสแตนซ์ 15.10 lxd และเริ่มเปรียบเทียบ systemd config LimitNPROC ไม่น่าสงสัยในตอนแรก แต่มันไม่ได้มีอยู่ในการกำหนดค่าที่เก่ากว่าดังนั้นฉันจึงลองลบมันออกมาและมันแก้ไขมันได้ ฉันจะฉีกผมออกไปเป็นเวลาหนึ่งวันตามจุดนั้น
เลน

8
ขอบคุณสิ่งนี้แก้ไขปัญหาของฉันด้วย! ฉันต้องวิ่งsystemctl daemon-reloadก่อนที่มันจะมีผล
Quentin Skousen

1
มีการรายงานเรื่องนี้หรือไม่?
user1338062

2
มีคนรายงานว่านี่เป็นgithub.com/lxc/lxd/issues/3336
happyskeptic

14

เป็นการดีกว่าที่จะหลีกเลี่ยง modyfying systemd units ที่มาจากแพ็คเกจระบบ เพียงใช้ดร็อปดาวน์การแทนที่ systemd:

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ขีด จำกัด เป็นสิ่งสำคัญในการป้องกันไม่ให้บริการใช้งาน pids ที่มีอยู่ทั้งหมดซึ่งอาจทำให้เกิดการปฏิเสธบริการ

เครดิต: การ
แทนที่: /unix//a/398541/218321
"จำกัด ไม่ จำกัด ": /unix//a/345596/218321


3
นอกจากนี้ยังแก้ไขopenvpnภายในopenvzคอนเทนเนอร์
Stuart Cardall

นี่เป็นทางออกที่ดีกว่าที่ยอมรับ ฉันเพิ่งอัปเกรดคอนเทนเนอร์ของฉันและ openvpn หยุดทำงาน นี่เป็นเพราะฉันอัพเดทไฟล์ stock systemd แทนการแทนที่
WoJ

1

ฉันยังต้องเพิ่มเสียงร้องของพี่ชายของพวกเขาตามลำดับ

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

เพื่อรันในระดับ L2


ยินดีต้อนรับสู่ถาม Ubuntu! ฉันขอแนะนำให้แก้ไขคำตอบนี้เพื่อขยายโดยมีรายละเอียดเฉพาะเกี่ยวกับวิธีการทำเช่นนี้ (ดูเพิ่มเติมฉันจะเขียนคำตอบที่ดีได้อย่างไรสำหรับคำแนะนำทั่วไปเกี่ยวกับคำตอบประเภทใดที่ถือว่ามีค่ามากที่สุดใน Ask Ubuntu)
David Foerster
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.