Internet Verbindung soll nur mit OpenVPN starten, aber wie?

Nachricht
Autor
input2
Member
Member
Beiträge: 108
Registriert: 28 Jan 2016 21:48
Receiver 1: Mutant HD66se
Hat gedankt: 9 Mal
Hat Dank erhalten: 23 Mal

#61

Beitrag von input2 »

Sorry Pik mein Fehler.
Hier das Log und die 'openvpn' von openpli häng ich auch mit an,da die etwas anders als bei openatv ist.
Was mich irritiert,daß das selbe Script bei einem Aufruf (Telnet) funktioniert bei (cron) nicht.
Auch wenn 'OpenVPN Start Versuch 1 erfolgreich' im Log steht ist VPN nicht gestartet.
Wie gesagt beim Aufruf perTelnet ist VPN sofort da.
Übrigens hab ich bei openpli 'busybox-cron ' durch 'cronie' ersetzt.
[ATTACH]97496[/ATTACH]
Dateianhänge
vpn_emergency_restart.zip
(1.79 KiB) 28-mal heruntergeladen
Benutzeravatar
Pike_Bishop
Moderator
Moderator
Beiträge: 2783
Registriert: 11 Feb 2020 22:06
Wohnort: here and there
Receiver 1: Mutant HD2400
Receiver 2: VU Ultimo 4K
Receiver 3: Octagon SF8008
Receiver 4: Gigablue Quad 4K
Receiver 5: VDR
Hat gedankt: 727 Mal
Hat Dank erhalten: 1610 Mal
Geschlecht:

#62

Beitrag von Pike_Bishop »

Also ich seh da zwei Fehler,. erstmal das;
ps: invalid option -- 'a'
also das busybox ps im PLI kennt mal wieder nen Parameter nicht in dem Fall das a und die weiteren vermutlich eh auch nicht.
und;
Starting openvpn:/etc/init.d/openvpn: line 26: start-stop-daemon: command not found

Gegen das erste Poblem mit ps mit Parameter a mach mal das;

Code: Alles auswählen

opkg update
opkg install procps-ps



EDIT !
Hat etwas gedauert rauszufinden wie das abläuft damit das auch mal korrekt gestartet wird (ich verwende ja sonst immer nur den VPN Manager) also wenn man openvpn allein verwendet braucht es klar erstmal das Paket openvpn welches installiert sein muss (im PLI ist das nicht der Fall also nachinstallieren).
Dann muss man seine config Dateien in das Verzeichnis /etc/openvpn kopieren und zwar einmal eine client.conf also z.b: man hat von NordVPN ne Datei mit Namen;
at149.nordvpn.com.tcp.ovpn
dann diese in client.conf umbenennen.
In dieser client.conf (nur mit nem Linuxtauglichen Editor) die Zeile;
auth-user-pass
zu;
auth-user-pass /etc/openvpn/auth.txt
ändern, und dann eine Datei mit Namen auth.txt erstellen und da in Zeile 1 den User und in Zeile 2 das Passwort eintragen (wieder nur mit Linuxtauglichem Editor).
Diese Datei kommt ebenfalls in das Verzeichnis /etc/openvpn.
Nun sollte man openvpn via Telnet Befehl;

Code: Alles auswählen

openvpn --config /etc/openvpn/client.conf

starten können, wenn in der Ausgabe in telnet sowas zu sehen ist;
Initialization Sequence Completed
sollte das passen.

Nun findet das Script hier erstmals auch ne PID via;
ps aux | grep [o]penvpn | awk '{print $2}'
Also so sollte das Script nun erstmal korrekt funktionieren, jedenfalls manuell ausgeführt.

Ok also das Script hat zuvor bei dir via telnet nur geklappt weil die PID immer leer war, aber es hätte egal ob openvpn schon gestartet ist oder nicht das openvpn bei jeder
Ausführung vom Script wieder gestartet, also nicht gut.
Relevant ist da erstmal das erste Problem (siehe oben) der Rest sind nur Folgefehler, also installier mal wie oben eh geschrieben das Paket procps-ps nach
womöglich passt es dann schon auch via cronjob.
Wenn der cronjob korrekt ist sollte es das auch, also am Besten den cronjob mal löschen und so wie folgt neu erstellen;

