OpenVPN is very complicated and for that reason I use sshuttle[1] which is very simple.
It does require that you own an sshd running on an endpoint somewhere (like a VPS or an EC2 instance or your own server somewhere) - but if you can clear that hurdle, you end up with a very elegant and simple solution.