Autostart (Debian) funktioniert nicht
Hallo Forum,
habe ein kleines Problem mit dem Raspberry Pi 2 (OSMC),
Per SSH habe ich über das System (Debian) OpenVPN installiert und die VPN-Verbindung funktioniert, diese lasse ich per Autostart starten.
Wenn man das Gerät vom Strom getrennt wird, wird keine VPN-Verbindung mehr hergestellt wenn das Gerät wieder eingeschaltet wird.
Hier muss man manuel die Verbindung herstellen und bei jedem weiteren Neustart funktioniert es - nur nicht bei einer Stromtrennung.
Autostart über update-rc.d
Wo habe ich einen gemacht Fehler?
habe ein kleines Problem mit dem Raspberry Pi 2 (OSMC),
Per SSH habe ich über das System (Debian) OpenVPN installiert und die VPN-Verbindung funktioniert, diese lasse ich per Autostart starten.
Wenn man das Gerät vom Strom getrennt wird, wird keine VPN-Verbindung mehr hergestellt wenn das Gerät wieder eingeschaltet wird.
Hier muss man manuel die Verbindung herstellen und bei jedem weiteren Neustart funktioniert es - nur nicht bei einer Stromtrennung.
Autostart über update-rc.d
#!/bin/sh
### BEGIN INIT INFO
# Provides: OpenVPN
# Required-Start:
# Required-Stop:
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: Stellt eine OpenVPN-Verbindung her
# Description:
### END INIT INFO
# Actions
case "$1" in
start)
openvpn /etc/openvpn/client.conf
;;
stop)
# STOP
;;
restart)
openvpn /etc/openvpn/client.conf
;;
esac
exit 0
Wo habe ich einen gemacht Fehler?
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 273977
Url: https://administrator.de/contentid/273977
Ausgedruckt am: 18.11.2024 um 11:11 Uhr
24 Kommentare
Neuester Kommentar
Hi adm999,
Was steht denn in solch einem Fall in dem OpenVPN.log-File.
Meine letzte OpenVPN Konfiguration ist jetzt schon ein paar Jahre her
Über die Konfigurations-Datei lässt sich auch das Loglevel einstellen, das könnte man für die Fehlerbehebung auch erhöhen.
Könnte mir vorstellen, das OpenVPN sein eigenes PID-File finden und dann behauptet es würde bereits laufen und ein erneuter Start somit nicht nötig ist.
Wo hingegen bei einem Neustart durch das "Prozessbeenden-Signal" und der Beendigung von OpenVPN das PID-File ordnungsgemäß gelöscht wird und somit ein sauberes Starten möglich ist.
Das dürfte sich aber auch im Logfile wiederfinden.
Ich kann mich aber auch daran erinnern, das sich OpenVPN über die Konsole starten lässt OHNE in den Hintergrund zu wechseln. So das man sämtliche Ausgaben direkt angezeigt bekommt satt im Log zu landen nehme ich mal an.
~Arano
Was steht denn in solch einem Fall in dem OpenVPN.log-File.
Meine letzte OpenVPN Konfiguration ist jetzt schon ein paar Jahre her
Über die Konfigurations-Datei lässt sich auch das Loglevel einstellen, das könnte man für die Fehlerbehebung auch erhöhen.
Könnte mir vorstellen, das OpenVPN sein eigenes PID-File finden und dann behauptet es würde bereits laufen und ein erneuter Start somit nicht nötig ist.
Wo hingegen bei einem Neustart durch das "Prozessbeenden-Signal" und der Beendigung von OpenVPN das PID-File ordnungsgemäß gelöscht wird und somit ein sauberes Starten möglich ist.
Das dürfte sich aber auch im Logfile wiederfinden.
Ich kann mich aber auch daran erinnern, das sich OpenVPN über die Konsole starten lässt OHNE in den Hintergrund zu wechseln. So das man sämtliche Ausgaben direkt angezeigt bekommt satt im Log zu landen nehme ich mal an.
~Arano
Wie wäre es, das RICHTIG einzurichten?
Entsprechendes Runlevel?
Lonesome Walker
Entsprechendes Runlevel?
Lonesome Walker
Hallo...
steht in der Config-Datei
Vielleicht musst du es auch erst einkommentieren.
Dann aber auch darauf achten das OpenVPN die nötigen Rechte hat die Log-Datei zu erstellen.
Mit
~Arano
steht in der Config-Datei
status /var/log/openvpn-status.log
#log /tmp/openvpn.log
verb 3
Dann aber auch darauf achten das OpenVPN die nötigen Rechte hat die Log-Datei zu erstellen.
Mit
verb
kann man die "Geschwätzigkeit" des Loggens einstellen.~Arano
Die Runlevel selbst sind i.O.
WO liegt Dein Script?
Und required start haste auch vergessen...
Normalerweise liefert OpenVPN doch entsprechende Scripte mit...?
Lonesome Walker
Normalerweise liefert OpenVPN doch entsprechende Scripte mit...?
Richtig, und da bei Ihm der Client läuft, wird der automatisch eine Verbindung initiieren, wenn er die Möglichkeit dazu hat.Es liegt also hier definitiv ein Fehler in der Config vor, die wir aber leider nicht kennen.
Der TO sollte die Verbindung einmal händisch mit...
openvpn /etc/openvpn/client.conf
Gruß orcape
Ähm...
die Ausgabe des Logs wäre trotzdem schön !
Ich weiß nicht ob es wirklich an der Konfig liegt, denn nach deiner Beschreibung funktioniert es im Normalbetrieb ja !
Also:
~Arano
die Ausgabe des Logs wäre trotzdem schön !
Der TO sollte die Verbindung einmal händisch mit...
...starten und die Ausgabe posten.
openvpn /etc/openvpn/client.conf
Ich weiß nicht ob es wirklich an der Konfig liegt, denn nach deiner Beschreibung funktioniert es im Normalbetrieb ja !
Also:
- OpenVpn starten,
- RasPi vom Strom ziehen,
- wieder verbinden,
- per SSH drauf,
- openVpn-Befehl (s.oben) ausführen und
- dessen Ausgabe hier posten.
~Arano
Also:
OpenVpn starten,RasPi vom Strom ziehen,
wieder verbinden,
per SSH drauf,
openVpn-Befehl (s.oben) ausführen und
dessen Ausgabe hier posten.
Auch mal die Ausgabe von route -n.
In der Client.config.....
- remote 176.227.198.122 (hier fehlt der Port, z.B. 1194)
Hier mal das Bsp. einer Client.conf....
client
dev tun
proto udp
remote 79.183.69.66 1196 # statische Server-IP + VPN-Port
resolv-retry infinite
nobind
persist-key
persist-tun
tun-mtu 1432
ca /etc/openvpn/ca.crt # Pfad zu den Zertifikaten
cert /etc/openvpn/client.crt #
key /etc/openvpn/client.key #
ns-cert-type server
comp-lzo
verb 3
Kleiner Nachtrag....
Falls Du irgendwann mal Probleme mit der Datenübertragung hast und ein Teil Deiner Pakete verworfen werden...
Hatte ich Dir aber schon in einem Deiner letzten Threads gepostet...
Falls Du irgendwann mal Probleme mit der Datenübertragung hast und ein Teil Deiner Pakete verworfen werden...
Mon Jun 8 16:24:16 2015 /sbin/ip link set dev tun0 up mtu 1500
...dann liegt das an der MTU-Größe.Hatte ich Dir aber schon in einem Deiner letzten Threads gepostet...
- tun0 up mtu 1500
MTU 1500 solltest Du reduzieren, das kann (muss nicht) zu Problemen führen.
Gruß orcapeMTU 1500 solltest Du reduzieren, das kann (muss nicht) zu Problemen führen.
Stimmt; welcher Wert wäre hier angebracht?
..das kommt auch auf die Art Deiner Verbindung an, aber MTU 1432 ist ein guter Wert.Bei mir musste ich nach einer technischen Änderung durch den Provider noch unter 1400 gehen, weil ich oberhalb noch Paketverlust hatte.
Du musst das aber nicht allein auf dem Client ändern, Server nicht vergessen.
Aus welchem Grund verliert Debian/Raspberry Pi die Autostartinformationen?
...kann ich Dir so nicht sagen.Normalerweise sind bei Debian die Zertifikate und Keys unter /etc/openvpn in einzelnen Files zu finden.
In der client.conf wird nur der Pfad zu diesen eingetragen.
Fährst Du einen Multiclienttunnel oder ist das ein einzelner Tunnel, würde man an Hand der Server.conf sehen.
Auch route -n in der Konsole eingegeben, würde da schon näheres erklären.
Gruß orcape
Die Werte in Konfigurationsdatei sind von einem VPN-Anbieter; bin nur Kunde.
Damit klärt sich zwar nicht Dein Problem, aber einiges.Das hättest Du schon mal gleich posten sollen, ist für mich aber nun auch an Hand der Routingtabelle klar.
Somit kannst Du auch eine Änderung der MTU-Größe vergessen, da diese vom Provider auf dem Server vorgegeben wird.
Wenn Du die Vorgabe des Providers zur Einrichtung des Tunnels richtig umgesetzt hast, sollte das auch funktionieren.
Ich würde an Deiner Stelle mal beim Tunnel-Provider nachhaken.
Gruß orcape
Ist es wirklich ratsam diese auszulagern oder nur eine Empfehlung?
Bei mir laufen nur private OpenVPN-Tunnel und da sind Zertifikate und Key in extra Files untergebracht.Ob das überhaupt etwas mit Deinem Problem zu tun hat, ist fraglich.
Wie sehen denn die Anweisungen Deines Providers aus ?
Daran solltest Du Dich halten.
Ist das eher nicht eine lokales Softwareproblem mit Debian?
...könnte schon sein.Wenn das händische starten des OpenVPN ohne Fehlermeldungen funktioniert und kein Autostart, so könnte das schon mit Deinem System zusammenhängen.
Die Konfigurationsdatei des OpenVPN-Clients unter Debian heisst...
/etcopenvpn/client.conf
...bei Dir....Konfigurationsdatei in /etc/openvpn/VPN.conf
Wenn die Datei bei Dir eine Namensänderung erfahren hat, könnte das schon dazu führen, das der Tunnel nicht wieder automatisch startet.Einen Netzwerkmanager wird es ja wohl auf dem Raspi nicht geben, der da Querschlägt.
Gruß orcape
Hallo
Irgend wo müssen wir das ja mal eingrenzen, können ja nicht an allen Stellen gleichzeitig "basteln" - dann funktioniert erst recht nichts. links repariert, aber rechts was kaputt gemacht
Schau doch mal, ob das init-Script überhaupt ausgeführt wird in dem du es etwas erweiterst:
Vielleicht ist da wirklich etwas das den Aufruf des init-Scripts verhindert... oder falls das zuverlässig funktioniert, es doch ein Konfigfehler ist.
Aber dann wissen wir es !
~Arano
Die Konfigurationsdatei des OpenVPN-Clients unter Debian heisst...
Und in deinem init-Script steht auch client.conf, das muss schon gleich lauten !/etcopenvpn/client.conf
...bei Dir....Konfigurationsdatei in /etc/openvpn/VPN.conf
Wenn die Datei bei Dir eine Namensänderung erfahren hat, könnte das schon dazu führen, das der Tunnel nicht wieder automatisch startet.Irgend wo müssen wir das ja mal eingrenzen, können ja nicht an allen Stellen gleichzeitig "basteln" - dann funktioniert erst recht nichts. links repariert, aber rechts was kaputt gemacht
Schau doch mal, ob das init-Script überhaupt ausgeführt wird in dem du es etwas erweiterst:
/bin/echo "ovpn init-script CALL" >>"/tmp/init-test.log"
case "$1" in
start)
/bin/echo "ovpn init-script START" >>"/tmp/init-test.log"
openvpn /etc/openvpn/client.conf
/bin/echo "ovpn init-script START = $?" >>"/tmp/init-test.log"
;;
[...]
/bin/echo "ovpn init-script DONE" >>"/tmp/init-test.log"
Aber dann wissen wir es !
~Arano
Oh Hi!
Sorry, mir war der untere Teil deiner Antwort entgangen, dachte das kommt später mit einer neuen Antwort.
Wie es aussieht wird immerhin das init-Script jedesmal ausgeführt, am "Autostart" liegt es also nicht.
Ich hatte in der zw.Zeit dein Script so wie es ist auf mein RasPi kopiert und ein
Damit würde ovpn als einer der ersten zusätzlichen Dienste gestartet werden, eventuell noch vor dem Netzwerk.
Mit welcher Priorität wurde das denn bei dir erstellt ?
Wie LonesomeWalker schon erwähnte: den required-Tag im init-Script anpassen.
~Arano
via Mobile
Sorry, mir war der untere Teil deiner Antwort entgangen, dachte das kommt später mit einer neuen Antwort.
Wie es aussieht wird immerhin das init-Script jedesmal ausgeführt, am "Autostart" liegt es also nicht.
Ich hatte in der zw.Zeit dein Script so wie es ist auf mein RasPi kopiert und ein
update-rc.d -n ovpn
oder ähnlich gemacht (-n = nur anzeigen was gemacht werden würde wenn). Bei mir wollte er das als "S01ovpv" in meinen runlevel verlinken.Damit würde ovpn als einer der ersten zusätzlichen Dienste gestartet werden, eventuell noch vor dem Netzwerk.
Mit welcher Priorität wurde das denn bei dir erstellt ?
Wie LonesomeWalker schon erwähnte: den required-Tag im init-Script anpassen.
~Arano
via Mobile
Hi,
Ich schätze mal da missverstehen wir uns !
Beim einrichten deines Init-Scripts mittels
rcS.d ist das runlevel für den Systemstart, hier werden unter anderem die Netzwerkadapter konfiguriert und gestartet/verbunden. Danach wird in das gewünschte runlevel gewechselt und weitere Programme/Dienste gestartet.
Natürlich kann es sein, das z.B. das Netzwerk noch gar nicht vollständig aufgebaut ist aber schon in den nächsten runlevel gewechselt wird, dann kann z.B. auch OpenVPN oder NTP nicht korrekt starten weil beide einen verfügbaren Netzwerkadapter benötigen.
Dafür der "Required-Start", dann kann init noch weiter steuern die das nun geht weiss ich aber auch nicht.
Als erste Möglichkeit also einfach mal "S01openvpn" in z.B "S99openvpn" umbenennen. Dann vergeht vielleciht noch mehr zeit zwischen dem Netzwerksetup und dem Start von OpenVPN - kann ja schon ausreichen.
Oder besser gleich das init-Script um nötige Bedingungen ergänzen.
https://wiki.debian.org/LSBInitScripts
> Falls das das Problem ist <
~Arano
Mit welcher Priorität wurde das denn bei dir erstellt ?
Es wurde keine Priotität gesetzt.Beim einrichten deines Init-Scripts mittels
update-rc.d
sollte in /etc/rc2.d/
ein symbolischer Link erstellt worden sein. Möglicherweise wie bei mir S01openvpn
. Die Ziffernfolge "01" ist in diesem Fall "die Priorität der Reihenfolge der Scripte". Kleine Zahlen zuerst, große Zahlen zuletzt.pi@raspberrypi ~ $ ls -l /etc/rcS.d/S11networking
lrwxrwxrwx 1 root root 20 Jan 7 2014 /etc/rcS.d/S11networking -> ../init.d/networking
pi@raspberrypi ~ $ ls -l /etc/rc2.d/S02ntp
lrwxrwxrwx 1 root root 13 Jan 7 2014 /etc/rc2.d/S02ntp -> ../init.d/ntp
pi@raspberrypi ~ $ head /etc/rc2.d/S02ntp
#!/bin/sh
### BEGIN INIT INFO
# Provides: ntp
# Required-Start: $network $remote_fs $syslog
# Required-Stop: $network $remote_fs $syslog
# Default-Start: 2 3 4 5
# Default-Stop:
# Short-Description: Start NTP daemon
### END INIT INFO
pi@raspberrypi ~ $
rcS.d ist das runlevel für den Systemstart, hier werden unter anderem die Netzwerkadapter konfiguriert und gestartet/verbunden. Danach wird in das gewünschte runlevel gewechselt und weitere Programme/Dienste gestartet.
Natürlich kann es sein, das z.B. das Netzwerk noch gar nicht vollständig aufgebaut ist aber schon in den nächsten runlevel gewechselt wird, dann kann z.B. auch OpenVPN oder NTP nicht korrekt starten weil beide einen verfügbaren Netzwerkadapter benötigen.
Dafür der "Required-Start", dann kann init noch weiter steuern die das nun geht weiss ich aber auch nicht.
Als erste Möglichkeit also einfach mal "S01openvpn" in z.B "S99openvpn" umbenennen. Dann vergeht vielleciht noch mehr zeit zwischen dem Netzwerksetup und dem Start von OpenVPN - kann ja schon ausreichen.
Oder besser gleich das init-Script um nötige Bedingungen ergänzen.
https://wiki.debian.org/LSBInitScripts
> Falls das das Problem ist <
~Arano