mtu ist wieder raus, mssfix auf 1250. Zum Test einmal "OpenVPN für Android" auf dem Handy installiert (vorher OpenVPN Connect). Nun lassen sich alle Geräte untereinander anpingen. Verbindung trotzdem noch sehr langsam.
Also ich habe mich selber mit OpenVPN -v.a. über LTE „Roadwarriors“ (also mobile Clients) eine Weile gespielt. Das Performanceproblem und das MTU-Problem hängen oft miteinander zusammen.
Ich gebe einmal ein paar allgemeine Tips:
1. Ermittlen der optimalen MTU:
ping -c2 -M do -s 1472 openvpnserver-ipv4adresse
ping6 -c2 -M do -s 1452 openvpnserver-ipv6adresse
Diese beiden Kommandos senden je zwei Pingpakete mit einer Nutzlast für eine MTU von 1500 unter Verwendung des „Don't Fragment“ Flags an den Zielhost. Kommen sie nicht durch, war das Paket zu groß. Kommen sie durch und es wird eine Antwortzeit ausgegeben, passt alles.
Mathematik dazu: Eine Nutzlast von 1472 addiert um 8 Byte für den ICMP-Header und 20 Byte für den IP-Header ergibt eine MTU von 1500 Byte.
Bei IPv6 ist der IP-Header doppelt so groß, darum 40 Byte + 8 Byte +1452 Byte = 1500.
2. Wie schon ein Vorposter meinte, kann man neben mss-fix auch Fragmente anpassen. Das OpenVPN-Manual meint dazu, dass man nur fragment und tun-mtu anpassen sollte.
tun-mtu ist die Paketgröße innerhalb des Tunnels, fragment die, die über die Providerleitung geschickt wird. Da trägt man den größten Wert ein, bei dem der Ping mit IPv6 noch funktioniert hat. (Wenn nur Singlestack v4 benützt wird, diesen Wert.)
Je mehr Pakete fragmentiert werden, desto mehr rechnet der Router und desto mehr Latenz gibt es.
Exkurs zur MTU:
Ein MTU-Problem löst man besser direkt am Providerrouter, falls möglich. PPPoE und VLANs (für Tripleplay-Dienste etc) verringern die MTU. Wenn ein Router Baby-Jumbo-Frames unterstützt und der Provider dies auch zulässt, dann arbeitet damit, um die MTU am Router auf 1500 anzuheben.
(RFC4638). Gerade DSL-Modems mit älterem Linux-Kernel, respektive DSL-Treiber können das nicht. Etwa TP-Link VR200(v) ist so ein Problemkind, auch die Providerversionen der Fritzbox 7360v1, für die es keine Updates mehr gibt. Draytek-Modems im PPPoE-Passthrough-Mode kommen aber etwa damit zurecht.
3. OpenVPN und Buffer...
Frühere Versionen von OpenVPN hatten mit den Buffern bei Verwendung unterschiedlicher Binaries für Windows, Linux, *BSD Probleme.
Es hilft manchmal, die Buffer fix einzustellen - auf beiden Seiten:
sndbuf 524288
rcvbuf 524288
Mssfix hilft nur bei TCP. Auf UDP hat es keinen Einfluss. D.h. die in 1 und 2 genannten Tricks funktionieren umfassender.
Wenn' s nicht hilft, bitte Deine Config (ohne Keys u.d.gl.) hier einmal posten.
Noch ein Hinweis: Die Route zum VPNServer und die vom VPNServer muss nicht dieselbe MTU haben... Wenn Deine Gegenstelle hinter einem Carrier Grade NAT arbeitet oder ICMP blockt, funktioniert die MTU Path Discovery nicht. Wenn dann noch die effektive MTU kleiner ist, hast Du vor allem dann, wenn Du Openvpn verschlüsselst nützt plötzlich mehr Errors im OpenVPN Log. Es empfiehlt sich dann u.U. auch serverseitig die tun-mtu und fragments anzupassen.