Systemd не запускає openvpn в контейнері 16.04, керованому lxd


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
Дякую! Як діагностували проблему? Навіть знаючи відповідь, googling for LimitNPROC lxdне повернув би хіт, який мені відразу допомагає.
Крістіан Давід

5
Я витягнув 15.10 lxd екземпляр і почав порівнювати systemd config. LimitNPROC спочатку не був підозрілим, але він не існував у старшій конфігурації, тому я спробував його видалити, і він вирішив це. Я до цього моменту відривав волосся над цим днем.
Iain

8
Дякую, це вирішило і мою проблему! Мені довелося бігати systemctl daemon-reloadдо того, як воно набуло чинності.
Квентін Скусен

1
Чи повідомлялося про це?
user1338062

2
Хтось повідомив про це як github.com/lxc/lxd/isissue/3336
happyyskeptic

14

Краще уникати модифікації системних одиниць, що походять із системних пакетів. Просто скористайтеся системним вивільненням заміни:

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. Ліміт важливий для того, щоб служба не споживала всі наявні підписки, які можуть спричинити відмову в послузі.

Кредити:
перевизначення: /unix//a/398541/218321
"необмежений ліміт": /unix//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.)
Девід Фоерстер,
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.