This guide by Virtualisation Works shows us how to get a VPN set up with FreeBSD. See the links below for both parts of the tutorial.

vpnWith inexpensive and agile cloud services, it is not unusual for a service to have multiple points of presence around the globe.  In each point of presence, there is usually a per-tenant private network for internal (and confidential) system communications.  One can go further and combine these internal networks together with virtual links. Here I explain the steps how this can be achieved with FreeBSD without relying extra networking services from the cloud vendors.

Virtual Private Network with FreeBSD (Part 1)

If you are following the guide in FreeBSD handbook, you must be frustrated because of the complicated configurations.  Those configurations are good in the sense it restricts the IPsec to particular IP pairs but they are also too tough for purpose of connecting just two routers.  In this example, I break these assumptions and go as minimal as possible so the readers can have a smoother learning curve.  I protect the private ports from unsolicited connections with the help of PF firewall instead of the IPsec configuration.

Virtual Private Network with FreeBSD (Part 2)