OpenVPN unter FRITZ!Box Fon WLAN 7050 --> Konfiguration

bedni

Neuer User
Mitglied seit
12 Nov 2008
Beiträge
7
Punkte für Reaktionen
0
Punkte
0
Hallo Forummitglieder,

ich habe ein spezifisches Problem bei der Konfiguration von OpenVPN auf meinem Router FRITZ!Box Fon WLAN 7050.

Zunächst folgende Info zur genutzten Hardware/Software:
- FRITZ!Box Fon WLAN 7050
- Firmware-Version 14.04.33 (Kernel 2.6)
- IP des Routers: 192.168.30.1/255.255.255.0
- DHCP Aus
- DNS 192.168.30.1

Ich verfolge folgendes Ziel:
Zu hause managt mein Router mein internes Heimnetz unter der Adresse 192.168.30.0/24. Verschiedene Computer haben feste IP-Adressen und können untereinander kommunizieren.
Mein Wunsch ist es sich mit meinem Notebook von außen her (bspw. vom Büro aus) mit dem OpenVPN Server auf dem Router zu verbinden, sodass dem Notebook (1) eine (virtuelle) IP-Adresse aus dem internen Subnetz (bspw. 192.168.30.220) zugeteilt wird und dieser genauso wie innerhalb der Heimumgebung mit Komponenten des internen Netzwerkes kommunizieren kann. Für mich ist es wichtig, dass nach einem initiierten Tunnelaufbau so gut wie keine Unterschiede vom Standort zu bemerken sind (Adressierung usw.).
Schematisch könnte das wie folgt aussehen:

Code:
 +-------------+                                                +-------------+
 |Router Heim  |--- TUN/TAP ------------------------------------|Router       |
 |Fritz 7050   | Internet                               Internet|  Büro       |
 |192.168.30.1 |  78.52.222.123 (bsp)      139.154.123.111(bsp) | 10.0.10.1   |
 |OpenVPN Serv |                                                |             |
 |             |                                                |             |
 +-------------+                                                +-------------+
   |        |                                                      |      |
   |        |                                                      |      |
   |        PC2 192.168.30.3                                       |      PC4 10.0.10.3 OPENVPN-CLIENT
 PC1                                                             PC3                    --> 192.168.30.220 (TAP/TUN)
 192.168.30.2                                               10.0.10.2

|                        | |                       | |                               |
+------------------------+ +-----------------------+ +-------------------------------+
            |                          |                             |
     HEIMNETZ                      INTERNET                      BÜRONETZ
Gemäß Diskussionen aus verschiedenen Beiträgen hier in diesem und anderen Foren habe ich es geschafft OpenVPN auf dem Fritz Router zum laufen zu bringen.

Hier ein kleiner Auszug aus der Datei debug.cfg:

Code:
cd /var/tmp
# Nötige Dateien vom Webserver holen
wget [url]http://############/openvpn[/url]
wget [url]http://############/brctl[/url]
# Benötigte Dateien lesbar/ausführbar machen
chmod +x /var/tmp/openvpn
chmod +x /var/tmp/brctl
chmod 0600 /var/tmp/secret.key
chmod 0600 /var/tmp/server1.ovpn
chmod 0600 /var/tmp/MAIN.key
chmod 0600 /var/tmp/ipp.txt
chmod 0600 /var/tmp/MAIN.crt
chmod 0600 /var/tmp/dh1024.pem
chmod 0600 /var/tmp/ca.crt
# TAP/TUN virtuell als Datei anlegen
mknod /var/tmp/tun c 10 200 
# OpenVPN als Daemon starten
/var/tmp/openvpn --config /var/tmp/server1.ovpn & 
# TAP bridgen
/var/tmp/brctl addif lan tap0
Die entsprechenden Konfigurations-, Schlüssel- und Zertifikatdateien werden ebenfalls bei jedem Reboot des Routers angelegt.
Die Konfigurationsdatei auf Serverseite sieht wie folgt aus (server1.ovpn):
Code:
# Gewünscht ist es sämtliche Netzwerkinterfaces zu bridgen und
# IP Adressen aus dem internen Netz zu verteilen
server-bridge 192.168.30.1 255.255.255.0 192.168.30.220 192.168.30.220
mode server
tls-server
# Netzwerk Adapter; Ich nutze hier TAP
dev-node /var/tmp/tun
dev tap0
# Feste IP Adresse an bekannte Clients
ifconfig-pool-persist /var/tmp/ipp.txt
# Protokoll und Port
proto udp
port 10201
# Verschlüsselung
dh   /var/tmp/dh1024.pem
ca   /var/tmp/ca.crt
key  /var/tmp/MAIN.key
cert /var/tmp/MAIN.crt
# Clients sollen sich untereinander sehen können
client-to-client
# Der gesamte Internettraffic soll getunnelt und damit auch verschlüsselt werden
push "redirect-gateway"
# DNS-Server mitteilen
push "dhcp-option DNS 192.168.30.1"
# Restliche Konfigurationsanweisungen
keepalive 20 180
verb 4
mute 50
comp-lzo
persist-key
persist-tun
Der OpenVPN Server wird nach einem Reboot des Routers erfolgreich gestartet und lauscht auf Port 10201 auf OpenVPN Clients.

