Fritzbox Fernzugang(OpenVPN) mit OPENVPN-Server für Windows einrichten

hofer.m

Neuer User
Mitglied seit
29 Dez 2007
Beiträge
8
Punkte für Reaktionen
0
Punkte
0
Hallo!

Ich möchte gernen eine FritzBox 7170 mit der neuen VPN-Firmware von AVM als Client verwenden.
Als Server soll ein Windows SBS 2003 mit OpenVPN eingesetzt werden.

Da ich bis jetzt noch nie eine FritzBox modifiziert habe und von mit OpenVPN keine Ahnung habe, bitte ich euch um Hilfe.

Mein Problem ist dass es so viele Informationen zu Fritzbox und OpenVPN gibt, die alle unterschiedlich sind und ich nicht richtig weiß wo ich beginnen soll.

Ich möchte wenn möglich meine FritzBox nicht modifizieren, da es ja seit kurzen ohnehin die VPN unterstützung von AVM gibt.

Leider finde ich dort aber nur Informationen um 2 FritzBox 7170 bzw das VOIP Gateway miteinander zu verbinden.

Weiß jemand welche dateien ich für meinen Windows OpenVPN server benötige um mit der Fritzbox darauf verbinden zu können?

Danke für euere Hilfe.

mfg
 
Ganz kurz: Das geht so nicht.
OpenVPN nutzt einen SSL verschlüsselte Kommunikation, der AVM-Ansatz nutzt IPSec, die beiden sind also "nicht kompatibel".
Du wist also in deinem Fall auf dem Server eine IPSec-Variante benötigen oder doch einen OpenVPN Client auf der Box.

Jörg
 
IPSec und SSL

Danke für die schnelle Antwort.

Ich werde dann versuchen einen IPSec fähigen Server zu verwenden um die FritzBox 7170 und zukünftige Versionen leichter einbinden zu können.

Da ich aber auch gepant habe eine FritzBox 7050 zu verwenden, die ich ohnehin modifizieren muss, auch die OpenVPN-Methode.

Zu meinen Fragen:

Teil1: IPSec

Da ich auch mit IPSec keine Ehfahrung habe, nur kurz ob mein Lösungsansatz auch funktionieren könnte.
Der Windows SBS 2003 ist über einen Router (kann nicht modifiziert werden, lediglich Portforward) mit dem Internet verbunden. Reicht es dort einen Port auf den Server weiterzuleiten und im Internet nach einem IPSec Server für Windows zu suchen, oder gibt es mit dem Router Probleme?
Falls jemand einen guten Server weiß bin ich sehr dankbar.


Teil 2: Open VPN
Wieder der gleiche Windows SBS Server hinter dem selben Router. Der Standard Port für OpenVPN ist weitergeleitet.
OpenVPN mit GUI ist am server installiert.
Jetzt zu meinen eigentlichen Fragen.
Welche Authenifizierungsmethode soll ich am besten verwenden?
Welche Dateien müssen dazu vür den Server bereit gestellt werden?

Meine Idee für die FritzBox ist es, die von ihr benötigten Dateien auf meinem Webserver bereit zu stellen, dass ich nur die debug.cfg so bearbeiten brauche dass die Dateien von ihr geladen und OpenVPN gestartet wird.

Wie kann die debug.cfg am leichtesten bearbeitet werden. Ich habe etwas von einem Pseudoimage gelesen, ist das der richtige Weg?

mfg Michael
 
