Netzwerkkopplung mit der Fritz Box

19.07.2006
Von Albert Lauchner
Mit der Fritz Box von AVM lassen sich zwei Netzwerke an getrennten Standorten über die DSL-Leitung zu einem einzigen zusammenschalten. Alle Geräte können so auf Ressourcen in beiden Netzen zugreifen, ohne einen Unterschied zu bemerken.

Von Albert Lauchner, tecChannel.de

Ein Virtual Private Network (VPN) ist das Mittel der Wahl, wenn man Daten zwischen zwei räumlich getrennten Netzwerken über das Internet austauschen will. Das VPN verschlüsselt die Informationen beim Sender, schickt sie über eine unsichere öffentliche Internetleitung und entschlüsselt sie auf der Gegenseite wieder. Dabei stellt das VPN sicher, dass die Daten auf dem Transport weder mitgelesen oder verändert werden können noch dass sie von einem nicht autorisierten Sender stammen.

Theoretisch kann man zwei Rechner, die sich an zwei Standorten mit DSL-Anschluss befinden, auch mit den VPN-Bordmitteln von Windows XP und Linux verbinden. Doch dabei treten diverse Probleme auf, da beispielsweise das NAT in den DSL-Routern die Absenderadressen modifiziert und somit die geschützten Pakete verändert. Doch selbst wenn die VPN-Verbindung über die Netzwerksgrenzen mit dem PC endlich klappt: Spätestens, wenn man mit der Spielekonsole aus einem Netzwerk auf die MP3-Sammlung im anderen Netz zugreifen will, ist Schluss mit der lokalen VPN-Installation auf dem Client.

Die weitaus intelligentere Lösung ist, die Netzwerkkopplung und das VPN-Management komplett in den DSL-Router zu verlagern. In diesem Beitrag beschreiben wir eine derartige VPN-Verbindung über die Fritz Box. Darüber können dann alle Netzwerkgeräte des einen Standorts über eine abgesicherte Verbindung auf alle Netzwerkgeräte des anderen Standorts zugreifen. Da der Router die Koppelung regelt, muss auf den Netzwerk-Devices keine Konfiguration geändert oder Software installiert werden. Die Teilnehmer bemerken den Unterschied zwischen lokalen und entfernten Gegenstellen nicht einmal.

DSL-Upload als Bremse

Einen Unterschied beim Zugriff auf lokale und entfernte Netzwerkressourcen gibt es dennoch: die Geschwindigkeit, besser gesagt den Datendurchsatz. Hierbei ist die DSL-Leitung der limitierende Faktor. Verbindet man etwa zwei Standorte über VPN, die beide über DSL2000 an das Internet angebunden sind, so ist in beide Richtungen die DSL-Uploadgeschwindigkeit mit 192 Kbit/s die Obergrenze. Damit lässt sich zwar prima ein Multiplayer-Game zwischen zwei PC oder Konsolen spielen. Auch das Öffnen eines Office-Dokuments geschieht in einer vertretbaren Zeit. Doch wer beispielsweise mit seinem WLAN-Noxon-Client auf die MP3-Sammlung der Dreambox im anderen Netzwerk zugreifen will, wird höchstens bei MP3s mit 128 Kbit/s glücklich.

Selbst die Anzeige eines gut gefüllten Verzeichnisses auf einem Rechner der Gegenseite wird mit DSL2000 zur Geduldsprobe. Was der Befehl "dir" auf der Commandline mit fünf Netzwerkpaketen und rund 5 KB Traffic erledigt, kann im Windows-Explorer schon einmal 100 KB an Datenverkehr erzeugen. Wer mit dem Explorer im Dateibaum navigiert, muss daher bei jedem Klick mit fünf Sekunden Denkpause rechnen. Da bei der VPN-Kopplung der Upload auf der Serverseite die Geschwindigkeit bestimmt, sollte man beim professionellen Einsatz zumindest dort den DSL-Upload auf 384 oder 576 Kbit/s erhöhen.

Ansonsten haben wir auch im Langzeitbetrieb mit der im Folgenden vorgestellten Lösung nur positive Erfahrungen gemacht. Einmal auf der Fritz Box eingerichtet, kann man an beiden Standorten beliebige Netzwerkgeräte hinzufügen - alle Geräte im Gesamtnetz können sofort mit ihnen kommunizieren.

SSL-VPN mit OpenVPN

Für die Kopplung der beiden Netzwerkwerke über die Fritz Box haben wir uns für die Open-Source-Software "OpenVPN" entschieden. OpenVPN setzt auf das SSL/TLS-Protokoll und ist damit weitaus einfacher zu konfigurieren als IPSec, aber ebenso sicher. Zudem existieren von OpenVPN neben fertigen Binaries für Windows- und Linux-PCs auch Versionen für den MIPS-4KEc-Prozessor der Fritz Box. Wichtigstes Argument war jedoch, dass sich eine aktive Community im ip-phone-forum schon seit längerem mit diesem Thema beschäftigt und bei Problemen gerne weiterhilft.

