Openvpn : Routing Problem seit TAP

lynckmeister

Neuer User
Mitglied seit
4 Apr 2006
Beiträge
140
Punkte für Reaktionen
0
Punkte
0
Hallo Forum ,

ich habe wegen upnp Broadcasts mein funktionierendes VPN auf TAP umgestellt, und jetzt klappt was mit dem Routing nicht mehr:

Standort1 : 192.168.1.0/24 VPNServer: 192.168.1.81
Standort2 : 192.168.178.0/24 VPNClient 192.168.178.7

Das Tapdevice hat 10.0.0.0/24 ( auf beiden Seiten)

Wenn ich vom Server den Client selbst pinge , geht das ohne Probleme.
Wenn ich vom Server aber einen Rechner im Clientnetz (Standort2) pingen möchte kommt auf dem Server:
...
From 10.0.0.1 icmp_seq=7 Destination Host Unreachable
From 10.0.0.1 icmp_seq=8 Destination Host Unreachable
...

Und auf dem Client sieht man im Tcpdump vom TAP Device :

...
00:45:33.654486 arp who-has 192.168.178.125 tell 10.0.0.1
00:45:34.547558 arp who-has 192.168.178.125 tell 10.0.0.1
00:45:35.549173 arp who-has 192.168.178.125 tell 10.0.0.1
00:45:38.249581 arp who-has 192.168.178.125 tell 10.0.0.1
...

Der Routing Table sieht auf dem Client so aus :

88.69.2XX.21 * 255.255.255.255 UH 2 0 0 dsl
192.168.180.1 * 255.255.255.255 UH 2 0 0 dsl
192.168.180.2 * 255.255.255.255 UH 2 0 0 dsl
192.168.178.0 * 255.255.255.0 U 0 0 0 lan
10.0.0.0 * 255.255.255.0 U 0 0 0 tap0
192.168.1.0 localhost 255.255.255.0 UG 0 0 0 tap0
169.254.0.0 * 255.255.0.0 U 0 0 0 lan
default * 0.0.0.0 U 2 0 0 dsl



Also eigentlich gibts doch routen fuer alle Netze , aber offensichtlich weiss die Box ( client) nicht, wie sie die ankommenden Pakete vom Tap ins lan schickt oder so ..

für eine idee wär ich sehr dankbar..

Grüße

Filip
 
Nö, die Route ist falsch. Auf dem Client musst du eine Route für das Netz 192.168.1.0/24 einrichten und das Gateway 10.0.0.x (Server-IP vom Tap-Netz) nehmen. Auf dem Server eine Route für das Netz 192.168.178.0/24 mit der Client-IP aus dem Tap-Netz als Gateway.
 
Sollten bei TAP nicht Standort1 und Standort2 im gleichen Subnetz liegen?
 
Nö, die Route ist falsch. Auf dem Client musst du eine Route für das Netz 192.168.1.0/24 einrichten und das Gateway 10.0.0.x (Server-IP vom Tap-Netz) nehmen. Auf dem Server eine Route für das Netz 192.168.178.0/24 mit der Client-IP aus dem Tap-Netz als Gateway.

Also ich habe das Netz ja wie oben schon zu sehen in meinem Client Routing :

Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
88.69.2XX.21 * 255.255.255.255 UH 2 0 0 dsl
192.168.180.1 * 255.255.255.255 UH 2 0 0 dsl
192.168.180.2 * 255.255.255.255 UH 2 0 0 dsl
192.168.178.0 * 255.255.255.0 U 0 0 0 lan
10.0.0.0 * 255.255.255.0 U 0 0 0 tap0
DA IST ES ja...:

192.168.1.0 localhost 255.255.255.0 UG 0 0 0 tap0


169.254.0.0 * 255.255.0.0 U 0 0 0 lan
default * 0.0.0.0 U 2 0 0 dsl

ich kann es wegnehmen mit :
route del -net 192.168.1.0 netmask 255.255.255.0 gw 10.0.0.1
und genauso wieder reinschreiben... als gw wird immer localhost geschrieben... auf server seite ist das netzt auch da ( wie von dir vorgeschlagen) , da scheint ja auch alles richtig zu laufen...

grüße
Filip
 