Zum OpenVPN: Für die 7050 ist der einfachste Weg sicher der über das "Pseudoupdate" von "the Costruct", was das das Openvpn Programm und eine Konfig auf die Box bringt. Du könntetst dann "den Inhalt" der debug.cfg (die alles vom The-Construct-Server lädt, dann noch auf deinen Server "anpassen". Vermutlich reicht für dich der Zugang über einen "statische Schlüssel", den dir die Seite auch erzeugen kann. Am besten schaust du dir als Grundlage mal das Wiki dazu an...

Zum IPSec: Hat die "Server-Variante" von Windows nicht einen IPSec Server mit eingebaut? http://support.microsoft.com/kb/816514

Jörg
 
Zuletzt bearbeitet:
Hallo!

Erstmals danke für deine Hilfe.
Bin schon ein gutes Stück weiter gekommen, habe aber noch immer ein paar Probleme.

Zu IPsec:
Wird erst einmal zurückgestellt.

OpenVPN:
Ich habe mitlerweile auf einem Windows XP Client OpenVPN installiert und verschiedene Konfigurationen mit meinem Server getestet.
Dabei habe ich unter anderem herausgefunden das die Methode mit einem preshared-key bei mir nicht funktioniert, da ich mehrere Clients einbinden will.

Also habe ich mich der Methode mit den Zertifikaten gewitmet.
Diese Methode funktioniert von meinem WindowsClient fast richtig.
(Verbindung wird hergestellt, IP adresse zugeteilt, kann aber den Server nicht anpingen. Aber das ist jetzt noch nicht so wichtig.)

Jetzt möchte ich diese Methode auf die FritzBox übertragen.
Dazu habe ich mir folgendes ausgedacht.

-Als Basis dient ein Pseudoimage mit Telnet, OpenVPN.
-Ich habe einen kennwortgeschützten Webserver auf den ich dateien für meine Fritzbox zu verfügung stellen kann
-Um die Konfiguration der Boxen zu ändern muss ich nur die ovpn-datei(en) am Server ändern und die Boxen hohlen sich die neuen Dateien bei einem Neustart.

Dazu habe ich das ober erwähnte Pseudoimage ein bisschen bearbeitet:

##################################################################################
# install results:
##################################################################################
export INSTALL_SUCCESS_NO_REBOOT=0
export INSTALL_SUCCESS_REBOOT=1
export INSTALL_WRONG_HARDWARE=2
export INSTALL_KERNEL_CHECKSUM=3
export INSTALL_FILESYSTEM_CHECKSUM=4
export INSTALL_URLADER_CHECKSUM=5
export INSTALL_OTHER_ERROR=6
export INSTALL_FIRMWARE_VERSION=7

##################################################################################

echo "install: check and install new firmware ..."
LED_DEVICE=/proc/led_mod/led
if [ ! -f /proc/led_mod/led ] ; then
LED_DEVICE=/var/led
echo "set led: ${LED_DEVICE}"
fi

##################################################################################
# start info led flashing
##################################################################################
echo "set INFO led to blink (modul=7, state=4)"
echo 7,4 > ${LED_DEVICE}
cat > /var/tmp/debug.cfg << 'EOF'
#!/bin/sh

LED_DEVICE=/proc/led_mod/led
if [ ! -f /proc/led_mod/led ] ; then
LED_DEVICE=/var/led
echo "set led: ${LED_DEVICE}"
fi
# start internet phone led flashing
echo "set internet phone led to blink (modul=14, state=3)"
echo 14,3 > ${LED_DEVICE}

# check kernel version
KERNEL_VERSION=`uname -r | grep 2.6`
if [ -z "${KERNEL_VERSION}" ]
then
KERNEL_VERSION="linux24"
ETHERWAKE="etherwake"
else
KERNEL_VERSION="linux26"
ETHERWAKE="ether-wake"
fi

# init busybox var
BUSYBOX="/bin/busybox"

# wait to be able to interrupt in case of emergency
sleep 120

if [ -z "$(busybox | grep telnetd)" ]
then
while !(ping -c 1 ftp.the-construct.com)
do
sleep 5
done
# check if file already exists
if [ ! -f /var/tmp/busybox ]
then
wget -qO /var/tmp/busybox http://ftp.the-construct.com/files/${KERNEL_VERSION}/busybox
# make it executable
chmod +x /var/tmp/busybox
fi
# set busybox var
BUSYBOX="/var/tmp/busybox"
fi
# start telnet deamon with password of web gui
${BUSYBOX} telnetd -l /sbin/ar7login

# load VPN-Server (OpenVPN)

# create tun-device
mknod /var/tmp/tun c 10 200


#begin-----------------------------------------------------
# wait for server
while !(ping -c 1 ftp.the-construct.com)
do
sleep 5
done

wget -qO /var/tmp/client.ovpn http://xxx:[email protected]:82/openvpn/graz.ovpn
wget -qO /var/tmp/client.key http://xxx:[email protected]:82/openvpn/graz.key
wget -qO /var/tmp/client.crt http://xxx:[email protected]:82/openvpn/graz.crt
wget -qO /var/tmp/ca.crt http://xxx:[email protected]:82/openvpn/ca.crt
wget -qO /var/tmp/dh1024.pem http://xxx:[email protected]:82/openvpn/dh1014.pem

#end-------------------------------------------------------

# check if file already exists
if [ ! -f /var/tmp/openvpn ]
then
# wait for server
while !(ping -c 1 ftp.the-construct.com)
do
sleep 5
done
# load files
wget -qO /var/tmp/openvpn http://ftp.the-construct.com/files/${KERNEL_VERSION}/openvpn
fi

#beginn-------------------------------------------------
# make them executable
chmod +x /var/tmp/openvpn
chmod 0600 /var/tmp/client.ovpn
chmod 0600 /var/tmp/client.key
chmod 0600 /var/tmp/client.crt
chmod 0600 /var/tmp/ca.crt
chmod 0600 /var/tmp/dh1024.pem
#end------------------------------------------------------


# start OpenVPN
/var/tmp/openvpn --config /var/tmp/client.ovpn

# stop internet phone led flashing
echo 14,1 > ${LED_DEVICE}

EOF

# write debug.cfg
cat /var/tmp/debug.cfg > /var/flash/debug.cfg

# delete /var/tmp/debug.cfg
rm /var/tmp/debug.cfg


# reboot
exit $INSTALL_SUCCESS_REBOOT

# (c) 2006 Andreas Baginski




Wenn ich ein FirmwareUpdate mit diesem Pseudoimage durchführen will bekomme ich die Meldung "An unspecified error occurred during the update".

Vielleicht kann sich ja jemand einmal mein Pseudoimage ansehen um zu sehen ob ich dort einen Fehler habe.

mfg
 
(Verbindung wird hergestellt, IP adresse zugeteilt, kann aber den Server nicht anpingen. Aber das ist jetzt noch nicht so wichtig.)
... und ich dachte immer, genau das (die Erreichbarkeit des Servers) ist das Wichtigste ;-)
Dazu habe ich das ober erwähnte Pseudoimage ein bisschen bearbeitet:
Zur Darstellung: "Packe" solche Dinge wie den Code doch bitte zwischen [noparse]
Code:
 und
