OpenVPN und MTU

31/10/2009 - 17:53 von Paul Muster | Report spam
Hallo,


mein OpenVPN-Tunnel funktioniert nur, wenn ich sowohl auf dem Server als
auch auf dem Client die MTU des tun0 manuell auf 1387 Bytes oder kleiner
stelle.

Wie bekomme ich OpenVPN 2.1 dazu, diesen Wert selbstàndig zu ermitteln?
Denn das manuelle Einstellen ist wohl nicht sonderlich sinnvoll, weil es
von der Verbindung abhàngt, über die der Tunnel aufgebaut wird.

Der Tunnel làuft übrigens per UDP, der Server hàngt direkt mit
offizieller IP über PPPoE am Netz, der Client hinter einem
noname-Billigrouter.

Oder setze ich an der falschen Stelle an und das eigentliche Problem
ist, dass Path MTU Discovery nicht korrekt funktioniert?


Danke & mfG Paul
 

Lesen sie die antworten

#1 Juergen P. Meier
01/11/2009 - 06:49 | Warnen spam
Paul Muster :
mein OpenVPN-Tunnel funktioniert nur, wenn ich sowohl auf dem Server als
auch auf dem Client die MTU des tun0 manuell auf 1387 Bytes oder kleiner
stelle.

Wie bekomme ich OpenVPN 2.1 dazu, diesen Wert selbstàndig zu ermitteln?
Denn das manuelle Einstellen ist wohl nicht sonderlich sinnvoll, weil es
von der Verbindung abhàngt, über die der Tunnel aufgebaut wird.

Der Tunnel làuft übrigens per UDP, der Server hàngt direkt mit
offizieller IP über PPPoE am Netz, der Client hinter einem
noname-Billigrouter.

Oder setze ich an der falschen Stelle an und das eigentliche Problem
ist, dass Path MTU Discovery nicht korrekt funktioniert?



Du blockierst irgendwo ICMP Type 3 Nachrichten?

Der Billig-Router verstoesst gegen den IP Standard und versendet erst
gar keine (weil nur Billig-Wintendo-Luser sowas zuhause verwenden, die
ICMP eh blockieren?).

OpenVPN kann auf Anweisung PMTU-Discovery fuer den Tunnel. Aber
dafuer muss PMTUD funktionieren. Damit PMTUD funktioniert, muss jeder
Rotuer, der verscheidene MTUs hat (also hier das Billig-Teil) PMTUD
unterstuetzen (genauer: IP/ICMP gemaess dem Standard von 1981), und
dein Host muss ICMP Typ 3 Nachrichten akzeptieren.

Kompliziert wirds nur bei Linux wenn der VPN-GAteway selbst als Host
fungiert (also die Pakete lokal erzeugt, die in den Tunnel gehen),
dann verhindert z.B. das dysfunktionale Design von Linux sehr effektiv
das Funktionieren von PMTUD innerhalb lokal terminierender Tunnel.
Darum muss OpenVPN unter Linux auch die MTU des Tunnels selbst (also
der verschluesselten Pakete) ermitteln, seinen eigenen Overhead abziehen
und explizit die MTU des Tunnelinterfaces setzen.
(bzw. wenn das nicht funktioniert, musst du das selbst manuell machen)

Sei froh, dass OpenVPN wenigstens tun/tap verwendet - mit IPSEC auf
aktuellen Linux-Kernen geht PMTUD fuer lokale Pakete *garnicht*.

Br0ken by Design.

Juergen
Juergen P. Meier - "This World is about to be Destroyed!"
end
If you think technology can solve your problems you don't understand
technology and you don't understand your problems. (Bruce Schneier)

Ähnliche fragen