Vom Büro aus möchte ich mich nun mit dem Server verbinden. Mittels meines Windows XP Laptops unter Verwendung von OpenVPN und einer DynDNS Adresse erfolgt zunächst scheinbar eine erfolgreiche Verbindung zum Heimnetz. OpenVPN quittiert mir auf Clientseite die erfolgreiche Initiierung der Verbindung mit der Zuweisung der IP 192.168.30.220.
Auch auf Serverseite ist zu erkennen, dass der Verbindungswunsch des Clients positiv bestätigt worden ist.

Dennoch kann auf der Clientseite fortan weder gesurft noch irgendwelche bestehende Rechner aus dem Heimnetz erreicht werden. Selbst das anpingen des Routers unter 192.168.30.1 schlägt fehl. Vom Server aus wird ein "ping 192.168.30.220" ebenfalls negativ quittiert,

Das Merkwürdige an der ganzen Geschichte ist, dass falls ich unter Einrichtung eines Portforwardings im Fritz-Router auf einen Rechner PC1 im Heimnetz die komplette Serverkonfiguration 1:1 übernehme, keinerlei Probleme erfolgen: Der Client verbindet sich mit dem Server (wie auch zuvor wo der OpenVPN Server im Router vorzufinden war) und erhält wie zuvor die Adresse 192.168.30.220. Darüber hinaus ist der Client fortan unter dieser IP vom internen Netz erreichbar. Jeder einzelne Rechner im internen Heimnetz ist vom Client aus erreichbar, als wäre der Client direkt im Heimnetz angebunden. Genau das ist, was ich unter der Bedingung, dass der OpenVPN Server im Router eingerichtet ist, erreichen will (dies hat mehrere Gründe: Bspw. kann PC1 aufgrund von Energiesparmaßnahmen ausgeschaltet sein während der Router stets angeschaltet ist).

Der Vollständigkeit halber hier die Client Konfiguration:

Code:
# Kennzeichnung als Client
client
# Adressierung des OpenVPN Servers (Fritz Router oder PC1)
port 10201
remote axxxxx.dyndns.org 10201
# Netzwerk Adapter
dev tap
# Protokoll
proto udp
# Verschlüsselung
ca   C:\\Programme\\openvpn\\easy-rsa\\keys\\Fritz\\ca.crt
key  C:\\Programme\\openvpn\\easy-rsa\\keys\\Fritz\\MOBIL.key
cert C:\\Programme\\openvpn\\easy-rsa\\keys\\Fritz\\MOBIL.crt
ns-cert-type server
# Sonstige Konfigurationen
verb 4
mute 50
resolv-retry infinite
float
keepalive 10 60
persist-key
persist-tun
comp-lzo
Jetzt brauche ich dringend eure Hilfe!!!!!! Warum funktioniert das ganze so wie gewünscht wenn der OpenVPN Server im Rechner PC1 integriert ist aber nicht direkt auf dem Fritz Router???
Hat das etwas mit dem TAP Device zu tun??? Wie gesagt, anhand des Logs scheint der Verbindungsaufbau zwischen Client und Server erfolgreich zu sein...

