udptunnel is a small program which can tunnel UDP packets bi-directionally over a TCP connection. Its primary purpose (and original motivation) is to allow multi-media conferences to traverse a firewall which allows only outgoing TCP connections.
# udptunnel -s 443 127.0.0.1/51820
# udptunnel -c [SERVER PUBLIC IP]/443 127.0.0.1 50001
- Remember to open TCP port 443 on the server's firewall
- In the WireGuard client config file, replace the server's public IP (endpoint) with
127.0.0.1:50001
If you face the "Address already in use" problem: the tunnel is incorrectly implemented. It requires more substantial patches to actually work. It uses different sockets for send and receive, resulting in different source port numbers even when you overcome the original problem. Instead, use this utility with the same name: https://github.com/rfc1036/udptunnel which works with Wireguard unmodified.