Nee, dat laeuft definitiv nicht richtig, denn Localhost = 127.0.0.1 != 10.0.0.1
Der Route-Del sollte ebenfalls so nicht funktionieren, da das Gateway localhost und nicht 10.0.0.1 ist bei der eingetragenen Route. Was ist denn die Ausgabe von "route -n", um auszuschliessen das du nur eine vermurkste hosts hast.

Allerdings verstehe ich auch deine Ursprungsproblematik nicht wirklich. Du willst das UPnP-Broadcasts gehen, aber wieso machst du dann trotzdem mit dem TAP lediglich eine weitere Broadcast-Domain auf? Broadcasts laufen jetzt ja nur im 10er Netz zwischen den beiden Tunnelenden hin- und her, gehen von den Tunnelenden aber nicht in ihr jeweiliges Netz. Broadcast aus dem 192.168.178er bleiben also auch weiterhin nur in dem, genauso wie die aus dem 192.168.0er dort bleiben. Wenn du eine Broadcast-Domain ueber beide Standorte willst musst du den Tunnel schon auf beiden Seiten ins lokale Netz bridgen, und somit in allen Netzbereichen incl. Tunnel Adressen aus dem gleichen Subnetz nutzen.
 
[Edit frank_m24: Sinnfreies Vollzitat vom Beitrag direkt darüber gelöscht. Lies noch mal die Forumregeln.]

Also mit -n siehts so aus :

Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
88.69.237.21 0.0.0.0 255.255.255.255 UH 2 0 0 dsl
192.168.180.1 0.0.0.0 255.255.255.255 UH 2 0 0 dsl
192.168.180.2 0.0.0.0 255.255.255.255 UH 2 0 0 dsl
192.168.178.0 0.0.0.0 255.255.255.0 U 0 0 0 lan
10.0.0.0 0.0.0.0 255.255.255.0 U 0 0 0 tap0
192.168.1.0 10.0.0.1 255.255.255.0 UG 0 0 0 tap0
169.254.0.0 0.0.0.0 255.255.0.0 U 0 0 0 lan
0.0.0.0 0.0.0.0 0.0.0.0 U 2 0 0 dsl


aber ein ping localhost gibt wieder:
PING localhost (127.0.0.1): 56 data bytes
64 bytes from 127.0.0.1: seq=0 ttl=64 time=0.551 ms

was wohl zeigt das host ok ist...
keine Ahnung was da schief geht.

aber was du schreibst ist natuerlich interessant: ich kann also
meinen mediaserver im netz 192.168.1.0 nicht mit meinem mediaplayer in 192.168.178.0 betreiben ... ok , in dem fall brauch ich wohl auich nicht mehr weiterachen... bzw ich muesste mein 192.168.178.0 netz auf 192.168.1.0 aendern und dann gehts ?
hmm koennt ich eigentlich auch machen...
 
Die hosts kann schon noch falsch sein, da du den gleichen Hostname dort auch 2 Mal eintragen koenntest mit verschiedenen IPs. Beim ping nimmt er dann den ersten Match den er findet. Oder ein Nameserver liefert die falsche Antwort. Mit den Eintraegen sollte das Routing eigentlich klappen, vorausgesetzt natuerlich 10.0.0.1 ist die IP vom Server und nicht von Fritzchen.

Genau, fuer die Loesung deines eigentlichen Problems musst du Fritzchen z.B. auf 192.168.0.x umstellen und anschliessend auf der Fritz das tap0 per brctl mit in die Bridge "lan" haengen. Auf Serverseite muss ebenfalls eine Bridge erstellt werden, die das Ethernet-Interface vom Server enthaelt, sowie das TAP-Device, ausser du willst vom Fritz-Netz aus nur bis zum Server kommen und brauchst keinen Rechner aus dem Server-Netz. In dem Fall bekommt der Server eine IP aus dem Fritz-Netz und die Fritz bleibt in ihrem Netz (aber natuerlich mit erweiterter Bridge).
Sofern du aber eine 7270 mit aktueller Firmware hast und auf der WLAN nutzt muss ich dich warnen... wenn du das TAP mit in die Bridge aufnimmst wird die Box einen Reset machen sobald ein Paket vom WLAN uebers TAP wieder raus geht. Ist ein Bug den wir in einem anderen Thread gerade diskutieren.
 