Im Prinzip ist die Installation der VPN-Verbindung recht einfach: Auf beiden Fritz-Box-Routern sind lediglich das OpenVPN-Binary, eine gemeinsame Keydatei zur Verschlüsselung und eine Konfigurationsdatei zur Steuerung der OpenVPN-Netzwerkparameter nötig.

Vorbereitung

Vor dem Zusammenschalten der Netzwerke muss man sich noch ein paar Gedanken über die verwendeten IP-Adressen machen. Standardmäßig verwendet die Fritz Box das private Class-C-Subnetz 192.168.178. Alle Netzwerkgeräte erhalten also von DHCP- Server der Box eine Adresse, die mit 192.168.178 beginnt, die Box selbst liegt normalerweise auf 192.168.178.1. Da wir zwei Netzwerke zusammenschalten, können diese jedoch nicht im selben Subnetz liegen, da es sonst beispielsweise zu doppelten IP-Adressen kommt. Daher muss man zumindest eines der Netze auf einen anderen Adressraum legen.

Gehen Sie dazu in die Webkonfiguration der Fritz Box. Den entsprechenden Eintrag finden Sie unter "System/Netzwerkeinstellun gen/IP-Adresse". In diesem Beitrag liegt das eine Netz historisch bedingt auf 192.168.100, das zweite auf 192.168.1. In Ihrer Wahl sind Sie im Bereich 192.168 frei, Sie sollten jedoch nicht die 192.168.200 benutzen, da unsere Konfiguration Adressen daraus für interne Routing-Zwecke benötigt.

Noch ein Tipp: Wenn Sie Netzwerkgeräte mit fester IP-Adresse im Einsatz haben (Printserver, Multimedia-Clients), sollten Sie deren Adressen umstellen, bevor Sie das Subnetz in der Fritz Box ändern. Nach dem Wechsel des Subnetzes sind die Geräte ansonsten über Ihre alte IP-Adresse nicht mehr erreichbar.

Key-Datei erzeugen

OpenVPN bietet verschiedenste Möglichkeiten wie feste Key-Dateien und Zertifikate, um die Verbindung über das Internet abzusichern. Für unsere Zwecke ist ein einfacher statischer (preshared) Key vollkommen ausreichend, da wir keine Verwaltungsfunktionen für große Netzwerke wie etwa ein Schlüsselmanagement benötigen.

Bevor wir mit der Installation beginnen, benötigen wir den gemeinsamen Schlüssel für alle VPN-Teilnehmer. OpenVPN arbeitet zur Verschlüsselung mit einer 2.048-Bit-Key-Datei. Um den Rechenaufwand gering zu halten, nutzt die Software davon aber lediglich 128 Bit für die Verschlüsselung nach dem Blowfish-Algorithmus und 160 Bit für die HMAC-SHA1-Signatur der Pakete. Nach gegenwärtigem Stand ist diese Verschlüsselung aber auch mittelfristig nicht zu brechen.

Eine einfache Möglichkeit zum Erstellen des Preshared-Keys bietet die Website www.the-construct. com, die auch sonst einiges zum Fritz-Box-Modding anzubieten hat. Eine neue OpenVPN-Keydatei kann man sich unter www.the- costruct.com/functions/create_se cret.php erzeugen und auf den PC vorerst einmal in ein temporäres Verzeichnis herunterladen. Im Prinzip ist diese 2.048-Bit-Key-Datei nichts weiter als ein 256 Byte langes, hexadezimal kodiertes Passwort, das den vollen Zeichensatz von 256 möglichen Werten pro Zeichen ausnutzt.

Neben dem Erstellen der Key-Datei bietet the-construct.com auch an, gleich alle nötigen Modifikationen der Fritz Box für OpenVPN in einem Firmware-Update zusammenzustellen. Davon raten wir aber ab, weil man für die dort benutze Lösung einen eigenen Webspace benötigt und das Handling der Konfiguration recht umständlich ist.

Server-Fritz-Box einrichten

Beim Zusammenschalten der zwei Netzwerke über DSL wird eine Fritz Box als Server, die andere als Client konfiguriert. Auf beiden läuft zwar die identische Software. Doch der Server verhält sich nach dem Start der Box passiv und wartet auf eine Verbindungsanfrage, während der Client aktiv die Verbindung zum Server aufbaut. Ansonsten gibt es keinen Unterschied, die Netzwerkteilnehmer können Daten selbstverständlich in beiden Richtungen austauschen.

