OpenVPN Bridge Client leitet Traffic nicht weiter

tori

Cadet 4th Year
Registriert
Apr. 2009
Beiträge
75
Ich versuche gerade OpenVPN im Bridge-Mode einzurichten um zwei Netzwerke zu verbinden. Beide Netzwerke nutzen dabei das gleiche Subnetz ohne überschneidende IPs, also kommt eigentlich nur Bridge-Mode infrage.

Ich habe mich an der offiziellen Anleitung orientiert, allerdings tauchen nach abgeschlossenem Setup ein paar Fehler auf:
  1. Ping von VM3 an VM4 (192.168.178.40) und umgekehrt gibt "Destination Host Unreachable". Auf VM2s tap0 und VM1s tap0 kommen ARP-Requests vorbei, aber keine Antworten. Auf VM1s eth2 passiert nichts.
  2. Ping von VM3 an VM1 (192.168.178.10) verliert alle Pakete ohne Fehlermeldung. Die Pings kommen bei VM2 und VM1 vorbei, die Antworten werden von VM1 nicht gesendet. Stattdessen macht die VM ARP Requests auf eth2.
  3. Ping von VM1 an VM2 (192.168.178.20) ergibt ARP-Requests auf VM1s eth2, aber nicht auf tap0.
Geprüft habe ich ob Pakete auf einem Interface ankommen immter mit tcpdump -i <interface> -qtnl ohne Filter.

VM1 benutzt also immer eth2 anstatt Traffic auf eth2 und tun0 zu versenden, sodass alle Netzwerksegmente erreicht werden.
Außerdem spiegelt VM1 den Traffic von tun0 nicht auf eth2, sodass VM4 erreichbar wäre.

In den Logfiles steht nichts, ich benutze verb 3.

Mein Testsetup besteht aus 4 VMs, alle Debian 6, alle unter VirtualBox:
Code:
--------------------------                          -----------------
|   VM 2                 |                          | VM 3          |
|OVPN-Server             | Internal Network 1       |IP: (eth2)     |
|eth1: 192.168.178.20    |--------------------------|192.168.178.30 |
|eth2: 192.168.56.20     | 192.168.178.0/24         |               |
|tap0: (ethernet)        |                          |               |
|br0: ...178.20 (on eth1)|                          |               |
--------------------------                          -----------------
          | |
          | | Host-Only Network: 192.168.56.0/24
          | |
--------------------------                          -----------------
|   VM 1                 |                          | VM 4          |
|OVPN-Client             | Internal Network 3       |IP: (eth3)     |
|eth2: 192.168.178.10    |--------------------------|192.168.178.40 |
|eth3: 192.168.56.10     | 192.168.178.0/24         |               |
|tap0: 192.168.178.128*  |                          |               |
--------------------------                          -----------------
*) zugewiesen vom OpenVPN-Server
server.conf:
Code:
local 192.168.56.20
port 1194
proto udp
dev tap
server-bridge 192.168.178.20 255.255.255.0 192.168.178.128 192.168.178.254
dh /etc/openvpn/keys/dh1024.pem
ca /etc/openvpn/keys/ca.crt
key /etc/openvpn/keys/server01.key
cert /etc/openvpn/keys/server01.crt
ifconfig-pool-persist ipp.txt # file initially empty
keepalive 10 60
comp-lzo
client.conf:
Code:
port 1194
proto udp
dev tap
client
remote 192.168.56.20
ca /root/easyrsa/toclient/ca.crt
key /root/easyrsa/toclient/vpnclient01.key
cert /root/easyrsa/toclient/vpnclient01.crt
comp-lzo
Startup-Skript: http://openvpn.net/index.php/open-s...laneous/76-ethernet-bridging.html#linuxscript
 
Hi,

versuche mal TCP statt UDP.

War bei mir auch so. Ping geht glaube ich nicht über udp. Ist aber nur ne Vermutung :)
Vielleicht weiß jemand anderes mehr?

Gruß
 
Hab's versucht, hat nichts geändert. Hätte mich auch gewundert, aber mich wachsender Verzweiflung probiert man halt alles;)

Zusatzinfo: VM2 kann VM1 auch nicht unter der 128er IP erreichen, die OpenVPN zugewiesen hat.

//edit1: Ich habe auch mal ohne ip-pool ausprobiert, also mit "server mode" und "tls-server" aber da zeigt sich das gleiche Bild.
 
