- Does someone have first hand experience with creating a UNIX-based Virtual Private Network?
- What are the best VPN clients / tools available for accomplishing this?
- Are there any common pitfalls that I should avoid?
In my particular case, my primary interest goes out to Debian-compatible solutions. My main goal is to get it working simply because I have not done it before but I can see some possible benefits in cases where I'd rather not use a SSH connection.
in linux you have two major options:
2nd one is really great, i've been using it in production for a couple of years. it's available in debian as standard package. it performs quite well for capacities of tens of megabits [ hundreds as well, but i dont have that fast internet connections between offices ]
some tips for openvpn:
True IPsec is nothing but a headache. The protocol stumbles across different network topologies. The clients are universally lacking no matter what the OS. Unless you require hardware endpoints that will only do IPsec, then avoid it at all costs.
OpenVPN is however straightforward to setup, rock solid in use and has very intuitive clients for Linux, Windows and Mac.
Consider how you are going to manage new users and revoke old ones. This will depend on how many users you are anticipating to support. Personally we use x509 certificates placed upon two-factor tokens, which scales very well, but does require some way to manage PKI if you grow.
Another vote for OpenVPN here. We used it at my previous job and it was rock solid and we had fewer issues with it compared to the PPTP and IPSEC VPN tunnels we use at my current job. It's also hard to beat the flexibility that OpenVPN offers. But OpenVPN does have one weak spot in my opinion. It currently isn't supported by many smart phones. In fact I don't know of any that do. I do know that there are people trying to port it to the iPhone but I'm not sure where that project is.
You didn't mention what type of clients your vpn solution needed to support. So with that in mind if you need to avoid 3rd party clients or need smart phone support then PPTP may be a better fit. Windows, OSX, and many smart phones all have native PPTP clients. Poptop is the Linux project that implements PPTP.
The two tools I can recommend having a look at are OpenVPN (mentioned before) and Adito (which has recently been renamed to OpenVPN ALS). http://sourceforge.net/projects/adito/ http://adito.wiki.sourceforge.net/
One very flexible and well documented solution is OpenVPN (http://openvpn.net/) This is available as a package from the standard repository in Ubuntu and should be in Debian too.
I've used OpenVPN in my company for about 2 years now. Had very few issues with it.
We are using client-specific configuration to assign users IP in different sub-networks. From then, we can limit access to internal resources thanks to a firewall.
What is less comfortable is the PKI management (we use certificate to authenticate clients). But with 2 or 3 scripts, this become bearable.