Table of Contents

PFSense - VPN - IPSec - Site to Site Setup

pfSense to pfSense - IPsec - site to site Setup.

Setup an IPSec VPN between 2 instances of pfSense using both a static (work) and dynamic IP address (home office).

NOTE: A static IP is NOT a requirement.


Requirements


Assumptions

You already have a working pfSense configuration at both locations.

Both locations must NOT have the same internal LAN address - meaning both can’t be running 192.168.1.x addresses, one can run 192.168.1.x while the other can run 192.168.2.x.

Final note - the VPN configuration on both firewalls will be exactly the same, save for parts that require IP addresses or hostnames.


Configuration

Click on VPN → IPsec, and on the bottom right, click on the green + Add P1 button at the bottom of the screen.

Phase 1

General Info

Phase 1 Proposal (Authentication):

Phase 1 Proposal (Encryption Algorithm)

Advanced Options

Leave everything defaulted in this section, and click Save. When finished, it should look like this:


Phase 2

From the above screen, click on Show Phase 2 Entries (0) and expand out the menu, then click on the green + Add P2 button that appears.

General Information

Phase 2 Proposal (SA/Key Exchange)

Advanced Configuration

After you hit Save, this is what your Phase 2 will look like:


Firewall Rules

After you hit Apply Changes on both firewalls, your IPsec VPN should connect right away.

You may find that you can’t ping anything across the VPN though - you’ll need to click on Firewall → Rules → Add to create a hole in the firewall to allow traffic to pass.

Insecure allow all traffic rule

WARNING: This rule will allow ALL traffic to traverse the firewalls (remember you have to make the same rule for both sides).

This is NOT a secure setting! If your home network gets compromised, your home network can be a jumping off point for bots/hackers/viruses to invade the network on the other side of the VPN.

You have been warned.

Edit Firewall Rule

And that’s it, unless you want to add a description.

End result looks like this: