This seems like something that would be simple, but I spent a long time trying to figure it out. I figured I’d write a blog post about it in case anyone else has a similar desire.
On BSD you use FIBs to declare process specific routing tables, on Linux you use firewall marks to do the same, then just route all trafik through the vpn uplink and deny any other.
i found it very easy to grab a couple of pre-built containers… im using deluge and gluetun … im sure theres a transmission container out there also.
setup your auth info in gluetun, point your deluge/trans container at gluetun for its network and youre done.
I don’t know why, but I’ve always shied away from using docker. This does seem like an area where it would be particularly useful.
I avoided containers for a long time, too. But they truly are game changing.
Is this a server or your pc? Docker is kinda silly if it’s just your pc.
Not at all. It allows you to install and use whole suites of tools and libraries without any pollution of or dependencies on your host system. It also allows you to define the whole setup in a file so it’s trivial to recreate on another machine
So baremetal would not be better?
I use a container for transmission and openvpn: https://hub.docker.com/r/haugene/transmission-openvpn/
This is what I use as well, although it was primarily out of laziness. Works well enough. I would say the Gluetun solution is a better recommendation, more robust and scalable, but the haugene container basically just works.
I would rather recommend gluetun, it supports multiple VPN protocols and you can attach any container to it
Thank you for taking the time to put this together and post it.
Gluetun is the way. Get a transmission docker container, set up a gluetun docker container, set the gluetun container as the network for the transmission container.
Viola, you have a perfectly working VPN with a kill switch.