Igel-Server dreambox openvpn

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
rooki
Beiträge: 76
Registriert: 10.07.2013 07:13:19

Igel-Server dreambox openvpn

Beitrag von rooki » 08.09.2013 16:50:32

Hi,
Hi,

ich habe zum Testen mal versucht mit meiner Dreambox (zu Hause) extern eine VPN-Verbindung auf meinen Igel herzustellen.

Irgendwie scheint das aber nicht so recht zu klappen. Ich habe eine 7270 auf der openvpn läuft. Hierüber kann ich mich mit meinem Handy (opoenvpn) verbinden und mich auch von auswärts im LAN bewegen. Das klappt einwandfrei.

Versuche ich das jetzt mit meiner Dreambox über DCC per telnet kommt nach einer Weile "Verbindung abgebrochen" ich habe das mal mitgeloggt:

Code: Alles auswählen

Sun Sep  8 09:42:34 2013 OpenVPN 2.3.2 mipsel-oe-linux-gnu [SSL (OpenSSL)] [LZO] [EPOLL] [eurephia] [MH] [IPv6] built on Aug 19 2013
Sun Sep  8 09:42:34 2013 Control Channel Authentication: using '/etc/openvpn/static.key' as a OpenVPN static key file
Sun Sep  8 09:42:34 2013 Outgoing Control Channel Authentication: Using 160 bit message hash 'SHA1' for HMAC authentication
Sun Sep  8 09:42:34 2013 Incoming Control Channel Authentication: Using 160 bit message hash 'SHA1' for HMAC authentication
Sun Sep  8 09:42:34 2013 Socket Buffers: R=[163840->131072] S=[163840->131072]
Sun Sep  8 09:42:34 2013 UDPv4 link local: [undef]
Sun Sep  8 09:42:34 2013 UDPv4 link remote: [AF_INET]xx.xx.xxx.54:1194
Sun Sep  8 09:42:35 2013 TLS: Initial packet from [AF_INET]xx.xx.xxx.54:1194, sid=2079fc93 0d52ca42
Sun Sep  8 09:42:35 2013 VERIFY OK: depth=1, C=DE, ST=BW, L=xx, O=Igel-Server, OU=Home, CN=Igel-Server, name=Igel-Server, emailAddress=xxx@x.de
Sun Sep  8 09:42:35 2013 Validating certificate key usage
Sun Sep  8 09:42:35 2013 ++ Certificate has key usage  00a0, expects 00a0
Sun Sep  8 09:42:35 2013 VERIFY KU OK
Sun Sep  8 09:42:35 2013 Validating certificate extended key usage
Sun Sep  8 09:42:35 2013 ++ Certificate has EKU (str) TLS Web Server Authentication, expects TLS Web Server Authentication
Sun Sep  8 09:42:35 2013 VERIFY EKU OK
Sun Sep  8 09:42:35 2013 VERIFY OK: depth=0, C=DE, ST=BW, L=xxxxx, O=Igel-Server, OU=Home, CN=Igel-Server, name=Home, emailAddress=xxx@x.de
Sun Sep  8 09:42:35 2013 Data Channel Encrypt: Cipher 'AES-128-CBC' initialized with 128 bit key
Sun Sep  8 09:42:35 2013 Data Channel Encrypt: Using 160 bit message hash 'SHA1' for HMAC authentication
Sun Sep  8 09:42:35 2013 Data Channel Decrypt: Cipher 'AES-128-CBC' initialized with 128 bit key
Sun Sep  8 09:42:35 2013 Data Channel Decrypt: Using 160 bit message hash 'SHA1' for HMAC authentication
Sun Sep  8 09:42:35 2013 Control Channel: TLSv1, cipher TLSv1/SSLv3 DHE-RSA-AES256-SHA, 1024 bit RSA
Sun Sep  8 09:42:35 2013 [Igel-Server] Peer Connection Initiated with [AF_INET]xx.xx.xxx.54:1194
Sun Sep  8 09:42:37 2013 SENT CONTROL [Igel-Server]: 'PUSH_REQUEST' (status=1)
Sun Sep  8 09:42:37 2013 PUSH: Received control message: 'PUSH_REPLY,dhcp-option DNS 10.8.0.1,redirect-gateway,route 10.8.0.1,route-gateway 10.8.0.1,topology subnet,route 192.168.178.0 255.255.255.0 10.8.0.1,ping 10,ping-restart 120,ifconfig 10.8.0.151 255.255.255.0'
Sun Sep  8 09:42:37 2013 OPTIONS IMPORT: timers and/or timeouts modified
Sun Sep  8 09:42:37 2013 OPTIONS IMPORT: --ifconfig/up options modified
Sun Sep  8 09:42:37 2013 OPTIONS IMPORT: route options modified
Sun Sep  8 09:42:37 2013 OPTIONS IMPORT: route-related options modified
Sun Sep  8 09:42:37 2013 OPTIONS IMPORT: --ip-win32 and/or --dhcp-option options modified
Sun Sep  8 09:42:37 2013 ROUTE_GATEWAY 192.168.178.1/255.255.255.0 IFACE=eth0 HWADDR=00:09:34:2b:e4:d4
Sun Sep  8 09:42:37 2013 TUN/TAP device tun0 opened
Sun Sep  8 09:42:37 2013 TUN/TAP TX queue length set to 100
Sun Sep  8 09:42:37 2013 do_ifconfig, tt->ipv6=0, tt->did_ifconfig_ipv6_setup=0
Sun Sep  8 09:42:37 2013 /sbin/ifconfig tun0 10.8.0.151 netmask 255.255.255.0 mtu 1500 broadcast 10.8.0.255
Sun Sep  8 09:42:37 2013 /sbin/route add -net xx.xx.xxx.54 netmask 255.255.255.255 gw 192.168.178.1
Sun Sep  8 09:42:37 2013 /sbin/route del -net 0.0.0.0 netmask 0.0.0.0
Sun Sep  8 09:42:37 2013 /sbin/route add -net 0.0.0.0 netmask 0.0.0.0 gw 10.8.0.1
Sun Sep  8 09:42:37 2013 /sbin/route add -net 10.8.0.1 netmask 255.255.255.255 gw 10.8.0.1
Sun Sep  8 09:42:37 2013 /sbin/route add -net 192.168.178.0 netmask 255.255.255.0 gw 10.8.0.1
Sun Sep  8 09:42:38 2013 Initialization Sequence Completed
Sun Sep  8 09:43:40 2013 event_wait : Interrupted system call (code=4)
Sun Sep  8 09:43:40 2013 /sbin/route del -net 192.168.178.0 netmask 255.255.255.0
Sun Sep  8 09:43:40 2013 /sbin/route del -net 10.8.0.1 netmask 255.255.255.255
Sun Sep  8 09:43:40 2013 /sbin/route del -net xx.xx.xxx.54 netmask 255.255.255.255
Sun Sep  8 09:43:40 2013 /sbin/route del -net 0.0.0.0 netmask 0.0.0.0
Sun Sep  8 09:43:40 2013 /sbin/route add -net 0.0.0.0 netmask 0.0.0.0 gw 192.168.178.1
Sun Sep  8 09:43:40 2013 Closing TUN/TAP interface
Sun Sep  8 09:43:40 2013 /sbin/ifconfig tun0 0.0.0.0
Sun Sep  8 09:43:40 2013 SIGTERM[hard,] received, process exiting
Hier die openvpn.conf vom Server:

