Wireguard handshake timeout with loadbalancer set up

Hello. I’m trying to set up the following architecture: I’m using a load balancer in a public subnet with a certificate. My DNS is pointing to it. The Pritunl server is located in a private subnet, so it has no public IP. I set the Public Address as my DNS name. I also set the same Sync Address in the advanced host section. Pritunl settings are configured as follows:

  • sudo pritunl set app.reverse_proxy true
  • sudo pritunl set app.redirect_server false
  • sudo pritunl set app.server_ssl false
  • sudo pritunl set app.server_port 80

I am able to successfully connect with OpenVPN, but WireGuard fails with a “Handshake timeout” on my server. In the logs, I see only that the user authenticated successfully but then disconnected without any clear errors. To be more specific, on the load balancer I have 3 listeners:

  • HTTPS on port 443 pointing to HTTP port 80 on the Pritunl server
  • TCP on port 1111 pointing to TCP port 1111 on Pritunl (for OpenVPN)
  • UDP on port 2222 pointing to UDP port 2222 on Pritunl (for WireGuard)

Can someone point me in the right direction?

If the server has no public IP address either port forwarding or a network load balancer with UDP support will need to be used.