Adapter between an UDP OpenVPN server and TCP OpenVPN clients
The program ovpn_tcp.pl accepts clients on a TCP port and splits the incoming data stream into chunks that are forwarded as UDP packets to the OpenVPN server. Response packets from the server are streamed back to the client. See perldoc or repository for details.
This is mostly a proof-of-concept and an exercise in using the POE framework. Almost all of the code is taken from examples in the perldoc of the used modules.
The conversion between the TCP stream and the UDP packets is based on the protocol description in ssl.h.
Also provided is a systemd unit description ovpn_tcp.service that enables
ovpn_tcp.pl as a