Genau, fuer die Loesung deines eigentlichen Problems musst du Fritzchen z.B. auf 192.168.0.x umstellen und anschliessend auf der Fritz das tap0 per brctl mit in die Bridge "lan" haengen. Auf Serverseite muss ebenfalls eine Bridge erstellt werden, die das Ethernet-Interface vom Server enthaelt, sowie das TAP-Device, ausser du willst vom Fritz-Netz aus nur bis zum Server kommen und brauchst keinen Rechner aus dem Server-Netz. In dem Fall bekommt der Server eine IP aus dem Fritz-Netz und die Fritz bleibt in ihrem Netz (aber natuerlich mit erweiterter Bridge).
Sofern du aber eine 7270 mit aktueller Firmware hast und auf der WLAN nutzt muss ich dich warnen... wenn du das TAP mit in die Bridge aufnimmst wird die Box einen Reset machen sobald ein Paket vom WLAN uebers TAP wieder raus geht. Ist ein Bug den wir in einem anderen Thread gerade diskutieren.[/QUOTE]

danke fuer die umfassende hilfestellung. ich wollt das heut mal probieren mir ist allerdings nicht ganz klar, wie das laueft mit der bridge. du schreibst "anschliessend auf der Fritz das tap0 per brctl mit in die Bridge "lan" haengen"
wie geht das ? neben dem syntax versteh ich grad nicht, wie man ein device mit in die bridge haengt. ist das tap0 nicht die bridge?

vielen dank

gruesse

filip
 
... bei den aktuellen Images macht das Startscript von OpenVPN das automatisch: Wenn du eine Konfig mit "TAP" anlegst, wird das mit dem LAN gebrückt, wenn das Programm "brctl" auf der Box vorhanden ist...

TAP ist ein virtuelles Brücken-Interface. Das ist aber ohne weitere Aktionen trotzdem "isoliert" und muss mit deinem LAN "gebrückt" werden, damit es Pakete von/nach dort "weiterleitet".

Jörg
 
also ich habs mittlerweile geklaer is ja nicht so schwer, also ich hab wohl euren bug hier auch , wenn ich den befehl brctl adif lan tap0 eingebe ( von dem laptop liegend auf der couch mit waln verbunden über putty und so) dann raucht die kiste ab.
gibts da schon was neues von eurer diskussion? oder ist bridge damit momentan nicht möglich ?

gruesse

filip


aber nochmal ne frage zum verstaendnis:

ich habe als tap adressse folgendes festgelegt :
server 10.0.0.0 255.255.255.0

das netz was ich bruecken will zwischen den beiden vpn stellen hat die 192.168.1.0

geht das so , oder muss das tap device auch in dem 192er bereich liegen ??


jetzt nochmal ein bisschen gelesen :
ich hab jetzt in der server.conf folgendes eingetragen :
server-bridge 192.168.1.0 255.255.255.0 192.168.1.100 192.168.1.110
push "route-gateway 192.168.1.0"


wenn ich jetzt die fribo neu starte erhalte ich folgendes :





Stopping openvpn ... done.
Starting openvpn ... done.
Incorrect number of arguments for command
Usage: brctl addif <bridge> <device> add interface to bridge


und mein tap device hat jetzt die nr :
192.168.1.100

scheint soweit zu gehen , nur pingen kann ich nix...
 
Zuletzt bearbeitet:
- Es gibt noch nichts neues
- Du kannst zwar eine Brücke zwischen "verschiedenen" Netzen machen, aber das ist vermutlich nicht das, was du willst. Die Geräte "sehen" sich dann zwar über die Broadcasts, können aber trotzdem nicht kommunizieren, weil sie nicht wissen, wie sie die Geräte erreichen können. Das wäre so, als wenn du einen PC mit einer "falschen IP" in dein LAN hängst....

Jörg
 
TAP ist keine Bridge. TAP ist ein normales Interface wie ETH0 etc. Eine Bridge ist ein virtuelles Interface bestehend aus mehreren anderen Interfaces. Eine Bridge allein macht erstmal gar nichts, erst wenn man Interfaces in sie einhängt schickt sie alles was von einem kommt an die anderen weiter (grob gesagt, in Wirklichkeit etwas intelligenter).
Eine IP-Adresse bekommt dabei dann auch nur noch das Bridge-Interface, also LAN. TAP, ETH0, etc benötigen keine und sollten auch keine haben, da die alleinstehend gar nicht genutzt werden sollen. Bei OpenVPN musste natürlich eine IP angeben, und zwar die IP die die Fritzbox in deinem lokalen LAN hat! Auf dem Server gibst du die IP an die der Server im lokalen LAN hat. Beide IPs müssen natürlich im gleichen Subnet liegen. Du musst weder irgendwelche Routen setzen noch irgendwelche Routen pushen, es benötigt keine Route, da du ja ein einziges Netz hast!
 
