Ok, also habe ich im Web nach Lösungen für dieses Problem gesucht, ohne dass die Antworten für mich zu funktionieren schienen. Hoffentlich kann mir jemand helfen. Ich versuche nur, den OpenVPN-Client zu konfigurieren.
Ich renne CrunchBang Linux 3.2.0-4-amd64 Debian 3.2.60-1+deb7u1 x86_64 GNU/Linux
und habe gerade auf die Verwendung umgestellt systemd
. Die Umstellung verlief reibungslos, aber jetzt kann ich meinen OpenVPN-Client nicht mehr mit systemd starten. Ich habe versucht, diese Konfigurationstutorials zu befolgen, aber es funktioniert nichts.
- http://fedoraproject.org/wiki/Openvpn
- http://d.stavrovski.net/blog/how-to-install-and-set-up-openvpn-in-debian-7-wheezy
- Und schaute ein paar andere verschiedene Führer an.
Ich kann den Tunnel von der Kommandozeile aus mit aufrufen openvpn /etc/openvpn/vpn.conf
. Ich weiß also, dass die Konfigurationsdatei gut ist. Sie hat mit sysvinit einwandfrei funktioniert. Ich bin also nicht überrascht. Ich versuche dann einfach einen Status zu machen mit dem systemctl status [email protected]
Ergebnis:
$ sudo systemctl status [email protected]
[email protected]
Loaded: error (Reason: No such file or directory)
Active: inactive (dead)
Ich erkannte, dass ich einige Einstellungen für Dienste vornehmen muss. Ich möchte zur Eingabe eines Passworts aufgefordert werden, daher habe ich mich an diese Anleitung gehalten, um ein [email protected]
In zu erstellen /etc/systemd/system/
. Beim Neustart des OpenVPN-Dienstes wird jedoch weiterhin kein Kennwort abgefragt.
$ sudo service openvpn restart
[ ok ] Restarting openvpn (via systemctl): openvpn.service.
In den Fedora-Tutorials werden die Schritte zum Erstellen symbolischer Links durchlaufen, es werden jedoch keine .service-Dateien in den Handlungsanweisungen erstellt.
Welches Stück vermisse ich? Muss ich einen [email protected] erstellen? Wenn ja, wo genau platziere ich es? Ich denke, es sollte nicht so schwierig sein, aber ich kann anscheinend keine Lösung finden, die für mich funktioniert. Gerne stelle ich Ihnen weitere Informationen zur Verfügung.
Lösung
-rw-r--r-- 1 root root 319 Aug 7 10:42 [email protected]
[Unit]
Description=OpenVPN connection to %i
After=network.target
[Service]
Type=forking
ExecStart=/usr/sbin/openvpn --daemon ovpn-%i --status /run/openvpn/%i.status 10 --cd /etc/openvpn --config /etc/openvpn/%i.conf
ExecReload=/bin/kill -HUP $MAINPID
WorkingDirectory=/etc/openvpn
[Install]
WantedBy=multi-user.target
[email protected] (END)
Symlink:
lrwxrwxrwx 1 root root 36 Aug 7 10:47 [email protected] -> /lib/systemd/system/[email protected]
Nach Passwort fragen
Jetzt funktioniert alles, bis auf die Aufforderung, ein Kennwort für die Verbindung einzugeben. Ich habe diese Lösung versucht . Ich habe die Datei von oben ein wenig optimiert und ein Expect-Skript wie im Beispiel hinzugefügt . Arbeiten wie ein Zauber! Meine Dateien sind unten.
Geänderte Zeilen von oben /lib/systemd/system/[email protected]
ExecStart=/usr/sbin/openvpn --daemon ovpn-%i --status /run/openvpn/%i.status 10 --cd /etc/openvpn --management localhost 5559 --management-query-passwords --management-forget-disconnect --config /etc/openvpn/%i.conf
ExecStartPost=/usr/bin/expect /lib/systemd/system/openvpn_pw.exp
Erwarten Sie Skript /lib/systemd/system/openvpn_pw.exp
. Stellen Sie sicher, dass Sie Folgendes tun:
chmod +x
auf dem Skript.- haben
telnet
installiert
Code des Expect-Skripts:
#!/usr/bin/expect
set pass [exec /bin/systemd-ask-password "Please insert Private Key password: "]
spawn telnet 127.0.0.1 5559
expect "Enter Private Key Password:"
send "password 'Private Key' $pass\r"
expect "SUCCESS: 'Private Key' password entered, but not yet verified"
send "exit\r"
expect eof
Es ist zu beachten, dass die obige Lösung Ihr im Klartext eingegebenes Passwort in den folgenden Anmeldungen /var/log/syslog
und protokolliert/var/log/daemon.log
quelle
[email protected]
Datei aus?journalctl -b -m
finden Sie heraus, warum OpenVPN beendet wurde. Eine dieser Stellen sollte die eigentlichen Fehlermeldungen enthalten. (Oderjournalctl -b -m _EXE=/usr/sbin/openvpn
sollte sogar nur OpenVPN-Nachrichten geben).Antworten:
Ich denke, das Debian OpenVPN-Setup mit systemd ist derzeit ein bisschen kaputt. Damit es auf meinen Maschinen funktioniert, musste ich:
Erstelle
Ich habe meine Akte angerufen/etc/systemd/system/[email protected]
(das Verzeichnis) und füge darin eine neue Datei ein:local-after-ifup.conf
. Es muss mit enden.conf
. (Dies ist das bisschen, das derzeit ein bisschen kaputt ist.)Erstelle eine Datei in
Dies ist der Debian-Fehler 741938 (behoben in 2.3.3-1)./etc/tmpfiles.d
(ich habe meine genanntlocal-openvpn.conf
) mit dem Inhalt:Erstellen Sie einen symbolischen Link in
multi-user.target.wants
(einfachste Weg istsystemctl enable openvpn@CONF_NAME.service
) ZB, wenn Sie/etc/openvpn/foo.conf
, würden Sie verwenden[email protected]
.Wenn das SysV-Init-Skript auch in systemd angezeigt wird, deaktivieren Sie es. Dies ist der Debian-Fehler 700888 (behoben in 2.3.3-1).
HINWEIS: 2.3.3-1 oder höher befindet sich noch nicht im Test , ist jedoch instabil.
quelle
/etc/init.d/openvpn
; systemd läuft standardmäßig genauso wie sysv init. Das ist das, wasopenvpn.service
du hast; Sie müssen es deaktivieren (systemctl disable
). Ist die Datei/lib/systemd/system/[email protected]
auf Ihrem System vorhanden?ln -s /lib/systemd/system/[email protected] /etc/systemd/system/multi-user.target.wants/[email protected]
/etc/init.d/openvpn script.
/etc/openvpn/
.Bearbeiten
/etc/default/openvpn
. Kommentar entfernen:Rennen
systemctl daemon-reload
.service openvpn start
.quelle
client.conf
, jetzt läuft meine einzige Konfiguration nur noch. Vielen Dank!Diese Art von Unit-Datei ist ein instanziierter Dienst. Weitere Details finden Sie hier
Das Folgende ist die Unit-Datei für
openvpn
unter CentOS 7:und es wohnt als
/usr/lib/systemd/system/openvpn@service
. Das%i
in der Datei wird durch die Zeichenfolge nach dem@
in der Einheit angegebenen Namen ersetzt.Da sich die Konfigurationsdatei auf dem aktuellen Stand befindet,
/etc/openvpn/myopenvpn.conf
wird der Dienst gestartet mit:quelle
/usr/lib/systemd/user/
nichts auf dem/usr/lib/systemd
Level./lib/systemd/system/
? Ich habe anscheinend beide auf meinem System, mit identischen Inhalten (und sie sind keine Symlinks!).Sie müssen die Servicedatei durch Aktivieren erstellen
openvpn@<configuration>.service
.Wenn die Konfigurationsdatei beispielsweise lautet
/etc/openvpn/client.conf
, lautet der Dienstname[email protected]
.Aus dem Arch Wiki
quelle
/etc/openvpn/vpn.conf
systemctl start [email protected]
nicht? Das sollte funktionieren ...Der openvpn @ .service hat sich zwischen Debians 8 und 9 stark weiterentwickelt. Das Originalpaket für Jessie zum Beispiel schlägt fehl
systemctl reload openvpn@
. Um dies zu beheben, führt die Stretch-Version 10 neue Anweisungen in die systemd-DateiPIDFile=
ein.Für Stretch-Benutzer würde ich vorschlagen, sich für den Backport zu entscheiden, und wenn dies nicht möglich ist, holen Sie sich zumindest die systemd-Datei unter https://packages.debian.org/jessie-backports/openvpn und extrahieren Sie sie
debian/[email protected]
in/etc/systemd/system/[email protected]
und genießen Sie sie besser Funktionalität und Sicherheit.quelle
Die richtige Lösung wäre, systemd
systemd-ask-password
/ " Password Agents " zu verwenden, das eine systemd-integrierte Methode zum Trennen von Passwörtern / Passphrasen zu Diensten bietet.Sie benötigen dazu OpenVPN 2.3.0 oder neuer .
quelle
Bei einer neuen Jessie_8.0.0-Installation habe ich Folgendes getan:
/etc/openvpn/cluster.conf
(Plus-*.key
und*.crt
) Dateien von WheezyAUTOSTART="all"
in/etc/default/openvpn
- Ich denke, das hatte keine Wirkung/lib/systemd/system-generators/openvpn-generator cluster
systemctl restart [email protected]
Jetzt ist der Tunnel hoch - ich werde sehen, was nach einem Neustart passieren wird, aber ich kann in diesem Moment nicht neu starten
quelle