[/noparse], dann werden die Beiträge übersichtlicher.

Womit hast du denn die Datei editiert (es könnte an "Windows-Zeilenunbrüchen" liegen)?
Könntest du die geänderten Stellen irgendwie "markieren"?
Womit hast du das "/var/install" wieder per tar "eingepackt"? Die Box kennt nur ein "älteres" tar.

Wenn du so nicht weiter kommst, könnte man die "debug.cfg" zur Not auch auf der Box selbst verändern (wenn du Telnet aktiviert hast).

Grüße

Jörg
 
Hallo!

Stimmt es liegt glaube ich an den Zeilenumbrüchen. Habe das File nur mit dem Windows editor bearbeitet.
Habe mir aber heute Notepad2 heruntergeladen. Dort kann ich auf Unix(LF) umstellen.
Funktioniert aber immer noch nicht.
Ich habe heute versucht ein neu erstelltes image (update mit diesen image hat funktioniert) nur zu öffnen und ohne Änderung wieder zu speichern.
Hat aber schon nicht mehr funktioniert.

Kann ich dir meine Datei einmal mailen?

Was meinst du mit "/var/install wieder in tar eingepckt"?

mfg
 
So ein "Pseudo-Update" besteht eigentlich aus einem mit "tar" gepackten "Image".
Darin ist (mindestens) die Datei "install" im Ordner "var" (also "/var/install") und diese Datei enthält ein Skript, was beim Update ausgeführt wird und was du verändert hast.
Wen du das "Update" verändert hast, muss es vor dem Aufspielen auf die Box also wieder so als tar "eingepackt" werden, und das auch noch in einer tar-Version, die die Box "versteht". Ich hoffe, dass ist nun etwas verständlicher ausgedrückt?!?

Wenn die Box dieses "tar-File" nicht auspacken kann, könnte z.B. der genannte Fehler auftreten.

Jörg
 
Hallo!

Ich habe eine Lösung für dieses Problem gefunden:

Ich erstelle ein Pseudoimage mit:
1. Telnet
2. OpenVPN
3. Code am ANFANG hinzufügen

Im Teil für OpenVPN wähle ich dann meine ovpn-Datei aus. Die keydatei wird einfach ignoriert.

Im Teil zum Code hinzufügen wird folgender Code hinzugefügt:
Code:
#code-----------------------------------------------------------------
# wait for server
  while !(ping -c 1 ftp.the-construct.com)
  do
    sleep 5
  done

wget -qO /var/tmp/server.key  http://xxx:[email protected]:82/openvpn/graz.key
wget -qO /var/tmp/server.crt  http://xxx:[email protected]:82/openvpn/graz.crt
wget -qO /var/tmp/ca.crt  http://xxx:[email protected]:82/openvpn/ca.crt
wget -qO /var/tmp/dh1024.pem  http://xxx:[email protected]:82/openvpn/dh1014.pem

chmod 0600 /var/tmp/server.key
chmod 0600 /var/tmp/server.crt
chmod 0600 /var/tmp/ca.crt
chmod 0600 /var/tmp/dh1024.pem
#---------------------------------------------------------------------

Dadurch werden die benötigten Dateien schon vor der eigentlichen VPN-Konfiguration geladen.
Die VPN-Konfiguration erstellt mir eine ovpn-Datei mit meinem Inhalt und eine secret.key-Datei.
Der secret.key wird zwar nicht benötigt, stört aber auch nicht, da
in der ovpn-Datei festgelegt ist, welche Dateien benötigt werden.