[Edit frank_m24: Sinnfreies Vollzitat vom Beitrag direkt darüber gelöscht. Lies noch mal die Forumregeln.]

jap im prinzip klar. ich habe also meinem server eine bridge verpasst und seine eth0 und tap0 reingehaengt und dasselbe bei der fribo , dort war bereits ne bridge angelegt, allerdings war das tap0 nicht drin ( wohl aufgrund dieser fehlermeldung siehe oben ) also hab ichs reingehaengt ... ABER : nix pingbar.......... reset hats aber keinen mehr gegeben. ich hab übrigens ne 7240 ...
 
dann gib mal die "ifconfig"-Ausgabe von tap0 (Server und Fritz), eth0 (Server und Fritz), lan (Fritz) sowie dem Bridge-Interface auf dem Server
 
Moin,

bitte zitiere nicht immer den ganzen Beitrag direkt vor deinem. das macht keinen Sinn und wird nicht gern gesehen!

Wegen der Fehlermeldung: Welche Freetz-Version nutzt du denn? Ab Revision 3092 ist ein Fehler dazu behoben.

Was ergibt denn ein "brctl show lan"?

Jörg
 
dann gib mal die "ifconfig"-Ausgabe von tap0 (Server und Fritz), eth0 (Server und Fritz), lan (Fritz) sowie dem Bridge-Interface auf dem Server

so jetzt bin ich wieder dran , hier kommen die Ausgaben :

ifconfig ( fritzbox):
[Edit frank_m24: Bitte benutzt CODE Tags für solche Ausgaben.]

Code:
eth0      Link encap:Ethernet  HWaddr 00:1F:3F:E7:82:A5
          UP BROADCAST RUNNING ALLMULTI MULTICAST  MTU:1500  Metric:1
          RX packets:22786 errors:0 dropped:0 overruns:0 frame:0
          TX packets:32 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:128
          RX bytes:3918742 (3.7 MiB)  TX bytes:11611 (11.3 KiB)

lan       Link encap:Ethernet  HWaddr 00:1F:3F:E7:82:A5
          inet addr:192.168.1.7  Bcast:192.168.1.255  Mask:255.255.255.0
          UP BROADCAST RUNNING ALLMULTI MULTICAST  MTU:1500  Metric:1
          RX packets:151920 errors:0 dropped:0 overruns:0 frame:0
          TX packets:84845 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:28426028 (27.1 MiB)  TX bytes:31661593 (30.1 MiB)

lan:0     Link encap:Ethernet  HWaddr 00:1F:3F:E7:82:A5
          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



tap0      Link encap:Ethernet  HWaddr 8A:2F:7F:88:51:AA
          inet addr:192.168.1.101  Bcast:192.168.1.255  Mask:255.255.255.0
          UP BROADCAST RUNNING ALLMULTI MULTICAST  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:16 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:100
          RX bytes:0 (0.0 B)  TX bytes:4501 (4.3 KiB)

ath0      Link encap:Ethernet  HWaddr 00:1F:3F:D3:50:55
          UP BROADCAST RUNNING ALLMULTI MULTICAST  MTU:2290  Metric:1
          RX packets:151911 errors:0 dropped:0 overruns:0 frame:0
          TX packets:152537 errors:0 dropped:18 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:30552728 (29.1 MiB)  TX bytes:74626557 (71.1 MiB)
und brctl von der fritzbox :
Code:
/var/mod/root # brctl show
bridge name     bridge id               STP enabled     interfaces
lan             8000.001f3fe782a5       no              ath0
test            8000.001f3fe782a5       no              eth0
                                                                   tap0
die bridge test habe ich mir manuell selbst angelegt.....


der vollstaendigkeit noch die Ausgabe von route (fritzbox):
Code:
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
88.xx.xxx.69    *               255.255.255.255 UH    2      0        0 dsl
192.168.180.1   *               255.255.255.255 UH    2      0        0 dsl
192.168.180.2   *               255.255.255.255 UH    2      0        0 dsl
192.168.1.0     *               255.255.255.0   U     0      0        0 lan
192.168.1.0     *               255.255.255.0   U     0      0        0 tap0
169.254.0.0     *               255.255.0.0     U     0      0        0 lan
default         *               0.0.0.0         U     2      0        0 dsl

