Ich führe mehrere OpenVPN-Instanzen auf meinem Server mit Debian Stable aus. sowie einige Clients als Serverinstanz. Im Moment, wenn eine dieser Instanzen fehlschlägt, scheint systemd die gesamte Gruppe von Prozessen zu beenden und neu zu starten:
27. Mai 12:09:44 Tritone Systemd [1]: openvpn@client_uk.service: Hauptprozess beendet, Code = beendet, Status = 1 / FAILURE 27. Mai 12:09:44 Tritone Systemd [1]: Die Einheit openvpn@client_uk.service ist in den Status "Fehlgeschlagen" eingetreten. 27. Mai 12:10:01 Tritone Systemd [1]: Beenden der OpenVPN-Verbindung zu client_rhode ... 27. Mai 12:10:01 Tritone Systemd [1]: OpenVPN-Verbindung zu client_uk wird gestartet ... 27. Mai 12:10:01 Tritone Systemd [1]: Beenden der OpenVPN-Verbindung zu client_ukraine ... 27. Mai 12:10:01 Tritone Systemd [1]: Beenden der OpenVPN-Verbindung zu server_udp ... 27. Mai 12:10:01 Tritone Systemd [1]: Beenden des OpenVPN-Dienstes ... 27. Mai 12:10:01 Tritone Systemd [1]: OpenVPN-Dienst wird gestartet ... 27. Mai 12:10:01 Tritone Systemd [1]: OpenVPN-Dienst gestartet. ...
Dies ist ebenso unerwünscht wie überflüssig imho. Ein Neustart des einzelnen fehlgeschlagenen Dienstes würde ausreichen. Dies ist die systemd-Konfiguration von /etc/systemd/system/multi-user.target.wants/openvpn.service
:
[Einheit] Beschreibung = OpenVPN-Dienst Nach = network.target [Bedienung] Typ = OneShot RemainAfterExit = yes ExecStart = / bin / true ExecReload = / bin / true WorkingDirectory = / etc / openvpn [Installieren] WantedBy = multi-user.target
Ich habe Konfigurationen gesehen, auf die ExecReload eingestellt war kill -HUP $MAINPID
, und auch mein Server scheint dies zu tun, wie der systemctl-Status sagt:
Process: 5893 ExecReload=/bin/kill -HUP $MAINPID (code=exited, status=0/SUCCESS)
Also, was ich nicht verstehe, wo ist dieser Kill-Befehl definiert, wenn die systemd config ExecReload tatsächlich etwas anderes sagt? Warum wird der Dienst neu gestartet, auch wenn er Type=oneshot
definiert ist? Schaue ich überhaupt auf die richtige Datei?
Und wie soll der Neustartbefehl aussehen? Töten wird nicht funktionieren, da der Prozess angeblich bereits tot ist.
Edit: Ich habe gefunden /lib/systemd/system-generators/openvpn-generator
und /lib/systemd/system/openvpn@.service
jetzt bleibt es dennoch unklar, wann sie ausgeführt oder ausgeführt werden. Der Generator scheint zu versagen, da keiner der Links tatsächlich erstellt wurde, wahrscheinlich aufgrund von Selinux-Einschränkungen. Trotzdem scheint diese Datei für init verwendet zu werden. Ich frage mich also, warum die Dummy-Datei überhaupt /etc/systemd/system/multi-user.target.wants/openvpn.service
erstellt wird.