My VPN provider has a limit to how many concurrent connections I can have, and a workaround I’ve been using is to run the Wireguard client as a daemon (wg-quick@my-wg-config) and a Squid proxy on my home server, and point my local devices to the HTTP proxy port, which will route the traffic through the Wireguard connection. However, this has broken randomly multiple times in the past few months, where it will randomly decide to just not allow the server to connect to ANY internet address while the Wireguard connection is active, and no amount of network or routing table configuration changes fixes it. The Squid proxy works fine as far as I can tell, it’s just the Wireguard connection that’s failing, which doesn’t even allow a ping to an internet address from the server’s terminal (which doesn’t go through the proxy). The only way I’ve been able to fix it is to completely reinstall the OS on the server and reconfigure everything from scratch, which is annoying and also only works until it randomly decides to break again. This makes me think I’m doing something wrong.
Is there a more “proper” or widely supported way of routing internet traffic on local devices through a single Wireguard connection? Everything I could read online says running Wireguard with an HTTP proxy server is the way to do it, but it clearly isn’t very reliable or my computer is just defective in some weird intermittent way? The server is running Fedora Server 43. I’ve also checked for SELinux denials but there are none.
I’m aware of wireproxy but it uses a SOCKS5 proxy which is not as widely supported as an HTTP proxy and a lot of my devices (mainly phones) won’t be able to access it. Also I’d like the server itself to also use the VPN, not just the devices on the proxy.
Does anyone have more experience with this and can give some advice?
The proper way to do it is connect your router to the vpn, most routers have support for it these days.
If you want to do it the harder way, connect one machine to your vpn provide on one wg network and create a second wg network for your local devices which routes all traffic (not just http) through the one device thats connected to your VPN provider. Basically make youe own home vpn server and connect to that.
Using just squid for http to relay the vpn in addition to being fragile and breaking sometimes is also just not really giving you the full vpn coverage, your ip is going to be leaking all over the place.
Why not route traffic through the VPN via your router? Should be pretty easy with Mikrotik
I agree, I have an ASUS router with Merlin FW and there is multiple VPN client on it and it can handle all this automatically.
I don’t have custom firmware on my router and frankly don’t trust the stock one to handle VPN connections securely without sending “analytics” back to the manufacturer.
I’m thinking about seeing if I can get OpenWrt on it though, but I’m worried it won’t be reliable enough and I really don’t want to be in a situation where I have no internet period after my experiences with just the proxy server breaking. The only reason I’ve been able to troubleshoot it is because the internet itself still works.
FWIW, I have used openwrt on my main router for almost 10 years, with no issues.
If you can run WireGuard on all your devices, you may wanna set up a multihop node that forward outbound traffic to the VPN tunnel via that hub
You need a router or a proxy. A proxy would be annoying, so a router is preferred.
If you don’t have control of your edge router, just get a cheap Pi-type device, install OpenWRT, setup your VPN connections, then create a route on your network to point at this new device for whatever you need it for.
If you simply want to use it at-will for certain things, you can put a proxy on it.
As to your other issues, it sounds like your WG connection is just dropping, in which case it won’t automatically reconnect by default. OpenWRT has plugins that can monitor that and reconnect when it drops, or you can script it pretty quickly as well.
just get a cheap Pi-type device, install OpenWRT, setup your VPN connections, then create a route on your network to point at this new device for whatever you need it for.
Can I just set its IP address as the default gateway on my devices instead of the main router and expect it to forward everything to the main router through the VPN? Or is there a more complicated setup procedure to get the two routers talking properly?
I briefly tried to make my server a default gateway in the past but couldn’t get it to work, and I’m generally not super experienced with networking. But that was on a general non-router OS. Does OpenWrt do the gateway and routing/forwarding configuration by itself more than a general Linux OS?
The default gateway for the new device needs to be your existing router in order to get to the internet. Then when you create a new WG connection, you ensure all traffic that gets passed to this new device forwards through the Wire guard tunnel.
PC > WG-router > existing-router > internet
Ok, so if my main router is on 192.168.1.1 and my new OpenWrt router I plan on connecting to VPN is 192.168.1.2, I should set the OpenWrt router’s gateway to 192.168.1.1, set any devices I want on the VPN to use gateway 192.168.1.2, and any devices I don’t want on the VPN should stay on 192.168.1.1, right?
Would devices on the VPN still be able to access the local network and devices that have 192.168.1.1 as their gateway? I assume it would only route internet bound traffic and the OpenWRT router would be able to just pass through local network traffic the same way as the main router?
Also, would the OpenWrt router be able to deal with the main router handling DHCP if I configure it to give it a static IP? Will it just know what devices it’s talking to when the main router assigns them their dynamic IPs?
Sorry for all the noob questions, networking is not one of my strengths.
You will need to set up IP masquerading.
No particular experience with the VPN issue so feel free to completely ignore this idea, but if you do have to stick with something resembling your current solution it could make sense to put it in a VM or container so that the process of rebuilding it is not so burdensome.
Hmm, basically make a container with the VPN client and proxy server, and expose the proxy port through it? Not sure how to route the host server’s traffic through that but I suppose I can just point all the important stuff to the local container’s proxy port. I’ll see if that’s more reliable than modifying the host network configurations. Thanks!
I’ve also been thinking of switching to Nix so I can just configure it once and rebuild the entire system with all the condigurations at any time without going through manually setting everything back up with individual commands/file edits. Though I’m not sure if that’d be more reliable given it’s broken randomly on Fedora when I didn’t even change any network configurations.