Für jeden Kommentar bin ich dankbar mit der Hoffnung durch eure Hilfe Zeit zu sparen. :p:p:p:p:p:p:p:p:p:p:p:p

Danke,
Arik
 
Moin,

ich vermute ganz stark ein "Bridging Problem":
Dein "tap0" hat in deiner Konfig keine eigene IP, die "normale" IP müsste also auf ein Ping antworten, somit das Bridging essentiell für die Funktion. Also:
- ist "lan" die richtige Bridge? (ifconfig)
- gibt brctl eine Fehlermeldung? Ist "tap0" danach auch wirklich Mitglied dieser Bridge-Gruppe ("brctl show")?
- Versuche mal als einen Schritt, dem tap selbst eine IP zu geben (z.B. 192.168.30.222), die müsstest du auf jeden Fall anpingen können

Jörg
 
Hallo MaxMuster,

> Dein "tap0" hat in deiner Konfig keine eigene IP, die "normale" IP müsste also auf ein Ping antworten, somit das Bridging essentiell für die Funktion.

Muss denn "tap0" wirklich eine eigene IP haben? Schliesslich wird doch das virtuelle Netzwerkinterface mit physischen, die eine IP haben "gebridgt". Ich habe ja erzählt, dass auf einem Windowsrechner (PC1) das ganze mit der selben OpenVPN-Konfigurationsdatei funktioniert (abgesehen von Pfadangaben zu Schlüsseln/Zertifikate). Auf PC1 ist dem virtuellen Netzwerkinterface auch keine IP zugeordnet. Genauer: Der Bridge, welches TAP und physische Netzwerkkarte vereint ist eine IP zugeordnet. Müsste man evt. der Bridge auf dem Router eine IP zuordnen? Wie?

> ist "lan" die richtige Bridge? (ifconfig)

Mein Wissen in dieser Materie ist begrenzt. Aber ein ifconfig ergibt folgendes:
Code:
# ifconfig
dsl       Link encap:Point-Point Protocol
          inet addr:169.254.2.1  P-t-P:169.254.2.1  Mask:255.255.255.255
          UP POINTOPOINT RUNNING NOARP ALLMULTI MULTICAST  MTU:1500  Metric:1
          RX packets:44672 errors:0 dropped:0 overruns:0 frame:0
          TX packets:231804 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:100
          RX bytes:14173065 (13.5 MiB)  TX bytes:21122868 (20.1 MiB)

eth0      Link encap:Ethernet  HWaddr 00:04:0E:66:F9:70
          UP BROADCAST RUNNING ALLMULTI MULTICAST  MTU:1500  Metric:1
          RX packets:214291 errors:0 dropped:59 overruns:0 frame:59
          TX packets:310344 errors:10 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:256
          RX bytes:21656578 (20.6 MiB)  TX bytes:406626004 (387.7 MiB)

eth1      Link encap:Ethernet  HWaddr 00:04:0E:66:F9:71
          UP BROADCAST ALLMULTI MULTICAST  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:256
          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)
          Base address:0x2800

lan       Link encap:Ethernet  HWaddr 00:04:0E:66:F9:70
          inet addr:192.168.30.1  Bcast:192.168.30.255  Mask:255.255.255.0
          UP BROADCAST RUNNING ALLMULTI MULTICAST  MTU:1500  Metric:1
          RX packets:269160 errors:0 dropped:0 overruns:0 frame:0
          TX packets:48885 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:24660677 (23.5 MiB)  TX bytes:18749690 (17.8 MiB)

lan:0     Link encap:Ethernet  HWaddr 00:04:0E:66:F9:70
          inet addr:169.254.1.1  Bcast:169.254.255.255  Mask:255.255.0.0
          UP BROADCAST RUNNING ALLMULTI MULTICAST  MTU:1500  Metric:1

lo        Link encap:Local Loopback
          inet addr:127.0.0.1  Mask:255.0.0.0
          UP LOOPBACK RUNNING  MTU:16436  Metric:1
          RX packets:1910 errors:0 dropped:0 overruns:0 frame:0
          TX packets:1910 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:134627 (131.4 KiB)  TX bytes:134627 (131.4 KiB)