Anschließend sollte OpenVPN mit meiner Konfiguration und meinen Dateien gestartet werden.


So weit mein derzeitiger Stand.

Nun zu meinen neuen Problemen:
Im Statusfenster am Server (Windowsserver) ist keinerlei aktivität festzustellen.
Wie kann ich kontrollieren ob mein Client auf der Fritzbox richtig gestarte wurde?

mfg
 
Um jetzt weiter zu kommen, musst du auf der Box selbst nachsehen.
Also mit "telnet <IP deiner Box>" (Passwort evtl dein Web-PW der Box) und dann mit "ps" sehen, ob der openvpn Prozess läuft.

Ansonsten mal "von Hand" starten mit
Code:
/var/tmp/openvpn --config /var/tmp/client.ovpn

die "üblichen Verdächtigen" sind
- falsches/Fehlendes "dev-node /var/tmp/tun "
- kein Zugriff auf Dateien

Falls du nicht weiterkommst, poste doch mal dein "client.ovpn".

Jörg
 
Das mit dem dev/node muss es sein.

Wenn ich den Server manuel starten will bekomme ich die Fehlermeldung

You must define TUN/TAP device (--dev)

im Verzeichniss var/tmp ist ein tun vorhanden, keine ahnung ob das das richtige ist.

meine ganzen Datein habe ich dir gemailt.

mfg
 
Du hast Post ;-)

Jörg
 
Hallo!

Ich habe jetzt in der ovpn-Datei ein

Code:
dev-node tun

hinzugefügt und das push... gegen pull getauscht.

Wie muss ich das demon hinzufügen?
Einfach irgendwo?

Mit dieser Konfiguration kann ich OpenVPN zumindest schon manuell starten, aber nur mit Fehlern.

Ich sende dir per mail einen screenshot von der Telnetausgabe der Box und des Statusfensters des Server.

mfg
 
Die box hat keine gültige Zeit und beschwert sich, dass das Zertifikat erst in der Zukunft gültig wird.
Häng die Box "richtig" ins Netz, dann zieht sie die Zeit über ntp, oder gib mal ein
Code:
date -s 010212002008
das setzt die Uhr auf 2. Januar 2008, 12:00 Uhr

Jörg
 
Ich habe jetzt einfach am Ender der ovpn-Datei ein daemon hinzugefügt. Ist das so richtig?

Leider startet sie noch immer nicht automatisch.
Wenn ich sie manuell starte bekomme ich in telnet gar keine Meldung, aber auf der Statusanzeige des servers tut sich etwas.
Nur wird die Verbindung noch nicht richtig hergestellt.

Ich maile dir einmal die statusanzeige.

Kann es sein dass es probleme macht das, die Fritzbox zur Zeit noch im selben Netzwerk hängt wie der Server und eine IP-Adresse aus dem gleichen Adressbereich besitzt?
Ich werde sie morgen einmal an einem anderen ADSL Anschluss testen.


mfg
 
Hi,

Zunächst: wo du Dinge in der Konfig einträgst ist egal, dein "daemon" steht also richtg.

Leider startet sie noch immer nicht automatisch.
Wenn ich sie manuell starte bekomme ich in telnet gar keine Meldung, aber auf der Statusanzeige des servers tut sich etwas.
Ja, das ist die "Nebenwirkung" vom daemon-Befehl, die Ausgaben siehst du dann nicht mehr... Also "von Hand" am besten ohne daemon starten, z.B. so
Code:
cd /var/tmp/
cat client.ovpn | grep -v daemon > new.ovpn
openvpn --config new.ovpn


Kann es sein dass es probleme macht das, die Fritzbox zur Zeit noch im selben Netzwerk hängt wie der Server und eine IP-Adresse aus dem gleichen Adressbereich besitzt?
Jein. Dein Problem wird vermutlich sein, dass du "von intern" die interne IP und nicht den Namen nutzen solltest, sonst benötigst du noch ein "float" in der Konfig (für den Client sieht es sonst so aus, als würde die Box ihre IP verändern, weil du über den Namen die offizielle IP ansprichst und die private IP antwortet).

Jörg
 
Holen Sie sich 3CX - völlig kostenlos!
Verbinden Sie Ihr Team und Ihre Kunden Telefonie Livechat Videokonferenzen

Gehostet oder selbst-verwaltet. Für bis zu 10 Nutzer dauerhaft kostenlos. Keine Kreditkartendetails erforderlich. Ohne Risiko testen.

3CX
Für diese E-Mail-Adresse besteht bereits ein 3CX-Konto. Sie werden zum Kundenportal weitergeleitet, wo Sie sich anmelden oder Ihr Passwort zurücksetzen können, falls Sie dieses vergessen haben.