OpenVPN benötigt zum Start eine Konfigurationsdatei, in die alle relevanten Parameter eingetragen sind. Im Folgenden sehen Sie bereits die komplette Konfigurationsdatei der Server-Box.

dev tun0

dev-node /dev/misc/net/tun

ifconfig 192.168.200.2 192.168. 200.1

tun-mtu 1500

float

mssfix

#Pfad zum Key File

secret /var/tmp/secret.key

#Protokoll auf TCP und Port 1194

proto tcp-server

port 1194

#Protokollierung auf 4

verb 4

#Routen setzen, bei route Subnetz des Clients

# bei push Subnetz des eignen Servers eintragen

route 192.168.1.0 255.255. 255.0

push "route 192.168.100.0 255.255.255.0"

#Verbindung erhalten

ping 15

push "ping 15"

ping-restart 120

push "ping-restart 120"

Speichern Sie diese Konfigurationsdatei in einer temporären Textdatei. Die Konfiguration des Servers müssen Sie lediglich an zwei Stellen anpassen. In der Zeile "route 192..." tragen Sie die Subnetzadresse des späteren Clientnetzwerks (mit einer ".0" am Ende) ein. In der Zeile "push..." geben Sie analog das eigene Subnetz der Server-Fritz-Box ein. Der push-Befehl sendet die Konfigurationszeile an alle Clients, die sich anmelden. Durch die gepushte Route wird das Servernetz für den Client zugänglich. Umgekehrt sorgt der lokale route-Befehl, dass die Rechner im eigenen Netz auf Ressourcen im Clientnetz zugreifen können.

Alles in die debug.cfg

Nun haben wir zwar die passende Server-Konfigurationsdatei und die Key-Datei auf dem PC in einem temporären Verzeichnis liegen. Doch irgendwie müssen diese Daten auf die Fritz Box und dort auch nach einem Reboot oder Stromausfall erhalten bleiben. Der Clou an dem von uns gewählten Weg ist, alle notwendigen Informationen in die debug.cfg der Box zu schreiben. Beim Booten soll dann die Box diese Daten aus der debug.cfg extrahieren und sie in die für OpenVPN benötigten Dateien speichern. Erst dann wird OpenVPN gestartet.

Im Folgenden gehen wir davon aus, dass auf der Fritz Box bereits der telnet-Daemon und der FTP-Server läuft. Mit deren Hilfen kopieren Sie nun die debug.cfg zur Bearbeitung auf den PC. Dabei müssen wir lediglich einen kleinen Umweg über eine temporäre Datei einschlagen, da AVM den direkten FTP-Lesezugriff auf Dateien im Flashspeicher verwehrt. Loggen Sie sich daher per telnet auf die Box ein und erzeugen Sie mit

cat /var/flash/debug.cfg < /var/ tmp/debug.cfg

eine temporäre Arbeitskopie. Diese kopieren Sie dann mit dem Befehl "FTP" auf den PC und öffnen sie mit einem Editor zur Bearbeitung.

Noch ein letzter Hinweis, bevor es richtig losgeht. Windows und Linux nutzen unterschiedliche ASCII-Zeichen für den Zeilenumbruch in Textdateien. Daher benötigen Sie unbedingt einen Editor, der auch im Unix-Format speichern kann (nur LF am Zeilenende). Falls Sie noch keinen passenden Editor besitzen, empfehlen wir Ihnen für diesen Zweck die Freeware "Notepad2", die Sie unter www.flos-freeware.ch/notepad2. html herunterladen können. Speichern Sie immer alle Textdateien (Skripte, debug.cfg, Konfigurationsdateien) nach der Bearbeitung am PC im Unix-Format, bevor Sie sie auf die Fritz Box zurückkopieren. Ansonsten werden Sie die merkwürdigsten Fehler erhalten.

debug.cfg erweitern

Bislang sollte Ihre debug.cfg so aussehen (Passwort und Usernamen sind mit "x" überschrieben):

# # # # # # # # # Start des telnet-daemons

/usr/sbin/telnetd -l /sbin/ar7login

while !(ping -c 1 www.tecchan nel.de); do

sleep 7

done

# # # # # # # # # Installation FTP-Server

cd /var/tmp

wget http://www.tecchannel.de/ download/432803/bftpd.conf

wget http://www.tecchannel.de/ download/432803/bftpd

chmod +x bftpd

chmod 777 bftpd.conf

# Hier den Usernamen und den Passwort-Hash für den FTP-Server eintragen

echo "xxxxx:xxxxxxxxxx:0:0: root:/:null" >> /var/tmp/passwd

/var/tmp/bftpd -d -c /var/tmp/bftpd.conf

