Virtual Private Networking (VPN) is a safe and secure way to transmit sensitive data between two networks or a remote computer and a private network that are connected by the publicly accessible Internet. It’s a great way for employees of a company to be able to access necessary information without having to actually be on the local, secure network. Windows 2000, XP, MacOS X and Vista are all able to utilize various VPN clients to connect to the private networks and some of these options will be presented. Of course FreeBSD can be both the client and the gateway server and that will be discussed as well.
First off if you have a FreeBSD machine that you want to be the client you might look to using PPTP (if available) for the VPN connection. It’s by far one of the easiest ways available to get connected. I found a great walk through here at FreeBSD Diary (https://www.freebsddiary.org/pptp.php) with easy-to-read step-by-step instructions. You can also use OpenVPN which can be found here (https://www.openvpn.net/index.php/home.html).
Connecting a Windows machine to the FreeBSD gated VPN is a little more work. Probably the simplest of all solutions is OpenVPN again (https://www.openvpn.se/), install notes (https://www.openvpn.se/install.txt – link broken as of 02/28/2016). I found a fairly good guide to doing all the setup on both ends right here which should get you up and running (https://www.ubergeek.co.uk/blog/2008/05/openvpn-freebsd-pf-windows-howto/ – link broken as of 02/28/2016).
One of the most complex solutions is the use of IPSec which requires a custom kernel be built. As that is an extremely involved process I will point you to a site with an excellent set of instructions and information over at the FreeBSD Handbook (https://www.freebsd.org/doc/en/books/handbook/ipsec.html). This is not for the faint of heart and requires a good amount of skill in order to make it work successfully. I suggest reading the document fully before attempting it, or looking into an easier way to do it (see above).