For a project of mine, I'm searching for possibilities to have a UDP-only VPN working over TCP (preferably on port 443 or 80). I have found the following while doing some research:
- This is possible with socat, however, this is unreliable since UDP connection could keep on pushing traffic, while the TCP buffer will overload.
- I suspect it might be possible with Secure Socket Funneling (SSF), however I am not sure if this works 100% reliable, and whether it pushes traffic over TCP or they found some way to use TLS over UDP (it seems that way for me).
As for the reason why I want the UDP-only VPN to work over TCP: various corporate firewalls or nation-wide firewalls block UDP traffic on (random) UDP ports. Of course there exist designated UDP ports (say 53 DNS) which are mostly opened, but it is really easy to recognize VPN from the regular traffic on those ports. I know of traffic mimicking, but this implies way to much overhead on the VPN. The protocol used for this project is WireGuard instead of OpenVPN where TCP-fallback is build-in.
As far as I know, no good (reliable) techniques exist to wrap UDP traffic in TCP. Is this true, and if so, are there other techniques which could achieve my goal?