How to Configure VPN in Pfsense Firewall

Configure VPN

29 November, 2022

VPN provides an encrypted server and hides your IP address from corporations, government agencies, and would-be hackers. A VPN protects your identity even if you are using public or shared Wi-Fi, and your data will be kept private from any prying internet eyes.

Before we configure our OpenVPN server, we need to choose an authentication method. Both OpenVPN and Pfsense support password-based authentication, certificate-based authentication, or both. Here we use certificate-based authentication. So, for that, we need to generate a Certificate Authority as well as a server certificate.

1. Generating a CA Certificate:

The first thing we need to do is generate our Certificate Authority (CA), which will validate the OpenVPN server’s identity and authenticate user certificates (if enabled).

1.1 System > Cert. Manager > Add

Descriptive name: Test

Fill in the Details on the page as shown in the screenshot below:

Method: Create an internal Certificate Authority.

Key type: RSA

Key length: 4096

Digest Algorithm: sha512

Common Name: Choose a Common Name for your certificate or leave the default of internal-ca.

Click on ‘Save’.

You’ve created your Certificate Authority.

2. Generating a Server Certificate:

2.1 Go to System > Cert. Manager > Certificate (Sub Menu) > ADD

2.2 Fill required details on the page:

Method: Create an internal Certificate.

Descriptive name: Test

Use the same values you set for the Certificate Authority for the Key type and length, as well as for the Digest Algorithm.

Lifetime: 365 days

Certificate Type: Server Certificate

3. Create your OpenVPN user and your user certificate

3.1      Go to System > User Manager

We now need to create a user to access the OpenVPN server. I will be creating a single user for this guide, but you can create as many users as you need. Simply repeat these steps.

If you chose to set up your server for certificate-based authentication or for certificate and password-based authentication, click the pencil icon to the right of your new user. You’ll be taken back to the Edit User window.

Click the Add button under User Certificates. You’ll be taken to the Certificate Manager, and prompted to input the parameters for your user certificate.

4. Creating OpenVPN Server:

4.1 VPN > OpenVPN

Set the below information into their respective field as shown in the screenshot:

Description: Test

Server mode: Remote Access (SSL/TLS + User Auth)

Cryptographic Setting:

Use a TLS Key and Automatically generate a TLS Key are enabled.

Peer Certificate Authority: Test (we have created earlier)

Server certificate: the server certificate we created earlier.

DH Parameter : 4096

Auth digest algorithm: SHA512 (512-bit).

Tunnel Setting:

In the IPv4 Tunnel Network field, enter a subnet that is not present on your network to be used as the OpenVPN network’s internal subnet. I’m using 10.100.100.0/24/24.

Enable Redirect IPv4 Gateway to route all IPv4 traffic over the VPN tunnel.

In Advance Setting, enable UDP Fast I/O.

If you’re only using IPv4, select IPv4 only in the Gateway creation field.

Click on ‘Save’.

Verifying the OpenVPN server configuration

Status > System Logs > OpenVPN

5. Create Firewall Rules:

5.1 Firewall > Rules > OpenVPN

Set below information into their respective field:

Action: Pass

Interface: OpenVPN

Address Family: IPv4.

Protocol: Any.

Source: Network (OpenVPN subnet you specified earlier. For example: 10.100.100.0/24

5.2 Wan Rule

To connect to your OpenVPN server from the outside world (i.e., the internet), you’re going to need to open the port your server runs on (1194, in this example) on your WAN interface. This rule will allow your client to connect to your OpenVPN server from the internet.

Firewall > Rules > WAN

Action: Pass

Interface: WAN

Address Family: IPv4.

Protocol: UDP.

Source: any

Destination: WAN Address

Destination Port Range : Other (1194)

6. Install the OpenVPN Client Export Utility:

We need to install the package from the pfSense Package Manager manually.

Go to System > Package Manager > Available Packages

Install openvpn-client-export

As it was already installed, it’s shown in Installed Packages.

7. Export the OpenVPN client Configuration:

VPN > OPEN VPN > client Export > scroll down > OpenVPN client