tiwlan0   Link encap:Ethernet  HWaddr 00:04:0E:66:F9:72
          UP BROADCAST RUNNING ALLMULTI MULTICAST  MTU:1500  Metric:1
          RX packets:57094 errors:0 dropped:0 overruns:0 frame:0
          TX packets:85665 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:6969946 (6.6 MiB)  TX bytes:35307474 (33.6 MiB)

usbrndis  Link encap:Ethernet  HWaddr 00:04:0E:66:F9:74
          UP BROADCAST ALLMULTI MULTICAST  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)

wdsdw0    Link encap:Ethernet  HWaddr 00:04:0E:66:F9:72
          UP BROADCAST RUNNING ALLMULTI MULTICAST  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:35729 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:0 (0.0 B)  TX bytes:3315950 (3.1 MiB)

wdsdw1    Link encap:Ethernet  HWaddr 00:04:0E:66:F9:72
          UP BROADCAST RUNNING ALLMULTI MULTICAST  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:35729 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:0 (0.0 B)  TX bytes:3315950 (3.1 MiB)

wdsdw2    Link encap:Ethernet  HWaddr 00:04:0E:66:F9:72
          UP BROADCAST RUNNING ALLMULTI MULTICAST  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:35729 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:0 (0.0 B)  TX bytes:3315738 (3.1 MiB)

wdsdw3    Link encap:Ethernet  HWaddr 00:04:0E:66:F9:72
          UP BROADCAST RUNNING ALLMULTI MULTICAST  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:35729 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:0 (0.0 B)  TX bytes:3315226 (3.1 MiB)

wdsup0    Link encap:Ethernet  HWaddr 00:04:0E:66:F9:72
          UP BROADCAST RUNNING ALLMULTI MULTICAST  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:35729 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:0 (0.0 B)  TX bytes:3315388 (3.1 MiB)

#
- Zur Info (auch wenn es möglicherweise keine Rolle spielt):
Über eth0 verläuft ein Netzwerkkabel zu einem Switch, welcher alle Rechner im Heimnetz vereint.
- lan hat die IP 192.168.30.1 zugewiesen bekommen.
- Müsste hier nicht auch tap0 aufgeführt sein?

> gibt brctl eine Fehlermeldung?
Nein. Nach Eingabe von "/var/tmp/brctl addif lan tap0" gibt es keine Fehlermeldung, sofern dieser Aufruf nach dem Starten des OpenVPN Servers erfolgt (s.u.).

> Ist "tap0" danach auch wirklich Mitglied dieser Bridge-Gruppe ("brctl show")?
Es scheint: Ja. Folgendes gibt brctl show aus:
Code:
# /var/tmp/brctl show
bridge name     bridge id               STP enabled     interfaces
lan             8000.00040e66f970       no              eth0
                                                        usbrndis
                                                        eth1
                                                        tiwlan0
                                                        wdsup0
                                                        wdsdw0
                                                        wdsdw1
                                                        wdsdw2
                                                        wdsdw3
                                                        tap0
#
Was mir als Laie auffällt ist, dass lan nur als "bridge name" gekennzeichnet ist aber nicht im Bereich "interfaces" wiederzufinden ist. tap0 scheint enthalten zu sein (natürlich nach dem Aufruf von "/var/tmp/brctl addif lan tap0").
Kleine Bemerkung: Wenn ich "/var/tmp/brctl addif lan tap0" aufrufe, bevor ich OpenVPN starte ("/var/tmp/openvpn --config /var/tmp/server1.ovpn &") erhalte ich eine Fehlermeldung: "interface tap0 does not exist!"

> Versuche mal als einen Schritt, dem tap selbst eine IP zu geben (z.B. 192.168.30.222) [...]
Wie mache ich das? Sprechen wir vom tap auf Server Seite?

Danke herzlichst mit der Hoffnung auf weitere Hilfe,
Arik
 
Hi nochmal,

mit der Hoffnung auf Basis der Diskussion mit MaxMuster eine Lösung zu finden noch eine kleine Anfrage:

