Hallo zusammen,
ich bin durch die Hilfe und die Beiträge dieses Forums sehr weit gekommen, leider stoße ich nun an meine Grenze meiner Kenntnisse.
Was ich gerne hätte, wäre eine funktionierende Überwachung meiner OPENVPN Verbindung mit Automatischen Reconnect wenn sie abbricht (Zwangstrennung/Server Neustart usw.) über den Prozess an sich ohne PING oder dergleichen.
Box ist eine VU+ UNO SE 4K mit Nord VPN Account und einer Fritz (alle Ports bin auf 1194 gesperrt) IPV6 ist abgeschalten.
OpenVpn mit der resolve Lösung von Banana Joe läuft und nun zu den Configs:
OPENVPNVTI.conf
Spoiler anzeigen
client
dev tun
proto udp
remote x.x.x.x 1194
resolv-retry infinite
remote-random
nobind
tun-mtu 1500
tun-mtu-extra 32
mssfix 1450
persist-key
persist-remote-ip
persist-tun
reneg-sec 0
comp-lzo no
auth-retry nointeract
auth-nocache
keepalive 5 15
remote-cert-tls server
#mute 10000
auth-user-pass /etc/openvpn/auth.txt
log /etc/openvpn/LOG.txt
verb 3
pull
fast-io
cipher AES-256-CBC
auth SHA512
OPENVPN Version
Spoiler anzeigen
root@vuuno4kse:~# openvpn --version
OpenVPN 2.4.6 arm-oe-linux-gnueabi [SSL (OpenSSL)] [LZO] [LZ4] [EPOLL] [MH/PKTINFO] [AEAD] built on Jan 18 2019
library versions: OpenSSL 1.1.1a 20 Nov 2018, LZO 2.09
Originally developed by James Yonan
Copyright (C) 2002-2018 OpenVPN Inc <sales@openvpn.net>
Compile time defines: enable_async_push=no enable_comp_stub=no enable_crypto=yes enable_crypto_ofb_cfb=yes enable_debug=yes enable_def_auth=yes enable_dependency_tracking=no enable_dlopen=unknown enable_dlopen_self=unknown enable_dlopen_self_static=unknown enable_fast_install=yes enable_fragment=yes enable_iproute2=yes enable_libtool_lock=yes enable_lz4=yes enable_lzo=yes enable_management=yes enable_multihome=yes enable_pam_dlopen=no enable_pedantic=no enable_pf=yes enable_pkcs11=no enable_plugin_auth_pam=no enable_plugin_down_root=yes enable_plugins=yes enable_port_share=yes enable_selinux=no enable_server=yes enable_shared=yes enable_shared_with_static_runtimes=no enable_silent_rules=no enable_small=no enable_static=yes enable_strict=no enable_strict_options=no enable_systemd=no enable_werror=no enable_win32_dll=yes enable_x509_alt_username=no with_aix_soname=aix with_broken_putenv=no with_crypto_library=openssl with_gnu_ld=yes with_libtool_sysroot=/home/matze/openvuplus_3.0/build/vuuno4k/tmp/sysroots/vuuno4k with_mem_check=no
Nun habe ich in irgendeinem geladenen ZIP Ordner (teste und versuche schon seit paar Tagen) folgendes Skript gefunden welches die laufende PID von Openvpn ausliest und dann daraufhin entweder nichts macht oder die Openvpn mit einem Startbefehl startet da sie nicht scheinbar nicht läuft.
(So lese ich die if else Prozedur jedenfalls.. Leider reichen meine Kenntnisse hierfür nicht mehr aus und ich hoffe auf euch...)
Dies habe ich als cronjob alle 3 Minuten angelegt, der Job funktioniert aber.
Leider funktioniert jedoch die Auswertung bei mir irgendwie nicht und daher startet Openvpn jedes mal erneut und legt zu dem vorhanden tun0 einen tun1 an, beim nächsten überprüfen kommt der tun2 dazu uns immer so weiter bis die Verbindung abbricht.
Spoiler anzeigen
#!/bin/sh
## Variables ##
OPENVPN=/etc/init.d/openvpn
LOGDIR=/home/root
LOGFILE=$LOGDIR/vpn_emergency_restart.log
LOGLINELIMIT=500
# 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
Wenn ich diesen Befehl allein ausführe kommt die aktuelle PID falls OPENVPN läuft, wenn nicht kommt gar keine Ausgabe...
Hier wäre die PID 1082...
Daraufhin sollte meiner Meinung nach nichts passieren da eine PID vorhanden und größer 0?!
Ist hier die Überprüfung in der while Schleife falsch oder verstehe ich es nicht
Was hat das mit dem -z $OPENVPN_PID auf sich?
Alternativ habe ich mir gedacht ich könnte auf die vorhandene Verbindung einen Restart legen wenn das mit den PID's nicht klappt.
Ich hoffe mein Anliegen ist verständlich ausgedrückt und Ihr könnt mir weiterhelfen.
Sollte jemand weitere Daten oder infos benötigen gerne melden.
Danke und Gruß
Bernd
ich bin durch die Hilfe und die Beiträge dieses Forums sehr weit gekommen, leider stoße ich nun an meine Grenze meiner Kenntnisse.
Was ich gerne hätte, wäre eine funktionierende Überwachung meiner OPENVPN Verbindung mit Automatischen Reconnect wenn sie abbricht (Zwangstrennung/Server Neustart usw.) über den Prozess an sich ohne PING oder dergleichen.
Box ist eine VU+ UNO SE 4K mit Nord VPN Account und einer Fritz (alle Ports bin auf 1194 gesperrt) IPV6 ist abgeschalten.
OpenVpn mit der resolve Lösung von Banana Joe läuft und nun zu den Configs:
OPENVPNVTI.conf
client
dev tun
proto udp
remote x.x.x.x 1194
resolv-retry infinite
remote-random
nobind
tun-mtu 1500
tun-mtu-extra 32
mssfix 1450
persist-key
persist-remote-ip
persist-tun
reneg-sec 0
comp-lzo no
auth-retry nointeract
auth-nocache
keepalive 5 15
remote-cert-tls server
#mute 10000
auth-user-pass /etc/openvpn/auth.txt
log /etc/openvpn/LOG.txt
verb 3
pull
fast-io
cipher AES-256-CBC
auth SHA512
OPENVPN Version
root@vuuno4kse:~# openvpn --version
OpenVPN 2.4.6 arm-oe-linux-gnueabi [SSL (OpenSSL)] [LZO] [LZ4] [EPOLL] [MH/PKTINFO] [AEAD] built on Jan 18 2019
library versions: OpenSSL 1.1.1a 20 Nov 2018, LZO 2.09
Originally developed by James Yonan
Copyright (C) 2002-2018 OpenVPN Inc <sales@openvpn.net>
Compile time defines: enable_async_push=no enable_comp_stub=no enable_crypto=yes enable_crypto_ofb_cfb=yes enable_debug=yes enable_def_auth=yes enable_dependency_tracking=no enable_dlopen=unknown enable_dlopen_self=unknown enable_dlopen_self_static=unknown enable_fast_install=yes enable_fragment=yes enable_iproute2=yes enable_libtool_lock=yes enable_lz4=yes enable_lzo=yes enable_management=yes enable_multihome=yes enable_pam_dlopen=no enable_pedantic=no enable_pf=yes enable_pkcs11=no enable_plugin_auth_pam=no enable_plugin_down_root=yes enable_plugins=yes enable_port_share=yes enable_selinux=no enable_server=yes enable_shared=yes enable_shared_with_static_runtimes=no enable_silent_rules=no enable_small=no enable_static=yes enable_strict=no enable_strict_options=no enable_systemd=no enable_werror=no enable_win32_dll=yes enable_x509_alt_username=no with_aix_soname=aix with_broken_putenv=no with_crypto_library=openssl with_gnu_ld=yes with_libtool_sysroot=/home/matze/openvuplus_3.0/build/vuuno4k/tmp/sysroots/vuuno4k with_mem_check=no
Nun habe ich in irgendeinem geladenen ZIP Ordner (teste und versuche schon seit paar Tagen) folgendes Skript gefunden welches die laufende PID von Openvpn ausliest und dann daraufhin entweder nichts macht oder die Openvpn mit einem Startbefehl startet da sie nicht scheinbar nicht läuft.
(So lese ich die if else Prozedur jedenfalls.. Leider reichen meine Kenntnisse hierfür nicht mehr aus und ich hoffe auf euch...)
Dies habe ich als cronjob alle 3 Minuten angelegt, der Job funktioniert aber.
Leider funktioniert jedoch die Auswertung bei mir irgendwie nicht und daher startet Openvpn jedes mal erneut und legt zu dem vorhanden tun0 einen tun1 an, beim nächsten überprüfen kommt der tun2 dazu uns immer so weiter bis die Verbindung abbricht.
#!/bin/sh
## Variables ##
OPENVPN=/etc/init.d/openvpn
LOGDIR=/home/root
LOGFILE=$LOGDIR/vpn_emergency_restart.log
LOGLINELIMIT=500
# 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
Wenn ich diesen Befehl allein ausführe kommt die aktuelle PID falls OPENVPN läuft, wenn nicht kommt gar keine Ausgabe...
root@vuuno4kse:~# (ps aux | grep [o]penvpn | awk '{print $2}')
1082
Hier wäre die PID 1082...
Daraufhin sollte meiner Meinung nach nichts passieren da eine PID vorhanden und größer 0?!
Ist hier die Überprüfung in der while Schleife falsch oder verstehe ich es nicht
Was hat das mit dem -z $OPENVPN_PID auf sich?
Alternativ habe ich mir gedacht ich könnte auf die vorhandene Verbindung einen Restart legen wenn das mit den PID's nicht klappt.
(ifconfig tun0| grep inet | awk '{print $2}')
addr:10.8.0.5
Ich hoffe mein Anliegen ist verständlich ausgedrückt und Ihr könnt mir weiterhelfen.
Sollte jemand weitere Daten oder infos benötigen gerne melden.
Danke und Gruß
Bernd