Code: Alles auswählen

(crontab -l 2>/dev/null; echo "* * * * * sh /usr/script/vpn_emergency_restart.sh") | crontab -

Es ist dabei egal ob du den busybox-cron oder cronie verwendest (Im PLI bei cronie kanns sein das die cronjobs unter /etc/cron usw.. zu finden sind statt wie beim busybox-cron unter /var/spool usw.. aber das ändert nichts am Befehl oben um den cronjob zu erstellen.


EDIT 2 !
So hab es nun selbst im PLI-Devel getestet, und hat via cronjob tadelllos funktioniert. hab dazu einfach openvpn via;

Code: Alles auswählen

/etc/init.d/openvpn stop

gestoppt dann das Script nach /usr/script kopiert und wie oben den cronjob eingetragen. habe sogar noch das Modul tun via;

Code: Alles auswählen

rmmod tun

entladen und nun kurz gewartet. Hat sich alles wieder komplett selbstständig aktiviert, also das Modul tun war wieder geladen und openvpn PID war da, das Log dazu sieht so aus;

Code: Alles auswählen

Datum + Uhrzeit = Tue.11.Jun.2024-12:17


OpenVPN (wg. Zwangstrennung ?) nicht aktiv.
OpenVPN Start Versuch 1  ...
Starting openvpn: client.
OpenVPN Start Versuch 1 erfolgreich.



Einziger Unterschied ich hab den busybox-cron verwendet.
Problem sollte also nun gelöst sein bei dir wenn du das alles hier befolgst, also eh nur procps-ps nachinstallieren und cronjob wie oben neu erstellen, mehr is es nicht.
Ich geh mal davon aus das du die Konfigurationsdateien bereits korrekt angelegt hast unter /etc/openvpn (ansonsten steht das ja nun auch in diesem Post mit dabei wie das geht).


Grüsse
Pike
Scripte
********************* Bild *********************
Keine Antwort auf PN Anfragen welche ins Forum gehören.
input2
Member
Member
Beiträge: 108
Registriert: 28 Jan 2016 21:48
Receiver 1: Mutant HD66se
Hat gedankt: 9 Mal
Hat Dank erhalten: 23 Mal

#63

Beitrag von input2 »

Hallo Pike
Ich hab 'procps-ps' nachinstalliert.
Der Start per cron hat weiterhin Fehler wohingegend der Start per Telnet geht.
Ich hab spaßeshalber mal 'openvpn' von openatv genommen.
Da kommt auch der 'start-stop-daemon: Fehler' nur in einer anderen Zeile.
Ich häng das LOG an. Die ersten beiden Startversuche sind per cron der dritte funktionierende per telnet.
[ATTACH]97499[/ATTACH]
Dateianhänge
vpn_emergency_restart.log
(842 Bytes) 30-mal heruntergeladen
Benutzeravatar
RickX
Member
Member
Beiträge: 446
Registriert: 30 Mai 2022 10:02
Wohnort: NRW
Receiver 1: Nvidia Shield (waipu.tv)
Receiver 2: waipu.tv Stick
Receiver 3: Vu+ Uno 4K SE (VTI 15)
Hat gedankt: 176 Mal
Hat Dank erhalten: 212 Mal

#64

Beitrag von RickX »

Laut Fehlermeldung wird ein Kommando bzw. Programm nicht gefunden:

Code: Alles auswählen

 Starting openvpn:/etc/init.d/openvpn: line 26: start-stop-daemon: command not found


Was soll denn in Zeile 26 aufgerufen werden?

Dass es mit Telnet funktioniert und aus cron nicht, könnte am fehlenden PATH beim Aufruf durch cron liegen.
Dann muss in das Script nur der absolute Pfad eingetragen werden.
input2
Member
Member
Beiträge: 108
Registriert: 28 Jan 2016 21:48
Receiver 1: Mutant HD66se
Hat gedankt: 9 Mal
Hat Dank erhalten: 23 Mal

#65

Beitrag von input2 »

In der Zeile 26 steht dies start-stop-daemon --start --quiet --pidfile /var/run/openvpn.$NAME.pid \
Ich hatte zur Fehlersuche in der angehängten ('vpn_emergency_restart.zip') das ('openvpn' von openpli) mit eingefügt.
Der Fehler kommt auch bei der ('openvpn' von openatv) bei dieser Zeile.
Wenn openvpn gestoppt ist, existiert der Pfad /var/run/openvpn.$NAME.pid doch nicht mehr. Warum wird das beim telnetaufruf
ignoriert,da doch auch hier (etc/init.d/ openvpn) gestartet wird oder sehe ich das falsch.
Auch der direkte VPN-Start mit (/etc/init.d/openvpn start) funktioniert ja.

Ich hoffe Ihr Profis habt noch ne Idee.
Benutzeravatar
RickX
Member
Member
Beiträge: 446
Registriert: 30 Mai 2022 10:02
Wohnort: NRW
Receiver 1: Nvidia Shield (waipu.tv)
Receiver 2: waipu.tv Stick
Receiver 3: Vu+ Uno 4K SE (VTI 15)
Hat gedankt: 176 Mal
Hat Dank erhalten: 212 Mal

#66

Beitrag von RickX »

Laut Fehlermeldung wird start-stop-daemon nicht gefunden.
Da muss der absolute Pfad zu dem Kommando angegeben werden.
Benutzeravatar
Pike_Bishop
Moderator
Moderator
Beiträge: 2783
Registriert: 11 Feb 2020 22:06
Wohnort: here and there
Receiver 1: Mutant HD2400
Receiver 2: VU Ultimo 4K
Receiver 3: Octagon SF8008
Receiver 4: Gigablue Quad 4K
Receiver 5: VDR
Hat gedankt: 727 Mal
Hat Dank erhalten: 1610 Mal
Geschlecht:

#67

Beitrag von Pike_Bishop »

Hi,

Is nur komisch das es bei mir funktioniert, aber ich hatte sowas eh schonmal bei nem anderen User, trag mal das;

Code: Alles auswählen

PATH=/usr/local/bin:/usr/bin:/bin:/usr/local/sbin:/usr/sbin:/sbin

im Script ein und zwar in Zeile 9 (aber nur mit nem linuxtauglichen Editor) also sollte dann so aussehen das ganze Script (hab die Zeile orange markiert);

Code: Alles auswählen

#!/bin/sh

## Variables ##
OPENVPN=/etc/init.d/openvpn
LOGDIR=/home/root
LOGFILE=$LOGDIR/vpn_emergency_restart.log
LOGLINELIMIT=500

[B][color=#FF8C00]PATH=/usr/local/bin:/usr/bin:/bin:/usr/local/sbin:/usr/sbin:/sbin[/color][/B]

# Logfile Begrenzung auf ca. 500-510 Zeilen
# Bei Ueberschreitung wird ein neues angelegt
if [ -e $LOGFILE ] ; then
   LOGLINES="$(wc -l $LOGFILE | cut -d" " -f1)"
   
      if [ "$LOGLINES" -gt "$LOGLINELIMIT" ] ; then
         rm -f $LOGFILE
      fi
fi

# Generelles Logging
exec 3>&1 4>&2
trap 'exec 2>&4 1>&3' 0 1 2 3
exec 1>>$LOGFILE 2>&1


ONE_TIMES=0
message_one_times_enough() {
   ONE_TIMES=$((ONE_TIMES+1))
    if [ "$ONE_TIMES" -eq "1" ] ; then
      echo -e "\nDatum + Uhrzeit = $DATE\n"
   fi
}

OPENVPN_PID="$(ps aux | grep [o]penvpn | awk '{print $2}')"

COUNT=0
while [ -z $OPENVPN_PID ]
do
      COUNT=$(( $COUNT + 1 ))
      
      if [ "$COUNT" -gt "3" ] ; then
         COUNT=$(( $COUNT - 1 ))
         echo -e "\n! OpenVPN Start Versuch $COUNT fehlgeschlagen !"
         echo -e "Start der naechsten 3 Versuche in einer Minute ...\n"
         break
      else
         DATE="$(date +%a.%d.%b.%Y-%H:%M)"
         message_one_times_enough
         echo -e "\nOpenVPN (wg. Zwangstrennung ?) nicht aktiv.\nOpenVPN Start Versuch $COUNT  ..."
         $OPENVPN start
      fi

      if [ "$?" = "0" ] ; then
         echo -e "OpenVPN Start Versuch $COUNT erfolgreich.\n" && exit
      else
         echo -e "\n! OpenVPN Start Versuch $COUNT fehlgeschlagen !\nNaechster Start Versuch -> in drei Sekunden  ...\n"
         sleep 3
      fi
done


exit


Deine openvpn configs sind ja hoffentlich in Ordnung?
Denn sollte es nun noch immer nicht klappen muss man mal gucken ob da alles ok ist (also Schritt für Schritt von vorne)


Grüsse
Pike
Scripte
********************* Bild *********************
Keine Antwort auf PN Anfragen welche ins Forum gehören.
input2
Member
Member
Beiträge: 108
Registriert: 28 Jan 2016 21:48
Receiver 1: Mutant HD66se
Hat gedankt: 9 Mal
Hat Dank erhalten: 23 Mal

#68

Beitrag von input2 »

Prima Pike
Mit der Zeile funktioniert das Script nun auch beim cron-Aufruf.
Danke für Deine Hilfe.
Was sagt die Zeile eigentlich aus?
Benutzeravatar
RickX
Member
Member
Beiträge: 446
Registriert: 30 Mai 2022 10:02
Wohnort: NRW
Receiver 1: Nvidia Shield (waipu.tv)
Receiver 2: waipu.tv Stick
Receiver 3: Vu+ Uno 4K SE (VTI 15)
Hat gedankt: 176 Mal
Hat Dank erhalten: 212 Mal

#69

Beitrag von RickX »

Der PATH ist der sogenannte Suchpfad. Das ist eine Liste von Directories, in der nach Kommandos gesucht wird.
Benutzeravatar
Pike_Bishop
Moderator
Moderator
Beiträge: 2783
Registriert: 11 Feb 2020 22:06
Wohnort: here and there
Receiver 1: Mutant HD2400
Receiver 2: VU Ultimo 4K
Receiver 3: Octagon SF8008
Receiver 4: Gigablue Quad 4K
Receiver 5: VDR
Hat gedankt: 727 Mal
Hat Dank erhalten: 1610 Mal
Geschlecht:

#70

Beitrag von Pike_Bishop »

Damit gibst du im Script quasi die Pfade zu den binarys bekannt also wo das überall liegen kann in dem Fall also der start-stop-daemon der an der Box nach /sbin gelinkt ist
und auf /bin/busybox.nosuid verweist.
Der Befehl;

Code: Alles auswählen

ls -l /sbin | grep start-stop*

zeigt das;

Code: Alles auswählen

lrwxrwxrwx    1 root     root            19 Apr 20 12:27 start-stop-daemon -> /bin/busybox.nosuid


Hauptsache es klappt nun, aber da sieht man den Unterschied, ich brauch die Zeile hier nicht und es klappt auch via cronjob.
Die Zeile stört aber auch nicht weiter im Script, könnte man also auch standardmässig ins Script schreiben, bin aber zu faul und wenig Zeit derzeit.
Müsste ja dann ein neues Script hochladen auch.


Grüsse
Pike
Scripte
********************* Bild *********************
Keine Antwort auf PN Anfragen welche ins Forum gehören.
input2
Member
Member
Beiträge: 108
Registriert: 28 Jan 2016 21:48
Receiver 1: Mutant HD66se
Hat gedankt: 9 Mal
Hat Dank erhalten: 23 Mal

#71

Beitrag von input2 »

Ich danke Euch beiden für die Erklärung.
Antworten

Zurück zu „Plugins“