Using pfSense with Mullvad

ROUTERS

Last updated: 10 June 2020


Follow these steps to set up and connect pfSense 2.4 or later to Mullvad.

In this guide, we will connect to our Swedish servers.

As you follow this guide, always click on any Apply or Save button as you make changes in order to reload your new settings.
 

Get your ca.crt

  1. Go to the OpenVPN configuration file generator.
  2. Use Linux as Platform.
  3. Select a Location.
  4. Click on Download zip archive and save it to your computer.
  5. Extract the zip file.
     

Add the Ca.crt to the Certificate Manager

  1. Log in to your pfSense device click on "System" -> "Cert. manager"  -> "CAs" and then click on "+Add"
  2. Edit the descriptive name and name it Mullvad CA .
  3. Set the Method to Import an existing Certificate Authority
  4. Paste the certificates found in mullvad_ca.crt that was extracted earlier into the "Certificate data" field.
  5. Click on Save.


 

Add a VPN connection

This example will make use of se.mullvad.net. You can of course replace this server with any other country, region, or specific server that you wish to use. See our list of available servers.

Click on VPN -> OpenVPN -> Clients  and then click on +Add

  1. Set Server Mode to: Peer to Peer (SSL/TLS)
  2. Set Protocol to: UDP on IPV4 only
  3. Set Device mode to: tun Layer 3 Tunnel Mode
  4. Set Interface to: WAN
  5. Set Server host to: se.mullvad.net 
  6. Set Server port to: 1301
  7. Set Description to: Mullvad Sweden
  8. Set your mullvad account number as Username under User Authentication Settings (make sure it does not contain any spaces)
  9. set M as Password under User Authentication Settings
  10. Set TLS Configuration to: Unchecked
  11. Set Peer: Certificate Authority to: Mullvad CA
  12. Set Client Certificate to: None (Username or Password required)
  13. Set Encryption Algorithm to: AES-256-GCM
  14. Set Enable Negotiate Cryptographic Parameters to: Checked
  15. Add AES-256-GCM to the Allowed NCP Encryption Algorithms field.
  16. Set Auth digest Algorithm to: SHA384
  17. Set Compression to: No LZO Compression [Legacy style, comp-lzo no]
  18. In the Custom options field, paste:  remote-cert-tls server
  19. Set UDP Fast I/O to : checked
  20. Set Send/Recieve buffer to 1.00 MiB
  21. Click Save.

 

Add an Interface 

  1. Click on Interfaces -> Assignments
  2. Use the Drop-down menu for the Available network ports: and select ovpnc*  and then click on +Add
  3. Click on the New interface name, it is usually named OPT1 or OPT2.
  4. Set Enable:  Enable Interface to be checked
  5. Click on Save.
     

Add NAT rules

  1. Click on Firewall -> NAT -> Outbound and then select Mode: "Manual Outbound NAT rule Generation (AON) and then click on Save.
  2. Copy the entry that contains your local IP address (The one that does not contain port 500 nor 127.0.0.0 , In this example 172.17.1.0/24 is used, for you this will most like differ and will probably be 192.168.1.0/24)  by clicking on the Copy icon found under Actions to the right of the NAT entry (Add a new mapping based on this one)
  3. Click on the Pen icon (Edit mapping)  and change so that interface is the mullvad one and write a description.
  4. Make sure that both Disabled and do not NAT are unchecked
  5. Delete the other rules that contain your local IP that exists via WAN , (keep the 127.0.0.0) This will ensure that you can not reach the internet if the VPN tunnel is down from your clients behind the pfSense router.
  6. Click on Save.


 

DNS

  1. Click on Services
  2. Click on DHCP server
  3. Set DNS server 1 to: 193.138.218.74
  4. Set DNS server 2 to: 10.8.0.1
  5. Click on Save

After you have completed these steps, click on VPN -> OpenVPN -> Related status icon and then click on the Restart openvpn Service found under Service to reload it all. Then on your client computers, go to https://ifconfig.co to see that they are working as intended.
 

Easily check your online privacy with Am I Mullvad

While you're connected to Mullvad, your browser could still be leaking information and therefore jeopardizing your privacy. With our Am I Mullvad online tool, you can now get a quick overview of your connection status.

 

Port Forwarding

To add ports to be forwarded from the VPN server to your LAN client.

  1. Click on Firewall -> Nat -> Port Forward
  2. Click on Add
  3. Set Interface to be your VPN interface
  4. Set Protocol to be TCP/UDP
  5. Set To Port custom field to the port you were assigned
  6. Set the Redirect Target IP to the IP-address of your LAN client that you wish to have the forwarded port
  7. Set the Redirect Target Port custom field to the port you wish it to redirect it to on the LAN client
  8. Set Description to something so that you can identify it
  9. Click on Save
  10. Reconnect the OpenVPN client

Split-tunneling

In this example you will route 8.8.4.4 outside the VPN to the client 192.168.1.101

Adding a NAT rule

  1. Go to Firewall -> Outbound -> Add
  2. Set Interface to WAN
  3. Set Address Family to IPv4
  4. Set Protocol to any
  5. Set Source type to Network and 192.168.1.101 / 32 for the client you wish to go outside the VPN.
  6. Set Destination type to Network and 8.8.4.4 / 32 for the Destination network
  7. Click on Save and Apply Changes, and make sure the new rule is higher than the VPN nat rule.

Add a static rule

  1. Go to System -> Routing -> Static Routes
  2. Click on "+Add"
  3. Set Destination network to 8.8.4.4
  4. Set Gateway to WAN_DHCP (or WAN)
  5. Click on Save and Apply Changes

Troubleshooting

I am running an older version of pfSense (2.3.x) and some things are not available or renamed. Where do I configure them?

TLS authentication is now called TLS Configuration.

UDP Fast I/O is not available as a checkbox icon on pfSense 2.3.x.

Send / Receive Buffers dropdown menu is not available on pfSense 2.3.x.