Wie würdet ihr die Konfiguration auf Server- und Clientseite vornehmen, wenn ihr mein ziel verfolgen würdet (oben beschrieben: IP Adresse 192.168.30.x ausserhalb des Netzwerks usw.)?

Grüsse,
Arik
 
Ist an sich schon o.k. so mit dem tap Interface.

Die IP vergibst du entweder in der Config ("ifconfig 192.168.30.222 255.255.255.0") oder auf der Box mit "ifconfig tap0 192.168.30.222" (nach dem Start vom openvpn, sonst ist das Interface nicht da)

Ach so: vielleicht vor dem brctl und so: "ifconfig tap0 up"


Jörg
 
Leider sind keine Änderungen zu beobachten. Nach der Zuweisung der IP Adresse 192.168.30.222 an tap0 kann diese Adresse von jedem beliebigen Rechner im Heimnetz angepingt werden - aber das ist dann schon alles :-(

Vom entfernten Rechner sind weiterhin nach erfolgten (und erfolgreichen) Verbindungsaufbau keine Adressen erreichbar (auch keine Webadressen).

:(:(:(
 
Also der verbundene Client kann die 192.168.30.222 nicht erreichen?
Könntest du dann bitte auf dem Client direkt nach dem Ping mal ein "arp -a" machen? Taucht da die 192.168.30.222 auf?

Jörg
 
Zuletzt bearbeitet:
Hallo Jörg/MaxMuster,

ich habs. Mit deiner Hilfe funktioniert es nun, jedoch mit einer kleinen Einschränkung:

Da OpenVPN mit "&" aufgerufen wird (/var/tmp/openvpn --config /var/tmp/server1.ovpn&) wird in dieser Zeile ein paralleler Prozess gestartet mit der Folge, dass nachfolgende Anweisungen
Code:
ifconfig tap0 up # NEU
ifconfig tap0 192.168.30.222 #NEU
/var/tmp/brctl addif lan tap0
je nach Zufall vor oder nach dem Start des OpenVPN Servers aufgerufen werden. Im Falle eines vorherigen Aufrufs gibt es noch kein tap0 und somit auch keine Bridge.

Wie könnte ich die nachfolgenden Anweisungen verzögern sodass diese erst dann aufgerufen werden, wenn der OpenVPN Server läuft (notfalls eine Wait Anweisung)? Lasse ich "&" vor dem OpenVPN Aufruf weg, werden die nachfolgende Anweisungen erst gar nicht ausgeführt, da OpenVPN blockiert.

Grüsse,
Arik
 
"sleep" ist der Trick zum Warten ;-)

Ich würde mal sowas versuchen:

Code:
...
# OpenVPN als Daemon starten
/var/tmp/openvpn --config /var/tmp/server1.ovpn & 
# 2 Sekunden warten, ggf anpassen
sleep 2
ifconfig tap0 192.168.30.222 up #NEU
/var/tmp/brctl addif lan tap0
# TAP bridgen
/var/tmp/brctl addif lan tap0

Statt des "&" nach dem Aufruf könntest du übrigens auch ein "daemon" in die Config einbringen, dann würde das openvpn automatisch im Hintergrund laufen...


Jörg
 
Danke dir:p:p:p:p. Jetzt scheint es gut zu laufen. Dank deiner Hilfe habe ich es endlich geschafft. Da kann man wirklich ein Lob aussprechen.

Nochmals viele Grüsse,
Arik
 
Gerne !

Du könntest es noch etwas "Besser" machen, indem du z.B. bis zu x-mal eine Sekunde wartest, bis das Interface tap0 da ist:

Code:
...
# OpenVPN als Daemon starten
/var/tmp/openvpn --config /var/tmp/server1.ovpn & 
# 5 mal 1 Sekunde warten, bis tap0 existiert
count=0
while [ $count -le 5 ] &&  ! ifconfig tap0 > /dev/null 2> /dev/null ; do 
        sleep 1
        count=$(( $count + 1 ))
done
ifconfig tap0 192.168.30.222 up #NEU
/var/tmp/brctl addif lan tap0
# TAP bridgen
/var/tmp/brctl addif lan tap0
...
 
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.