auf dem server sieht es so aus :

(ifconfig):
Code:
eth5      Protokoll:Ethernet  Hardware Adresse 00:0C:29:6B:5B:2D
          inet Adresse:192.168.1.81  Bcast:192.168.1.255  Maske:255.255.255.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:1003500 errors:0 dropped:0 overruns:0 frame:0
          TX packets:765554 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 Sendewarteschlangenlänge:1000
          RX bytes:430128361 (410.2 Mb)  TX bytes:302613093 (288.5 Mb)
          Interrupt:177 Basisadresse:0x1400
das tap0 wird nicht abgezeigt, es ist aber da !

Code:
brctl show : 

bridge name     bridge id               STP enabled     interfaces
lan             8000.000c296b5b2d       no              eth5
                                                                    tap0
wg8:/etc/openvpn # route
Kernel IP Routentabelle
Ziel            Router          Genmask         Flags Metric Ref    Use Iface
192.168.1.0     *               255.255.255.0   U     0      0        0 eth5
link-local      *               255.255.0.0     U     0      0        0 eth5
loopback        *               255.0.0.0       U     0      0        0 lo
default         wg28            0.0.0.0         UG    0      0        0 eth5
So , jetzt bin ich mal gespannt was euch auffällt ;))

vielen Dank für eure Hilfe...

Grüße

Filip
 
Warum gibt es auf der Kiste mit nur einer NIC (eth5) eine Bridge?
 
also ich hab es jetzt noch mal explizit ohne bridge auf dem server probiert, und beobachte ( man weiss ja nie ;) )

1. hab ich festgestellt, dass mein tap0 device nicht zu sehen ist, weil es down ist. wieso wird es nicht auf up gestellt vom openvpn ? ich hab das mal gemacht und ihm auch ne ip zugewiesen die im raum liegt also 192.168.1.45.

2. ich kann zwar von der fritzbox noch nicht pingen, aber wenn ich auf dem server auf das nun das tap0 interface dumpe sehe ich immerhin schon die pings :
20:58:14.638738 IP 192.168.1.7 > 192.168.1.81: ICMP echo request, id 22279, seq 37, length 64
20:58:15.249904 IP 192.168.1.7 > 192.168.1.81: ICMP echo request, id 22279, seq 38, length 64
20:58:16.259907 IP 192.168.1.7 > 192.168.1.81: ICMP echo request, id 22279, seq 39, length 64
20:58:16.591679 IP 192.168.1.7 > 192.168.1.81: ICMP echo request, id 22279, seq 40, length 64
20:58:17.510871 IP 192.168.1.7 > 192.168.1.81: ICMP echo request, id 22279, seq 41, length 64

er haelt es wohl nur fuer unnötig zu antworten.. woran liegt das nun wieder?

wenn ich allerdings eine weitere ip im lan des server anpinge erscheint :
21:02:57.116735 arp who-has 192.168.1.79 tell 192.168.1.7
21:02:57.116735 arp who-has 192.168.1.79 tell 192.168.1.7
21:02:57.116735 arp who-has 192.168.1.79 tell 192.168.1.7
21:02:57.116735 arp who-has 192.168.1.79 tell 192.168.1.7
21:02:57.116735 arp who-has 192.168.1.79 tell 192.168.1.7


als wäre ne route nicht bekannt... wie kann das sein ? ist doch im selben netz ... ( die 1.7 ist die fritzbox und die 1.79 eine maschine im lan des servers)


Grüße

Filip
 
Wie schaut das bei dir überhaupt aus?

VPN-Server <> Router <> Internet <> Router <> VPN-Client (Fritz) oder nur Fritz?

Gib dem TAP des Server mal die 10.0.0.1 und dem Client(Fritz) die 10.0.0.2 push "route-gateway 10.0.0.1" und prüfen ob die Kommunikation zwischen den beiden hin und zurück funktioniert. Dann teilst du ganz genau mit was noch möglich sein soll.
 

Statistik des Forums

Themen
246,195
Beiträge
2,247,819
Mitglieder
373,748
Neuestes Mitglied
fanti88
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.