Zuletzt bearbeitet:
ah da war doch noch was hmm...

der Server muss das Privatenetz doch auch kennen. Also in deinem Fall die 192.168.178.0/24.
Ich glaube in server.conf muss sowas noch
Code:
push "route  192.168.178.0 255.255.255.0"

Aber wie immer nur ne Vermutung. Ist schon eine Weile her, als ich mein VPN konfiguriert habe.

greez
 
Danke, werde ich als nächste mal ausprobieren.

Ich hatte noch eine andere Idee: Bisher scheitert alles an VM1. Genauer gesagt daran, dass VM1s eth2 und tun0 nicht den identischen Traffic senden und empfangen. Wäre das der Fall würden die drei Sachen mit dem Ping im ersten Post funktionieren. Jetzt habe ich eine Anleitung gefunden wie man einen Port spiegelt, sodass der ganze Traffic kopiert wird:
http://www.bjou.de/blog/2008/05/howto-copyteeclone-network-traffic-using-iptables/
Der eigentliche Zweck davon ist Debugging (durch Sniffen, Switches haben auch manchmal solche Ports...)

Der Haken: Das funktioniert nur mit stateless Traffic, also nur UDP. Kennt jemand eine Möglichkeit wie das mit TCP klappen kann? Ich will ja später für das Setup haben dass die VPN-Brücke komplett transparent ist und dass die Rechner das nicht merken. Wenn da TCP im LAN nicht funktioniert wäre das schon nicht so toll.

//edit1: Also der Befehl in der server.conf funktioniert leider nicht. Der Client sagt dann
OPTIONS: IMPORT: route options modified
ROUTE: default_gateway=UNDEF
OpenVPN ROUTE: OpenVPN needs a gateway parameter for a --route option and no default was specified by either [...]
OpenVPN ROUTE: failed to parse/resolve route for host/network: 192.168.178.0
...

Die Routingtabelle auf dem Client hat sich dadurch auch nicht verändert. Prinzipiell ist das Problem ja auch nicht dass der Traffic nicht ankommt, sondern dass er nicht auf allen Interfaces ankommt. Und Traffic kopieren kann Routing IIRC nicht.... (siehe mein Vorschlag oben)
 
Zuletzt bearbeitet:
ok, da ich nie den Bridgemodus benutzt habe, weiß ich jetzt leider nicht mehr weiter.
Aber dann sieht es so aus, als ob zwischen eth und tap etwas verloren geht. Vielleicht stimmt was an der bridge nicht (script).

Probieren könntest mal ein Broadcast zu senden, vielleicht kommt das über die Bridge.
 
urgle schrieb:
Vielleicht stimmt was an der bridge nicht (script).
Um genau das auszuschließen habe ich mich sehr eng an die Anleitung auf der OpenVPN Website gehalten. Kann ich somit zwar trotzdem nicht ausschließen, ich würde aber eher denken dass der Fehler auf dem Client zu suchen ist.
urgle schrieb:
Probieren könntest mal ein Broadcast zu senden, vielleicht kommt das über die Bridge.
Ich wüsste nicht warum ein Netzwerkgerät einen Broadcast wiederholen sollte und ein normales Paket nicht. Das Problem ist doch (IMHO) dass der Client auf nur einem Interface ARP macht, anstatt auf Beiden und den Traffic dann auch an Beide zu schicken.

Noch weitere Anregungen? Langsam nähere ich mich der Verzweiflung....
Ergänzung ()

Ok. Problem gelöst.

Ich kann jetzt von 3 nach 4 pingen und umgekehrt und bekomme Antwort.

Der Kniff war, dass ich entweder nicht lesen kann oder falsch gelesen habe. Jedenfalls kann ich jetzt wo ich's weiß immer noch nicht aus dem Text hier[1] erkennen, dass man die Dateien am Ende der Seite (bridge-start und bridge-stop) auch auf dem Client haben muss. Auch dort muss man das Startskript vorher ausführen.

IMHO hat die Anleitung da einen Fehler, bzw. erwähnt den entscheidenden Punkt nicht. Ich denke, ich werde denen mal eine Mail schreiben.

Danke an alle hier.

[1]: openvpn[dot]net/index.php/open-source/documentation/miscellaneous/76-ethernet-bridging.html
PS: Ich finde den URL-Filter hier etwas arg...
 
Zuletzt bearbeitet:
Zurück
Oben