Die Datei erweitern wir nun am Ende um ein Segment, das den Key zur VPN-Verschlüsselung enthält und diesen beim Booten mit dem cat-Befehl in die Datei "/var/tmp/ sekret.key" schreibt. An Stelle der x-Zeichen kopieren Sie Ihren vorab erzeugten Key ein.

# write ‘secret.key’ to file

cat > /var/tmp/secret.key << ‘ENDSECRETKEY’

#

# 2048 bit OpenVPN static key

#

-BEGIN OpenVPN Static key V1-

xxxxxxxxxxxxxxxxxxxxxxxxxxxx

xxxxxxxxxxxxxxxxxxxxxxxxxxxx

xxxxxxxxxxxxxxxxxxxxxxxxxxxx

xxxxxxxxxxxxxxxxxxxxxxxxxxxx

xxxxxxxxxxxxxxxxxxxxxxxxxxxx

xxxxxxxxxxxxxxxxxxxxxxxxxxxx

xxxxxxxxxxxxxxxxxxxxxxxxxxxx

xxxxxxxxxxxxxxxxxxxxxxxxxxxx

xxxxxxxxxxxxxxxxxxxxxxxxxxxx

xxxxxxxxxxxxxxxxxxxxxxxxxxxx

xxxxxxxxxxxxxxxxxxxxxxxxxxxx

xxxxxxxxxxxxxxxxxxxxxxxxxxxx

xxxxxxxxxxxxxxxxxxxxxxxxxxxx

xxxxxxxxxxxxxxxxxxxxxxxxxxxx

xxxxxxxxxxxxxxxxxxxxxxxxxxxx

xxxxxxxxxxxxxxxxxxxxxxxxxxxx

-END OpenVPN Static key V1-

ENDSECRETKEY

Serverkonfiguration einfügen

Analog fügen wir jetzt die Server-Konfigurationsdatei am Ende in die debug.cfg ein.

# write ‘server.ovpn’ to file

cat > /var/tmp/server.ovpn << ‘END-SERVER-OVPN’

#

dev tun0

dev-node /dev/misc/net/tun

ifconfig 192.168.200.2 192. 168.200.1

tun-mtu 1500

float

mssfix

#Pfad zum Key File

secret /var/tmp/secret.key

#Protokoll auf TCP und Port 1194

proto tcp-server

port 1194

#Protokollierung auf 4

verb 4

#Routen setzen, bei route Subnetz des Clients

# bei push Subnetz des eignen Servers eintragen

route 192.168.1.0 255.255. 255.0

push "route 192.168.100.0 255.255.255.0"

#Verbindung erhalten

ping 15

push "ping 15"

ping-restart 120

push "ping-restart 120"

END-SERVER-OVPN

Vergessen Sie nicht, die cat-Befehle am Anfang und die Label "END SECRETKEY" bzw. "END-SER VER-OVPN" am Ende einzufügen. Diese Zeilen sind dafür zuständig, dass die Box die Information beim Booten in die Dateien "/var/tmp/ secret.key" und "/var/tmp/server. ovpn" schreibt.

Software nachladen

Jetzt ist zwar die Konfiguration der Server-Fritz-Box erledigt, was aber noch fehlt, ist die eigentliche OpenVPN-Software. Die Box lädt sie bei jedem Bootvorgang über den Befehl "wget" in ihr reichlich bemessenes RAM und führt sie dort aus. Für diesen Zweck müssen wir noch ein paar wenige Codezeilen an die debug.cfg anhängen:

# Programmdatei nachladen

wget http://www.tecchannel.de /download/435560/openvpn

# ausführbar machen

chmod +x /var/tmp/openvpn

chmod 0600 /var/tmp/server. ovpn

chmod 0600 /var/tmp/secret.key

# OpenVPN als Daemon starten

./openvpn - config ./server. ovpn &

Nachdem Sie auch diese Zeilen an das Ende der debug.cfg angehängt haben, speichern Sie die Datei im Unix-Format und kopieren Sie sie per FTP in den "/var/tmp"-Ordner Ihrer Box. Der Umweg ist nötig, da sich die Box auch beim direkten Schreibzugriff auf den Flash-Speicher zickig zeigt. Anschließend loggen Sie sich per telnet ein und kopieren die Datei an ihren eigentlichen Bestimmungsort im permanenten Flash-Speicher:

cp /var/tmp/debug.cfg /var/flash/ debug.cfg

Starten Sie dann die Box mit dem Befehl "reboot" neu. Wenn Sie sich jetzt per telnet einloggen und sich alle laufenden Prozesse mit dem Befehl "ps" anzeigen lassen, sollte OpenVPN laufen.

Die Fortsetzung dieses Beitrags finden Sie in einer der kommenden ComputerPartner- Ausgaben.

Zur Startseite