Ich habe wohl schon mehrfach hier im Blog erwähnt, dass OpenVPN über UDP-Sockets gelegentlich wesentlich performanter als über TCP-Sockets ist - der Umstand, dass beides seine Vor- und Nachteile hat, man sich aber für den Produktiv-Betrieb auf eine Variante festlegen muss, war mir schon immer ein Dorn im Auge.
Eigentlich hatte ich mich dann gestern Nacht dran gesetzt und wollte OpenVPN an sich patchen und einen neuen TCPv4/UDP-Server-Modus einführen, aber irgendwie war das der falsche Ansatz und ich habe in den letzten 2 Stunden einen anderen Verfolgt:
Ein Proxy, der sich zwischen TCP-Client und UDP-Server schaltet und die Kommunikation "übersetzt" - denn abgesehen von 2 Byte pro Paket unterscheidet sich die Kommunikation auf Socket-Ebene überhaupt nicht.
Heraus gekommen ist ein kleines PHP-Programm, was noch ein wenig schwerfällig daherkommt, aber durchaus einen guten Dienst tut.
WARNING: 'link-mtu' is used inconsistently, local='link-mtu 1544', remote='link-mtu 1542'
WARNING: 'proto' is used inconsistently, local='proto TCPv4_SERVER', remote='proto UDPv4'
... beim Verbindungsaufbau beschwert OpenVPN sich zwar lautstark, arbeitet dann aber ganz normal wie auf einer normalen Verbindung.
Ich werde das Programm sicherlich noch ein Weilchen testen und umbauen, bevor es irgendwie in die Nähe etwas produktivem kommt, wer es selbst brauchen kann, findet es wie immer hier.
Kommentare