Code: Alles auswählen

#  OpenVPN 2.1 Config, Sun Sep  8 08:45:17 CEST 2013
proto udp
dev tun
ca /tmp/flash/openvpn/ca.crt
cert /tmp/flash/openvpn/box.crt
key /tmp/flash/openvpn/box.key
dh /tmp/flash/openvpn/dh.pem
tls-server
tls-auth /tmp/flash/openvpn/static.key 0
port 1194
push "dhcp-option DNS 10.8.0.1"
push "redirect-gateway"
mode server
ifconfig-pool 10.8.0.150 10.8.0.165
push "route 10.8.0.1"
route 10.8.0.0 255.255.255.0
ifconfig 10.8.0.1 255.255.255.0
push "route-gateway 10.8.0.1"
client-config-dir /clients_openvpn
topology subnet
push "topology subnet"
max-clients  10
push "route 192.168.178.0 255.255.255.0 10.8.0.1"
route 192.168.88.0 255.255.255.0 10.8.0.150
route 192.168.88.1 255.255.255.0 10.8.0.151
tun-mtu 1500
mssfix
verb 3
daemon
cipher AES-128-CBC
comp-lzo
keepalive 10 120
chroot /tmp/openvpn
user openvpn
group openvpn
persist-tun
persist-key
Hier die openvpn.conf vom Client:

Code: Alles auswählen

client
log /tmp/openvpn.log
auth SHA1
comp-lzo
dev tun
proto udp
comp-lzo
pull
persist-key
persist-tun
tun-mtu 1500
remote mein.dyndns.org 1194
ca "/etc/openvpn/ca.crt"
cert "/etc/openvpn/client1.crt"
key "/etc/openvpn/client1.key"
tls-auth "/etc/openvpn/static.key" 1
cipher AES-128-CBC
verb 3
remote-cert-tls server 
nobind
Hier mal das script, dass ich auf der Dreambox ausführe:

Code: Alles auswählen

#!/bin/sh
#
# Downloads, Installs & Reloads the latest Enigma Bouquets. version: 1.1
#
#
# Enigma Version ("enigma1" oder "enigma2").
ENIGMA="enigma2"
# Die SERVERurl auf die Adresse eures Webservers umändern, wo die gepackte Bouquets Datei liegt
SERVERurl="http://mein.dyndns.org"
# Der Port eures Webservers (standard: 80)
SERVERport="1194"
# Das Verzeichnis in dem die Bouquets Datei auf dem Webserver liegt
SERVERdir="astra_e2"
# Benutzername zum Zugriff auf den Webserver (leer lassen falls nicht vorhanden)
USERNAME=""
# Password zum Zugriff auf den Webserver (leer lassen falls nicht vorhanden)
PASSWORD=""
# Datei mit der Zeit des letzten Updates die vom Server geladen wird
ST="time.txt"
# Farbliche Text-Ausgabe verwenden? 0 = Nein , 1 = Ja
COLORED="0"
# Ob VPN benutzt werden 0 = Nein , 1 = Ja
VPN="1"
#
## Ende der Konfiguration
#
#VPN Verbindung wird aufbauen
if [ "$VPN" = 1 ]; then
  echo "VPN Verbindung wird aufgebaut"
     /usr/script/vpn.sh start & sleep 30
  else
    echo ""
  fi
#prepare url
   case $SERVERurl in
    [hH][tT][tT][pP]*|[fF][tT][pP]*)
     URLprot="$(echo $SERVERurl | cut -d ":" -f 1)://"
                    URL=$(echo $SERVERurl | cut -d ":" -f 2 | tr -d "//")
                ;;
                *)
                    URL=$SERVERurl
                ;;
            esac
            if [ ! -z "$USERNAME" ]; then
                if [ -z "$PASSWORD" ]; then
                    _error 1 "Die Script Einstellung USERNAME ist gesetzt aber PASSWORD ist leer!"
                fi
                URL="$USERNAME:$PASSWORD@$URL"
            fi
            [ ! -z "$SERVERport" ] && URL="$URL:$SERVERport"
            [ ! -z "$URLprot" ] && URL=$URLprot$URL


            TEMPdir=/tmp
            WGETsettings="-q"
            FILES2="satellites.xml terrestrial.xml cables.xml timezone.xml"
            [ -z "$COLORED" ] && COLORED=0


#- functions


#aufräumen
            _cleanup() {
                rm -rf $TEMPdir/$ENIGMA
                rm -f $TEMPdir/$ST
                rm -f $TEMPdir/$BQ
            }


#error handling
            _error() {
                if [ $1 -gt 0 ]; then
                    [ -z "$2" ] && message="Es ist ein Fehler aufgetreten" || message=$2
                    if [ "$COLORED" = 1 ]; then
                        echo -e "\033[1;31;40m$message\033[0m"
                        echo -e "\033[1;31;40mAbbruch\033[0m"
                    else
                        echo "$message"
                        echo "Abbruch"
                    fi
#VPN Verbindung wegen eines Fehlers abbauen
                        if [ "$VPN" = 1 ]; then
                        echo "VPN Verbindung wird wegen eines Fehlers abgebaut"
                        /usr/script/vpn.sh stop
                        else
                        echo ""
                        fi
                    exit 1
                fi
            }


#downloaden von time.txt
            downtimetxt() {
            sleep 15
#Downloaden von time.txt vom Server
                wget $WGETsettings $URL/$SERVERdir/$ST
                _error $? "Es ist ein Fehler aufgetreten (download $ST)"
#prüfen ob download erfolgreich
                if [ ! -f "$TEMPdir/$ST" ]; then
                    _error 1 "Es ist ein Fehler aufgetreten (download $ST)"


                fi
                
#Speichern des Inhalts von time.txt in einer Variablen
                timen=$(cat $TEMPdir/$ST | head -n1 | tail -n1)
                _error $? "Es ist ein Fehler aufgetreten (auslesen von $TEMPdir/$ST)"
            }


#Speichern der time.txt-variable in timelu.txt
            savetimetxt() {
                echo "$timen" > /etc/timelu.txt
            }


