Systemd nie uruchamia openvpn w kontenerze 16.04 zarządzanym przez lxd

27

openvpnuruchamia się poprawnie z wiersza poleceń przy użyciu dokładnego ExecStart=wywołania z systemdpliku jednostki:

/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 potwierdza, że ​​proces już istnieje:

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/

Ale systemctl start openvpn@serversię nie udaje:

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

Tłumaczę, journalctl | grep ovpn-server | tail -n 100że nie udało się rozwidlić:

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
źródło
Ten problem zdarzył mi się na OpenVZ z Ububtu 16.4 - komentując LimitNPROCjak w odpowiedzi, usługa zaczęła się dobrze.
Piotr Kula,

Odpowiedzi:

46

Szukałem również rozwiązania tego problemu. To, co znalazłem do pracy, to skomentowanie LimitNPROClinii /lib/systemd/system/[email protected].

Nie zapomnij systemctl daemon-reloadpo tym pobiec .

Iain
źródło
3
Dziękuję Ci! Jak zdiagnozowałeś problem? Nawet znając odpowiedź, wyszukiwanie w Google LimitNPROC lxdnie zwróciłoby trafienia, które jest mi natychmiast pomocne.
Christian David
5
Wyciągnąłem instancję 15.10 lxd i zacząłem porównywać konfigurację systemd. LimitNPROC początkowo nie był podejrzany, ale nie istniał w starszej konfiguracji, więc spróbowałem go usunąć i to rozwiązało. W tym momencie odrywałem od niego włosy.
Iain,
8
Dzięki, to naprawiło również mój problem! Musiałem biec, systemctl daemon-reloadzanim zadziałało.
Quentin Skousen
1
Czy zostało to zgłoszone?
user1338062,
2
Ktoś zgłosił to jako github.com/lxc/lxd/issues/3336
happyskeptic
14

Lepiej unikać modyfikowania jednostek systemowych pochodzących z pakietów systemowych. Wystarczy użyć menu systemowego zastąpienia:

systemctl edit openvpn@

Nazwa jednostki dla serwera openvpn może być inna, np. 2.4.5-xenial0będzie to dla wersji pakietu

systemctl edit openvpn-server@

Następnie wstaw do edytora:

[Service]
LimitNPROC=infinity

Powinien utworzyć /etc/systemd/system/[email protected]/override.confplik (lub podobny dla odpowiedniej nazwy jednostki). Aby go aktywować, możesz chcieć ponownie załadować systemd

systemctl daemon-reload

Jeśli uruchomienie urządzenia zakończy się powodzeniem, LimitNPROC=infinitywróć i zmień limit na wartość wyższą niż domyślna 10. Limit jest ważny, aby zapobiec korzystaniu przez usługę ze wszystkich dostępnych ofert, które mogą spowodować odmowę usługi.

Kredyty:
zastąpienie: /unix//a/398541/218321
„nieograniczony limit”: /unix//a/345596/218321

porbas
źródło
3
naprawia to również openvpnwewnątrz openvzpojemników
Stuart Cardall
To lepsze rozwiązanie niż przyjęte. Właśnie zaktualizowałem swój kontener i openvpn przestał działać. Stało się tak, ponieważ zaktualizowałem systemowy plik zapasowy zamiast zastąpienia.
WoJ,
1

Musiałem też dodać tych poniżej ich brata tun

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

aby uruchomić go na poziomie L2.

Tomasz
źródło
Witamy w Ask Ubuntu! Zalecam edycję tej odpowiedzi, aby rozszerzyć ją o szczegółowe informacje na temat tego, jak to zrobić. (Zobacz także Jak napisać dobrą odpowiedź? Zawiera ogólne porady na temat tego, jakie rodzaje odpowiedzi są uważane za najcenniejsze w Ask Ubuntu.)
David Foerster,