#download and install Bouquets
            downinstBQ() {
                TYPE=$1


#Download der Senderliste vom Server
                wget $WGETsettings $URL/$SERVERdir/$BQ
                _error $? "Es ist ein Fehler aufgetreten (download $BQ)"


#prüfen ob download erfolgreich
                if [ ! -f "$TEMPdir/$BQ" ]; then
                    _error 1 "Es ist ein Fehler aufgetreten ($BQ wurde nicht heruntergeladen)"
                fi


#Entpacken
                tar -zxf $BQ
                _error $? "Es ist ein Fehler aufgetreten (entpacken $BQ)"


                if [ "$ENIGMA" = "enigma2" ]; then
                    PakValidated=0
                    for file in $FILES2; do
                        if [ -f "$TEMPdir/$ENIGMA/$file" ]; then
                            mv -f $TEMPdir/$ENIGMA/$file /etc/tuxbox/
                            PakValidated=1
                        fi
                    done
#prüfen ob der inhalt des enigma2 archives korrekt ist
                    [ $PakValidated = 0 ] && _error 1 "Das Archive $BQ entspricht nicht den Anforderungen!"


                    cd /etc/$ENIGMA
                    rm -f *.tv
                    rm -f *.radio
                    rm -f blacklist
                    rm -f lamedb
                    mv -f $TEMPdir/$ENIGMA/* /etc/$ENIGMA/
                    _error $? "Es ist ein Fehler aufgetreten (verschieben $TEMPdir/$ENIGMA/* nach /etc/$ENIGMA/)"


                    _cleanup


#Speichern der time.txt in timelu.txt
                    savetimetxt


                    echo "Lade Senderliste neu"
                    RELOAD1=$(wget -qO - http://127.0.0.1/web/servicelistreload?mode=1)
                    RELOAD2=$(wget -qO - http://127.0.0.1/web/servicelistreload?mode=2)
                    echo $RELOAD1 | grep statetext | cut -d ">" -f 2 | cut -d "<" -f 1
                    echo $RELOAD2 | grep statetext | cut -d ">" -f 2 | cut -d "<" -f 1
                    echo " "
                    if [ "$COLORED" = 1 ]; then
                        echo -e "\033[1;32;40mBouquets $TYPE erfolgreich abgeschlossen\033[0m"
                    else
                        echo "Bouquets $TYPE erfolgreich abgeschlossen"
                        
                    fi
                    echo "Starte Receiver neu um Bouquets $TYPE wirksam zu machen"
                    sleep 5
#VPN Verbindung wird beendet
                        if [ "$VPN" = 1 ]; then
                        /usr/script/vpn.sh stop
                        else
                        echo ""
                        fi
                    wget -O /dev/null -q http://127.0.0.1/web/powerstate?newstate=2
                else
                    cd /var/tuxbox/config/enigma/
                    rm -f *.tv
                    rm -f *.radio
                    rm -f *.epl
                    rm -f bouquets
                    rm -f services
                    rm -f services.locked
                    mv -f /tmp/$ENIGMA/* /var/tuxbox/config/enigma/
                    _error $? "Es ist ein Fehler aufgetreten (verschieben $TEMPdir/$ENIGMA/* nach /var/tuxbox/config/enigma/)"
                    _cleanup


#Speichern der time.txt in timelu.txt
                    savetimetxt
                    
                    echo "Lade Senderliste neu"
                    RELOAD1=$(wget -qO - http://127.0.0.1/web/servicelistreload?mode=1)
                    RELOAD2=$(wget -qO - http://127.0.0.1/web/servicelistreload?mode=2)
                    echo $RELOAD1 | grep statetext | cut -d ">" -f 2 | cut -d "<" -f 1
                    echo $RELOAD2 | grep statetext | cut -d ">" -f 2 | cut -d "<" -f 1
                    echo " "
                    if [ "$COLORED" = 1 ]; then
                        echo -e "\033[1;32;40mBouquets $TYPE erfolgreich abgeschlossen\033[0m"
                    else
                        echo "Bouquets $TYPE erfolgreich abgeschlossen" 
                    fi
                    echo "Starte Receiver neu um Bouquets $TYPE wirksam zu machen"
                    sleep 5
#VPN Verbindung wird beendet
                        if [ "$VPN" = 1 ]; then
                        /usr/script/vpn.sh stop
                        else
                        echo ""
                        fi
                    wget -O /dev/null -q http://127.0.0.1/web/powerstate?newstate=2
                fi
            }


#- main code


#falls ENIGMA leer -> versuche ENIGMA version zu ermitteln
            if [ -z "$ENIGMA" ]; then
                [ -d "/etc/enigma2/" ] && ENIGMA="enigma2"
                [ -d "/var/tuxbox/config/enigma/" ] && ENIGMA="enigma1"
                if [ -z "$ENIGMA" ]; then
                    _error 1 "Kann die ENIGMA Version nicht ermitteln! Bitte manuell im Script festlegen!"
                fi
            else
# prüfe gültige ENIGMA einstellung
                if [ "$ENIGMA" != "enigma1" ] && [ "$ENIGMA" != "enigma2" ]; then
                    _error 1 "Die Script Einstellung ENIGMA ist fehlerhaft!\n Gueltige Einstellung: ENIGMA=\"enigma1\" oder ENIGMA=\"enigma2\""
                fi
            fi


# Name der gepackten Bouquets Datei
            BQ="${ENIGMA}.tar.gz"


            echo "Pruefe ob ein Update der Bouquets noetig ist.."
            cd $TEMPdir


#prüfen ob das script schon mal genutzt wurde und /etc/timelu.txt überhaupt vorhanden ist
            if [ -f "/etc/timelu.txt" ]; then
#Speichern des Inhalts von timelu.txt in einer Variablen
                timelu=$(cat /etc/timelu.txt | head -n1 | tail -n1)
                _error $? "Es ist ein Fehler aufgetreten (auslesen von /etc/timelu.txt)"


#vor dem downloaden sicherstellen das die datei nicht vorhanden ist
                _cleanup


#Downloaden von time.txt vom Server
                downtimetxt


#Vergleich: Ist timelu kleiner als timen?
                if [ $timelu -lt $timen ]; then
                    echo "Update vom $(date -d @$timen +"%d.%m.%Y um %H:%M") vorhanden.. Starte Update"
                    echo " "
#download and update bouquets
                    downinstBQ Update
                else
#Timen ist kleiner oder gleich groß wie timelu
                    echo "Senderliste aktuell. Kein Update noetig"
#VPN Verbindung wird beendet
                        if [ "$VPN" = 1 ]; then
                        echo "VPN Verbindung wird beendet"
                        /usr/script/vpn.sh stop
                        else
                        echo ""
                        fi
                fi
            else
#vor dem downloaden sicherstellen das die datei nicht vorhanden ist
                _cleanup


#Downloaden von time.txt vom Server
                downtimetxt
                
#download and install bouquets
                echo "Starte Bouquets Install"
                echo " "
                downinstBQ Install
            fi


            exit 0

Ich denke laut log dass die Verbindung schon zustandekommt, dann aber abbricht. Ich muss mich dann auch mit DCC neu Verbinden.

Könnte es sein, dass es ein Problem ist daß ich auf dem Igel nur anmeldung per auth-key erlaube, ich hatte mir damals mit puyttygen eine "Putty key.ppk" erzeugen lassen, auf die ich in z.B Winscp verweise. Wie müsste ich das script umschreiben dass es klappt.?

Kann sich das mal jemand anschauen?

Danke

Grüße Rooki

syssi
Beiträge: 2951
Registriert: 24.12.2010 16:50:59
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: Rheinland

Re: Igel-Server dreambox openvpn

Beitrag von syssi » 09.09.2013 11:00:50

Die entscheidende Zeile in deinem Log ist folgende:

Code: Alles auswählen

event_wait : Interrupted system call (code=4)
Sie ist leider nicht sehr aussagekraeftig aber man findet immerhin bei Google so manchen Treffer.

Gruss syssi

rooki
Beiträge: 76
Registriert: 10.07.2013 07:13:19

Re: Igel-Server dreambox openvpn

Beitrag von rooki » 09.09.2013 12:50:50

Hi,

ich könnte mir vorstellen dass die Fehlermeldung über das ausführende script verursacht wird. Und zwar bei der Anmeldung auf meinen Igel-Server. Da ich diesen so konfiguriert habe, dass man sich nur mit puplik.key anmelden kann. Wenn die Anmeldung nicht klappt, wird die VPN-Verbindung wieder gekappt.(das könnte der Fehler sein). In dem script wird aber ausschliesslich USER und PASS angeboten.
Hier nochmal ein Auszu aus dem script:

Code: Alles auswählen

# Benutzername zum Zugriff auf den Webserver (leer lassen falls nicht vorhanden)
USERNAME=""
# Password zum Zugriff auf den Webserver (leer lassen falls nicht vorhanden)
PASSWORD=""
# Datei mit der Zeit des letzten Updates die vom Server geladen wird
ST="time.txt"
# Farbliche Text-Ausgabe verwenden? 0 = Nein , 1 = Ja
COLORED="0"
# Ob VPN benutzt werden 0 = Nein , 1 = Ja
VPN="1"
#
## Ende der Konfiguration
#
#VPN Verbindung wird aufbauen
if [ "$VPN" = 1 ]; then
  echo "VPN Verbindung wird aufgebaut"
     /usr/script/vpn.sh start & sleep 30
  else
    echo ""
  fi
#prepare url
   case $SERVERurl in
    [hH][tT][tT][pP]*|[fF][tT][pP]*)
     URLprot="$(echo $SERVERurl | cut -d ":" -f 1)://"
                    URL=$(echo $SERVERurl | cut -d ":" -f 2 | tr -d "//")
                ;;
                *)
                    URL=$SERVERurl
                ;;
            esac
            if [ ! -z "$USERNAME" ]; then
                if [ -z "$PASSWORD" ]; then
                    _error 1 "Die Script Einstellung USERNAME ist gesetzt aber PASSWORD ist leer!"
                fi
                URL="$USERNAME:$PASSWORD@$URL"
            fi
            [ ! -z "$SERVERport" ] && URL="$URL:$SERVERport"
            [ ! -z "$URLprot" ] && URL=$URLprot$URL
Könnte man hier nich noch einen Verweis einfügen wo der public.key liegt. Wie müsste sowas aussehen? SSH-KEY=/etc/openvpn/key putty.ppk ??

In meinem script wird ja hier (Auszug)

Code: Alles auswählen

#VPN Verbindung wird aufbauen
if [ "$VPN" = 1 ]; then
  echo "VPN Verbindung wird aufgebaut"
     /usr/script/vpn.sh start & sleep 30
  else
    echo ""
  fi
#prepare url
   case $SERVERurl in
    [hH][tT][tT][pP]*|[fF][tT][pP]*)
     URLprot="$(echo $SERVERurl | cut -d ":" -f 1)://"
                    URL=$(echo $SERVERurl | cut -d ":" -f 2 | tr -d "//")
die VPN-Verbindung aufgebaut, das script werde ich heute abend mal alleine starten, wenn die Verbindung zustande kommt, sollte meine Theorie stimmen.

Gruß Rooki

syssi
Beiträge: 2951
Registriert: 24.12.2010 16:50:59
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: Rheinland

Re: Igel-Server dreambox openvpn

Beitrag von syssi » 09.09.2013 13:32:44

Du kannst den Kopf des Skript anpassen:

Code: Alles auswählen

#!/bin/sh -x
Wenn du das Skript im Anschluss ausfuehrst, dann startest es sehr gespraechig und du kannst moeglicherweise nachvollziehen, wo es scheitert.

rooki
Beiträge: 76
Registriert: 10.07.2013 07:13:19

Re: Igel-Server dreambox openvpn

Beitrag von rooki » 10.09.2013 06:51:25

Hi,

nach weiteren Versuchen mit der openvpn-Verbindung ist mir jetzt folgendes aufgefallen: Die Verbindung kommt zustande, meine Dreambox erhält die In der Server.conf ausgewählten IP-Einstellungen. Aber genau das ist auch das Problem. Ich habe dann natürlich keine Verbindung mehr nach aussen. Wenn meine internen Einstellungen sind: Fritz 192.168.178.1 Dream 192.168.178.10 und ich das script get_bq.sh starte wird ein zweites Internet-Interface angelegt in dem die Einstellungen Server 10.8.01 und Box 10.8.0.151 gesetzt werden. Somit säge ich mir natürlich den eigenen Ast ab.

Gruß Rooki

syssi
Beiträge: 2951
Registriert: 24.12.2010 16:50:59
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: Rheinland

Re: Igel-Server dreambox openvpn

Beitrag von syssi » 10.09.2013 10:48:07

Du kannst in der VPN-Konfiguration definieren, dass du durch den Tunnel nur das VPN-Subnet routen moechtest und nicht saemtlichen Traffic. Ich denke das sollte deinem Anwendungsfall entsprechen.

rooki
Beiträge: 76
Registriert: 10.07.2013 07:13:19

Re: Igel-Server dreambox openvpn

Beitrag von rooki » 10.09.2013 20:25:44

Hi,
bin jetzt kurz vor dem Ziel. Allein der zugriff auf meinen Igel klappt nicht weil ich ihn so konfiguriert habe dass eine Anmeldung nur mit ssh und einer key.ppk möglich ist.

kann man in dieses script (Auszug) irgendwie einbinden das mein key.ppk abgefragt wird. Liegt auf /etc/openvpn/key.ppk

Code: Alles auswählen

#!/bin/sh
#
# Downloads, Installs & Reloads the latest Enigma Bouquets. version: 1.1
#
#
# Enigma Version ("enigma1" oder "enigma2").
ENIGMA="enigma2"
# Die SERVERurl auf die Adresse eures Webservers umändern, wo die gepackte Bouquets Datei liegt
SERVERurl=""ftp://192.168.178.3""
# Der Port eures Webservers (standard: 80)
SERVERport="22"
# Das Verzeichnis in dem die Bouquets Datei auf dem Webserver liegt
SERVERdir="astra_e2"
# Benutzername zum Zugriff auf den Webserver (leer lassen falls nicht vorhanden)
USERNAME=""
# Password zum Zugriff auf den Webserver (leer lassen falls nicht vorhanden)
PASSWORD=""
# Datei mit der Zeit des letzten Updates die vom Server geladen wird
ST="time.txt"
# Farbliche Text-Ausgabe verwenden? 0 = Nein , 1 = Ja
COLORED="0"
# Ob VPN benutzt werden 0 = Nein , 1 = Ja
VPN="1"
#
## Ende der Konfiguration
#
#VPN Verbindung wird aufbauen
if [ "$VPN" = 1 ]; then
  echo "VPN Verbindung wird aufgebaut"
     /usr/script/vpn.sh start & sleep 30
  else
    echo ""
  fi
#prepare url
   case $SERVERurl in
    [hH][tT][tT][pP]*|[fF][tT][pP]*)
     URLprot="$(echo $SERVERurl | cut -d ":" -f 1)://"
                    URL=$(echo $SERVERurl | cut -d ":" -f 2 | tr -d "//")
                ;;
                *)
                    URL=$SERVERurl
                ;;
            esac
            if [ ! -z "$USERNAME" ]; then
                if [ -z "$PASSWORD" ]; then
                    _error 1 "Die Script Einstellung USERNAME ist gesetzt aber PASSWORD ist leer!"
                fi
                URL="$USERNAME:$PASSWORD@$URL"

syssi
Beiträge: 2951
Registriert: 24.12.2010 16:50:59
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: Rheinland

Re: Igel-Server dreambox openvpn

Beitrag von syssi » 11.09.2013 13:32:31

Schau mal in diesen Skript: /usr/script/vpn.sh

rooki
Beiträge: 76
Registriert: 10.07.2013 07:13:19

Re: Igel-Server dreambox openvpn

Beitrag von rooki » 11.09.2013 17:12:15

Hi,

hier das script:

Code: Alles auswählen

#!/bin/sh -x


PIDFILE=/tmp/openvpn-fh.pid
CONFIG=VPN-freetz.ovpn
 
if [ "$1" != 'start' ] && [ "$1" != 'stop' ]; then
        echo "usage: $0 {start|stop}"
        exit 1
fi
 
if [ $(id -u) -ne 0 ]; then
        exec sudo $0 $1
        exit 1
fi
 
vpnrunning() {
        if [ ! -f $PIDFILE ]; then
                return 1
        else
                pid=$(cat $PIDFILE)
                if kill -0 $pid 2>/dev/null ; then
                        return 0
                else
                        return 1
                fi
        fi
}
 
case $1 in
        start)
                if vpnrunning; then
                        echo "openvpn already running" >&2
                else
                        exec openvpn --cd /etc/openvpn --config $CONFIG --daemon VPN-freetz --writepid $PIDFILE
                fi
                ;;
 
        stop)
                if vpnrunning; then
                        exec kill $(cat $PIDFILE)
                else
                        echo "openvpn is not running" >&2
                fi
                ;;
esac

syssi
Beiträge: 2951
Registriert: 24.12.2010 16:50:59
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: Rheinland

Re: Igel-Server dreambox openvpn

Beitrag von syssi » 11.09.2013 17:56:22

Kannst du erklaeren, was du mit "Anmeldung nur per SSH & PPK" moeglich meinst? Fuer mich bedeutet das, dass du einen SSH-Server nutzt und Public-Key Authentification aktiviert hast. Das hat jedoch reichlich wenig mit OpenVPN zu tun. Ausserdem wundert es mich, wieso dein Key dann im OpenVPN-Ordner liegt. Solltest du einen VPN-Server betreiben und dich mit Hilfe von Zertifikaten authentifizieren, dann koenntest du folgende Zeile anpassen:

Code: Alles auswählen

exec openvpn --cd /etc/openvpn --config $CONFIG --daemon VPN-freetz --writepid $PIDFILE
Bzw. das Config-File entsprechend veraendern.

Gruss syssi

rooki
Beiträge: 76
Registriert: 10.07.2013 07:13:19

Re: Igel-Server dreambox openvpn

Beitrag von rooki » 12.09.2013 07:16:27

Hi,
der openvpn-server läuft auf meiner Fritzbox, die Verbindung dahin funktioniert mittlerweile auch. Wenn diese Verbindung steht, bin ich mit meinem Client von aussen quasi im LAN zuhause. Die Verbindung mit puplik key soll dann auf meinen IGEL hergestellt werden. Dazu verwende ich z.B mit dem Handy eine .ppk die ich mit puttykey generiert habe, das funktioniert einwandfrei. Mir ist nur nicht klar wie ich das script dahingehend umschreiben muss, dass eine Anmeldung am IGEL nicht mit USER und PASSWORD gemacht wird, sondern mit SFTP. So ist es auf meinem Handy bei z.B. andFTP eingestellt. Ich habe auch von aussen nur die interne IP eingestellt, Port 22, bei SSH-Schlüssel verweise ich dann auf /storage/extSDCard/mein.key. Das funktioniert natürlich nur bei bestehender openvpn-Verbindung, aber das haut ja mittlerweile hin, das sollte doch mit einer Dreambox auch gehen.

Gruß Rooki

syssi
Beiträge: 2951
Registriert: 24.12.2010 16:50:59
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: Rheinland

Re: Igel-Server dreambox openvpn

Beitrag von syssi » 12.09.2013 11:09:13

Okay - kapiert. Wenn man sich das erste grosse Skript ansieht, dann findet man folgende Aktionen:
  • VPN-Verbindung aufbauen
  • Download (per HTTP = wget) diverser Dateien
  • Verteilen und Enigma neu starten
Die wget-Zeilen" muesstest du anpacken und gegen "scp"-Zeilen ersetzen. Auf meiner Dreambox gibt es ein scp-Binary, welches folgende Parameter versteht:

Code: Alles auswählen

root@dm7020:~> scp
usage: scp [-1246BCpqrv] [-c cipher] [-F ssh_config] [-i identity_file]
           [-l limit] [-o ssh_option] [-P port] [-S program]
           [[user@]host1:]file1 [...] [[user@]host2:]file2
Sowas sollte also gehen:

Code: Alles auswählen

# wget $WGETsettings $URL/$SERVERdir/$ST
scp -i /etc/openvpn/key putty.ppk hostname:/pfad/$ST $TEMPdir/$ST
Dabei nutzt scp dann auch deinen Key und kopiert eine Datei von a nach b.

Gruss syssi

rooki
Beiträge: 76
Registriert: 10.07.2013 07:13:19

Re: Igel-Server dreambox openvpn

Beitrag von rooki » 12.09.2013 12:37:36

Hi sissy,

vielen Dank schon mal für den Ansatz. Habe ich das jetzt richtig verstanden --> Im script oben (Konfiguration) trage ich ein:

Code: Alles auswählen

#!/bin/sh
#
# Downloads, Installs & Reloads the latest Enigma Bouquets. version: 1.1
#
#
# Enigma Version ("enigma1" oder "enigma2").
ENIGMA="enigma2"
# Die SERVERurl auf die Adresse eures Webservers umändern, wo die gepackte Bouquets Datei liegt
SERVERurl="sftp://192.168.178.5"
# Der Port eures Webservers (standard: 80)
SERVERport="22"
# Das Verzeichnis in dem die Bouquets Datei auf dem Webserver liegt
SERVERdir="astra_e2"
# Benutzername zum Zugriff auf den Webserver (leer lassen falls nicht vorhanden)
USERNAME=""
# Password zum Zugriff auf den Webserver (leer lassen falls nicht vorhanden)
PASSWORD=""
# Datei mit der Zeit des letzten Updates die vom Server geladen wird
ST="time.txt"
# Farbliche Text-Ausgabe verwenden? 0 = Nein , 1 = Ja
COLORED="0"
# Ob VPN benutzt werden 0 = Nein , 1 = Ja
VPN="1"
#
## Ende der Konfiguration
also per sftp und Pass user lasse ich leer.

Dann abändern der Zeilen wget $WGETsettings $URL/$SERVERdir/$ST in scp -i /etc/openvpn/key putty.ppk 192.168.178.5:/pfad/$ST $TEMPdir/$ST

Aber was mach ich mit:

Code: Alles auswählen

echo "Lade Senderliste neu"
                    RELOAD1=$(wget -qO - http://127.0.0.1/web/servicelistreload?mode=1)
                    RELOAD2=$(wget -qO - http://127.0.0.1/web/servicelistreload?mode=2)
und

Code: Alles auswählen

wget -O /dev/null -q http://127.0.0.1/web/powerstate?newstate=2
und

Code: Alles auswählen

TEMPdir=/tmp
            WGETsettings="-q"
            FILES2="satellites.xml terrestrial.xml cables.xml timezone.xml"
Danke schonmal für Deine Hilfe

Grüße Rooki

syssi
Beiträge: 2951
Registriert: 24.12.2010 16:50:59
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: Rheinland

Re: Igel-Server dreambox openvpn

Beitrag von syssi » 12.09.2013 13:54:11

Erstmal solltest du verstehen, dass es sich bei "SERVERurl" um eine Variable handelt. Such nach dem Vorkommen von "$SERVERurl" in deinem Skript, dann siehst du, wo diese Variable ueberall verwendet wird. Soviel ich weiss versteht das Tool "scp" den Parameter "scp sftp://192.168.178.5" nicht. Ausserdem verwende ich in meiner Zeile die Variable $SERVERurl nicht.

Folgende Stellen wirst du anpassen muessen:

Code: Alles auswählen

...
#Downloaden von time.txt vom Server
wget $WGETsettings $URL/$SERVERdir/$ST
...
#Download der Senderliste vom Server
wget $WGETsettings $URL/$SERVERdir/$BQ
....
Diese Stellen musst du nicht anpassen, da kein Download einer externen Datei eingeleitet wird, sondern die Web-Oberflaeche der Dreambox kontaktiert wird und funktionen ausgefuehrt:

Code: Alles auswählen

...
RELOAD1=$(wget -qO - http://127.0.0.1/web/servicelistreload?mode=1)
RELOAD2=$(wget -qO - http://127.0.0.1/web/servicelistreload?mode=2)
...
wget -O /dev/null -q http://127.0.0.1/web/powerstate?newstate=2
...
RELOAD1=$(wget -qO - http://127.0.0.1/web/servicelistreload?mode=1)
RELOAD2=$(wget -qO - http://127.0.0.1/web/servicelistreload?mode=2)
...
wget -O /dev/null -q http://127.0.0.1/web/powerstate?newstate=2
Setzt man die Werte der Variable ein so fuehrt das Skript folgenden Befehl aus:

Code: Alles auswählen

# wget $WGETsettings $URL/$SERVERdir/$ST
wget -q http://mein.dyndns.org/astra_e2/time.txt
...
# wget $WGETsettings $URL/$SERVERdir/$BQ
wget -q http://mein.dyndns.org/astra_e2/enigma2.tar.gz
Das Skript geht also davon aus, dass du einen Webserver unter mein.dyndns.org betreibst. Mit einem Ordner namens "astra_e2", in welchem zwei Dateien liegen. Diese beiden Dateien musst du ebenfalls auf deinem Server anbieten. Abholen musst du sie nicht per HTTP (wget), sondern kannst auch "scp" nutzen. Nun ersetzt du also die entsprechende Zeile mit einem äquivalenten scp-Aufruf:

Code: Alles auswählen

# wget $WGETsettings $URL/$SERVERdir/$ST
scp -i /etc/openvpn/keyputty.ppk hostname:/pfad/$ST $TEMPdir/$ST
# wget $WGETsettings $URL/$SERVERdir/$BQ
scp -i /etc/openvpn/keyputty.ppk hostname:/pfad/$BQ $TEMPdir/$BQ
Du koenntest auch "hostname" und "pfad" wieder durch die bisherigen Variablen ersetzen und entsprechend anpassen. Dabei solltest du aber Sorge tragen, dass du damit keine anderen Stellen im Code zerstoerst. Am Anfang des Skripts wird beispielsweise die SERVERurl zerpflueckt, um ein "http://" zu finden... ich habe die Stelle deshalb hardcodiert. Du wirst dort vermutlich einsetzen:

Code: Alles auswählen

scp -i /etc/openvpn/keyputty.ppk username@192.168.178.5:/pfad/$BQ $TEMPdir/$BQ

rooki
Beiträge: 76
Registriert: 10.07.2013 07:13:19

Re: Igel-Server dreambox openvpn

Beitrag von rooki » 12.09.2013 14:06:31

Hy syssi,

vielen Dank dafür, werde ich heute abend ausprobieren und wieder berichten.

Gruß Rooki

rooki
Beiträge: 76
Registriert: 10.07.2013 07:13:19

Re: Igel-Server dreambox openvpn

Beitrag von rooki » 12.09.2013 17:18:06

Hi,

also irgendwie bekomm ich es gar nicht hin, bekomme Fehler wie usr/bin/dbclient: exieted: string too long

Ich habe alle möglichen Varianten im script ausprobiert, komme aber nicht weiter. Hier mal das aktuelle script:

Code: Alles auswählen

#!/bin/sh -x
#
# Downloads, Installs & Reloads the latest Enigma Bouquets. version: 1.1
#
#
# Enigma Version ("enigma1" oder "enigma2").
ENIGMA="enigma2"
scp -i /etc/openvpn/keyputty.ppk root@192.168.178.18:/media/daten/www/settings/astra_e2/$BQ $TEMPdir/$BQ
# Die SERVERurl auf die Adresse eures Webservers umändern, wo die gepackte Bouquets Datei liegt
#SERVERurl="ftp://192.168.178.18"
# Der Port eures Webservers (standard: 80)
SERVERport="22"
# Das Verzeichnis in dem die Bouquets Datei auf dem Webserver liegt
SERVERdir="astra_e2"
# Benutzername zum Zugriff auf den Webserver (leer lassen falls nicht vorhanden)
USERNAME=""
# Password zum Zugriff auf den Webserver (leer lassen falls nicht vorhanden)
PASSWORD=""
# Datei mit der Zeit des letzten Updates die vom Server geladen wird
ST="time.txt"
# Farbliche Text-Ausgabe verwenden? 0 = Nein , 1 = Ja
COLORED="0"
# Ob VPN benutzt werden 0 = Nein , 1 = Ja
VPN="1"
#
## Ende der Konfiguration
#
#VPN Verbindung wird aufbauen
if [ "$VPN" = 1 ]; then
  echo "VPN Verbindung wird aufgebaut"
     /usr/script/vpn.sh start & sleep 30
  else
    echo ""
  fi
#prepare url
   case $scp -i /etc/openvpn/keyputty.ppk root@192.168.178.18:/media/daten/www/settings/astra_e2/$BQ $TEMPdir/$BQ in
    [hH][tT][tT][pP]*|[fF][tT][pP]*)
     URLprot="$(echo $scp -i /etc/openvpn/keyputty.ppk root@192.168.178.18:/media/daten/www/settings/astra_e2/$BQ $TEMPdir/$BQ | cut -d ":" -f 1)://"
                    URL=$(echo $scp -i /etc/openvpn/keyputty.ppk root@192.168.178.18:/media/daten/www/settings/astra_e2/$BQ $TEMPdir/$BQ | cut -d ":" -f 2 | tr -d "//")
                ;;
                *)
                    URL=$scp -i /etc/openvpn/keyputty.ppk root@192.168.178.18:/media/daten/www/settings/astra_e2/$BQ $TEMPdir/$BQ
                ;;
            esac
             if [ ! -z "$USERNAME" ]; then
                if [ -z "$PASSWORD" ]; then
                    _error 1 "Die Script Einstellung USERNAME ist gesetzt aber PASSWORD ist leer!"
                fi
                URL="$USERNAME:$PASSWORD@$URL"
            fi
            [ ! -z "$SERVERport" ] && URL="$URL:$SERVERport"
            [ ! -z "$URLprot" ] && URL=$URLprot$URL


            TEMPdir=/tmp
            WGETsettings="-q"
            FILES2="satellites.xml terrestrial.xml cables.xml timezone.xml"
            [ -z "$COLORED" ] && COLORED=0


#- functions


#aufräumen
            _cleanup() {
                rm -rf $TEMPdir/$ENIGMA
                rm -f $TEMPdir/$ST
                rm -f $TEMPdir/$BQ
            }


#error handling
            _error() {
                if [ $1 -gt 0 ]; then
                    [ -z "$2" ] && message="Es ist ein Fehler aufgetreten" || message=$2
                    if [ "$COLORED" = 1 ]; then
                        echo -e "\033[1;31;40m$message\033[0m"
                        echo -e "\033[1;31;40mAbbruch\033[0m"
                    else
                        echo "$message"
                        echo "Abbruch"
                    fi
#VPN Verbindung wegen eines Fehlers abbauen
                        if [ "$VPN" = 1 ]; then
                        echo "VPN Verbindung wird wegen eines Fehlers abgebaut"
                        /usr/script/vpn.sh stop
                        else
                        echo ""
                        fi
                    exit 1
                fi
            }


#downloaden von time.txt
            downtimetxt() {
            sleep 15
#Downloaden von time.txt vom Server
                #wget $WGETsettings $URL/$SERVERdir/$ST
				/etc/openvpn/Key putty.ppk root@192.168.178.18:/media/daten/www/settings/astra_e2/$ST $TEMPdir/$ST
                _error $? "Es ist ein Fehler aufgetreten (download $ST)"
#prüfen ob download erfolgreich
                if [ ! -f "$TEMPdir/$ST" ]; then
                    _error 1 "Es ist ein Fehler aufgetreten (download $ST)"


                fi
                
#Speichern des Inhalts von time.txt in einer Variablen
                timen=$(cat $TEMPdir/$ST | head -n1 | tail -n1)
                _error $? "Es ist ein Fehler aufgetreten (auslesen von $TEMPdir/$ST)"
            }


#Speichern der time.txt-variable in timelu.txt
            savetimetxt() {
                echo "$timen" > /etc/timelu.txt
            }


#download and install Bouquets
            downinstBQ() {
                TYPE=$1


#Download der Senderliste vom Server
                #wget $WGETsettings $URL/$SERVERdir/$BQ
				/etc/openvpn/Key putty.ppk root@192.168.178.18:/media/daten/www/settings/astra_e2/$BQ $TEMPdir/$BQ
                _error $? "Es ist ein Fehler aufgetreten (download $BQ)"


#prüfen ob download erfolgreich
                if [ ! -f "$TEMPdir/$BQ" ]; then
                    _error 1 "Es ist ein Fehler aufgetreten ($BQ wurde nicht heruntergeladen)"
                fi


#Entpacken
                tar -zxf $BQ
                _error $? "Es ist ein Fehler aufgetreten (entpacken $BQ)"


                if [ "$ENIGMA" = "enigma2" ]; then
                    PakValidated=0
                    for file in $FILES2; do
                        if [ -f "$TEMPdir/$ENIGMA/$file" ]; then
                            mv -f $TEMPdir/$ENIGMA/$file /etc/tuxbox/
                            PakValidated=1
                        fi
                    done
#prüfen ob der inhalt des enigma2 archives korrekt ist
                    [ $PakValidated = 0 ] && _error 1 "Das Archive $BQ entspricht nicht den Anforderungen!"


                    cd /etc/$ENIGMA
                    rm -f *.tv
                    rm -f *.radio
                    rm -f blacklist
                    rm -f lamedb
                    mv -f $TEMPdir/$ENIGMA/* /etc/$ENIGMA/
                    _error $? "Es ist ein Fehler aufgetreten (verschieben $TEMPdir/$ENIGMA/* nach /etc/$ENIGMA/)"


                    _cleanup


#Speichern der time.txt in timelu.txt
                    savetimetxt


                    echo "Lade Senderliste neu"
                    RELOAD1=$(wget -qO - http://127.0.0.1/web/servicelistreload?mode=1)
                    RELOAD2=$(wget -qO - http://127.0.0.1/web/servicelistreload?mode=2)
                    echo $RELOAD1 | grep statetext | cut -d ">" -f 2 | cut -d "<" -f 1
                    echo $RELOAD2 | grep statetext | cut -d ">" -f 2 | cut -d "<" -f 1
                    echo " "
                    if [ "$COLORED" = 1 ]; then
                        echo -e "\033[1;32;40mBouquets $TYPE erfolgreich abgeschlossen\033[0m"
                    else
                        echo "Bouquets $TYPE erfolgreich abgeschlossen"
                        
                    fi
                    echo "Starte Receiver neu um Bouquets $TYPE wirksam zu machen"
                    sleep 5
#VPN Verbindung wird beendet
                        if [ "$VPN" = 1 ]; then
                        /usr/script/vpn.sh stop
                        else
                        echo ""
                        fi
                    wget -O /dev/null -q http://127.0.0.1/web/powerstate?newstate=2
                else
                    cd /var/tuxbox/config/enigma/
                    rm -f *.tv
                    rm -f *.radio
                    rm -f *.epl
                    rm -f bouquets
                    rm -f services
                    rm -f services.locked
                    mv -f /tmp/$ENIGMA/* /var/tuxbox/config/enigma/
                    _error $? "Es ist ein Fehler aufgetreten (verschieben $TEMPdir/$ENIGMA/* nach /var/tuxbox/config/enigma/)"
                    _cleanup


#Speichern der time.txt in timelu.txt
                    savetimetxt
                    
                    echo "Lade Senderliste neu"
                    RELOAD1=$(wget -qO - http://127.0.0.1/web/servicelistreload?mode=1)
                    RELOAD2=$(wget -qO - http://127.0.0.1/web/servicelistreload?mode=2)
                    echo $RELOAD1 | grep statetext | cut -d ">" -f 2 | cut -d "<" -f 1
                    echo $RELOAD2 | grep statetext | cut -d ">" -f 2 | cut -d "<" -f 1
                    echo " "
                    if [ "$COLORED" = 1 ]; then
                        echo -e "\033[1;32;40mBouquets $TYPE erfolgreich abgeschlossen\033[0m"
                    else
                        echo "Bouquets $TYPE erfolgreich abgeschlossen" 
                    fi
                    echo "Starte Receiver neu um Bouquets $TYPE wirksam zu machen"
                    sleep 5
#VPN Verbindung wird beendet
                        if [ "$VPN" = 1 ]; then
                        /usr/script/vpn.sh stop
                        else
                        echo ""
                        fi
                    wget -O /dev/null -q http://127.0.0.1/web/powerstate?newstate=2
                fi
            }


#- main code


#falls ENIGMA leer -> versuche ENIGMA version zu ermitteln
            if [ -z "$ENIGMA" ]; then
                [ -d "/etc/enigma2/" ] && ENIGMA="enigma2"
                [ -d "/var/tuxbox/config/enigma/" ] && ENIGMA="enigma1"
                if [ -z "$ENIGMA" ]; then
                    _error 1 "Kann die ENIGMA Version nicht ermitteln! Bitte manuell im Script festlegen!"
                fi
            else
# prüfe gültige ENIGMA einstellung
                if [ "$ENIGMA" != "enigma1" ] && [ "$ENIGMA" != "enigma2" ]; then
                    _error 1 "Die Script Einstellung ENIGMA ist fehlerhaft!\n Gueltige Einstellung: ENIGMA=\"enigma1\" oder ENIGMA=\"enigma2\""
                fi
            fi


# Name der gepackten Bouquets Datei
            BQ="${ENIGMA}.tar.gz"


            echo "Pruefe ob ein Update der Bouquets noetig ist.."
            cd $TEMPdir


#prüfen ob das script schon mal genutzt wurde und /etc/timelu.txt überhaupt vorhanden ist
            if [ -f "/etc/timelu.txt" ]; then
#Speichern des Inhalts von timelu.txt in einer Variablen
                timelu=$(cat /etc/timelu.txt | head -n1 | tail -n1)
                _error $? "Es ist ein Fehler aufgetreten (auslesen von /etc/timelu.txt)"


#vor dem downloaden sicherstellen das die datei nicht vorhanden ist
                _cleanup


#Downloaden von time.txt vom Server
                downtimetxt


#Vergleich: Ist timelu kleiner als timen?
                if [ $timelu -lt $timen ]; then
                    echo "Update vom $(date -d @$timen +"%d.%m.%Y um %H:%M") vorhanden.. Starte Update"
                    echo " "
#download and update bouquets
                    downinstBQ Update
                else
#Timen ist kleiner oder gleich groß wie timelu
                    echo "Senderliste aktuell. Kein Update noetig"
#VPN Verbindung wird beendet
                        if [ "$VPN" = 1 ]; then
                        echo "VPN Verbindung wird beendet"
                        /usr/script/vpn.sh stop
                        else
                        echo ""
                        fi
                fi
            else
#vor dem downloaden sicherstellen das die datei nicht vorhanden ist
                _cleanup


#Downloaden von time.txt vom Server
                downtimetxt
                
#download and install bouquets
                echo "Starte Bouquets Install"
                echo " "
                downinstBQ Install
            fi


            exit 0
Zum Schluß habe ich mal probiert alle $SERVERurl mit scp -i /etc/openvpn/keyputty.ppk root@192.168.178.18:/media/daten/www/settings/astra_e2/$BQ $TEMPdir/$BQ zu ersetzen. :(

Schade aber ich kriegs einfach nicht hin.

Grüße Rooki

syssi
Beiträge: 2951
Registriert: 24.12.2010 16:50:59
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: Rheinland

Re: Igel-Server dreambox openvpn

Beitrag von syssi » 12.09.2013 19:35:41

Konnte das Problem reproduzieren. Es liegt daran, dass dein Key in einem falschen Format vorliegt. Der SSH-Client ist ein Dropbear und kein OpenSSH, deshalb muss deine Keydatei ein wenig anders aussehen. Such mal nach dem Tool "dropbearconvert" und konvertiere deinen OpenSSH-Key ins Dropbear-Format:

Code: Alles auswählen

dropbearconvert openssh dropbear openssh.key dropbear.key
Zuletzt geändert von syssi am 13.09.2013 09:16:34, insgesamt 1-mal geändert.

rooki
Beiträge: 76
Registriert: 10.07.2013 07:13:19

Re: Igel-Server dreambox openvpn

Beitrag von rooki » 13.09.2013 06:47:23

Hi sissy,

habe gegoogelt, finde zwar etwas darüber aber das tool an sich gibt es nicht zum download. Oder ist es in drobbear enthalten? Noch eine Frage zum script, wäre das was ich jetzt zuletzt gepostet habe ok.
Ich hatte ja alle SERVERurl ersetzt mit dem scp Befehl, hab aber keine Ahnung ob das jetzt "verwurschtelt" ist. Sonst such ich mir ja nen Wolf.


Danke

Grüße Rooki

syssi
Beiträge: 2951
Registriert: 24.12.2010 16:50:59
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: Rheinland

Re: Igel-Server dreambox openvpn

Beitrag von syssi » 13.09.2013 09:15:50

Ersetzen der SERVERurl macht keinen Sinn. Ich habe dir die beiden wget-Zeilen bereits genannt, welche du ersetzen musst. Dropbearconvert ist im Paket Debiandropbear enthalten: /usr/lib/dropbear/dropbearconvert

rooki
Beiträge: 76
Registriert: 10.07.2013 07:13:19

Re: Igel-Server dreambox openvpn

Beitrag von rooki » 13.09.2013 15:02:07

Hi syssi,

ich muss doch nochmal nachfragen, welchen key meinst du denn jetzt.? Meine keyputty.ppk oder welchen sollte ich konvertieren. Hatte mir damals mit puttygen auch fürs Handy eine keyigel (ohne endung) konvertiert. Die kann ich aber nicht nehen oder.?

Gruß
Rooki

syssi
Beiträge: 2951
Registriert: 24.12.2010 16:50:59
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: Rheinland

Re: Igel-Server dreambox openvpn

Beitrag von syssi » 14.09.2013 12:31:54

Informier dich mal ueber SSH Public Key Authentification. Danach solltest du verstanden haben, dass es immer ein Schluesselpaar (public/private) gibt. Den Public-Key hinterlegt man auf dem Server in der authorized_keys. Mit Hilfe des privaten Schluessels kann sich dann ein Client anmelden. Solche paar kannst du viele erzeugen. Hauptsache sie stehen am Ende in deiner authorized_keys. Der private Schluessel sollte am Ende in einem Format sein, dass der SSH-Client ihn versteht. In deinem Fall hast du einen private Key im OpenSSH-Format erzeugt, welchen du gerade auf deiner Dreambox in einen Dropbear-SSH-Client fuetterst. Erstell dir also entweder ein Schluesselpaar im Dropbear-Format oder konvertiere.

rooki
Beiträge: 76
Registriert: 10.07.2013 07:13:19

Re: Igel-Server dreambox openvpn

Beitrag von rooki » 15.09.2013 08:25:03

Hi,

also ich hab es hinbekommen, habe die .ppk in dropbearformat konvertiert. Wenn ich jetzt das script per telnet ausführe läuft es durch. :D :D :D

Es kommt allerdings eine abfrage: Host xxx.xxx.xxx.x is not in trusted host file
fingerprint xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Do you want to contiune connecting y/n ? usr/bin/dbclient connection to xxx.xxx.xxx.x exited Didn`t validate host key

Ich habe das script als erweiterung im Menü der Box eingefügt, hier kommt Fehler abbruch der Verbindung.

Muss man den Server irgendwo noch als "sicher" eintragen ???

Gruß Rooki

syssi
Beiträge: 2951
Registriert: 24.12.2010 16:50:59
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: Rheinland

Re: Igel-Server dreambox openvpn

Beitrag von syssi » 15.09.2013 11:55:31

Bau einmal haendisch per "ssh" eine Verbindung zum Server ("ssh user@host") auf und nicke ("y") das Zertifikat ab.

rooki
Beiträge: 76
Registriert: 10.07.2013 07:13:19

Re: AW: Igel-Server dreambox openvpn

Beitrag von rooki » 15.09.2013 12:06:18

Hi, dann bringt er Fehler no auth method used

syssi
Beiträge: 2951
Registriert: 24.12.2010 16:50:59
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: Rheinland

Re: AW: Igel-Server dreambox openvpn

Beitrag von syssi » 15.09.2013 17:00:04

rooki hat geschrieben:Hi, dann bringt er Fehler no auth method used

Code: Alles auswählen

ssh -i /etc/openvpn/keyputty.ppk root@192.168.178.18

Antworten