Netgate Discussion Forum
    • Categories
    • Recent
    • Tags
    • Popular
    • Users
    • Search
    • Register
    • Login

    Tutorial: Configuring pfSense as VPN client to Private Internet Access

    Scheduled Pinned Locked Moved OpenVPN
    348 Posts 99 Posters 461.0k Views
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • DerelictD
      Derelict LAYER 8 Netgate
      last edited by

      Just check don't pull routes in the OpenVPN Client configuration then policy route those destination ports to the VPN Gateway followed by pass any without setting a gateway.

      Chattanooga, Tennessee, USA
      A comprehensive network diagram is worth 10,000 words and 15 conference calls.
      DO NOT set a source address/port in a port forward or firewall rule unless you KNOW you need it!
      Do Not Chat For Help! NO_WAN_EGRESS(TM)

      1 Reply Last reply Reply Quote 0
      • D
        Dave R
        last edited by

        Ah, I think that works but only if I specify the VPN gateway in the LAN pass rule (under Advanced).  You mention "pass any without setting a gateway." but where else would I specify the VPN gateway for those ports?

        1 Reply Last reply Reply Quote 0
        • DerelictD
          Derelict LAYER 8 Netgate
          last edited by

          You policy route using firewall rules as you already stated. So you make a rule specifying those destination ports and the desired gateway/gateway group.

          Chattanooga, Tennessee, USA
          A comprehensive network diagram is worth 10,000 words and 15 conference calls.
          DO NOT set a source address/port in a port forward or firewall rule unless you KNOW you need it!
          Do Not Chat For Help! NO_WAN_EGRESS(TM)

          1 Reply Last reply Reply Quote 0
          • D
            Dave R
            last edited by

            Thanks. Netflix won't work going over the vpn interface so I've created a hosts Alias containing the IP ranges for AS2906 (netflix) and created a second rule on the LAN to route the Netflix alias destinations over the WAN interface instead of the VPN interface. It doesn't seem to pick up the change though. I've reset under 'diagnostics > states > reset states' but the rule doesn't seem to be working. Tcpdump on the vpn interface shows the Aliased IP addresses still going over that interface.

            The docs say "first match wins" so if I have the Netflix rule at the top, and the VPN rule after that this should be working, correct? I'm assuming I'm missing some IP addresses Netflix is using but want to make sure I understand the rule ordering.

            1 Reply Last reply Reply Quote 0
            • DerelictD
              Derelict LAYER 8 Netgate
              last edited by

              Post your rules then. I guarantee if the alias contains the required destinations and the rules are done correctly, it works.

              Chattanooga, Tennessee, USA
              A comprehensive network diagram is worth 10,000 words and 15 conference calls.
              DO NOT set a source address/port in a port forward or firewall rule unless you KNOW you need it!
              Do Not Chat For Help! NO_WAN_EGRESS(TM)

              1 Reply Last reply Reply Quote 0
              • D
                Dave R
                last edited by

                The rules are working, I think I'm just missing IP ranges. I'm using tcpdump on the PFsense box to see what's egressing the vpn interface. Even after adding a new range, I'll reload Netflix in my web browser and tcpdump shows it still hitting that IP on the vpn. If I wait a minute or so, then it seems to pick it up. Are rule changes only applied to new connections?

                1 Reply Last reply Reply Quote 0
                • B
                  bcruze
                  last edited by

                  this works for me

                  180 is the static ip address of my tv

                  netflixrule.JPG
                  netflixrule.JPG_thumb

                  1 Reply Last reply Reply Quote 0
                  • DerelictD
                    Derelict LAYER 8 Netgate
                    last edited by

                    Yes, it is often easier to just exclude everything from the device from egressing the VPN than try to match every destination address and port for something like netflix.

                    Chattanooga, Tennessee, USA
                    A comprehensive network diagram is worth 10,000 words and 15 conference calls.
                    DO NOT set a source address/port in a port forward or firewall rule unless you KNOW you need it!
                    Do Not Chat For Help! NO_WAN_EGRESS(TM)

                    1 Reply Last reply Reply Quote 0
                    • D
                      Dave R
                      last edited by

                      @bcruze:

                      180 is the static ip address of my tv

                      I'm not sure I understand. Are you just filtering by source IP rather than by a zillion Netflix destinations?

                      1 Reply Last reply Reply Quote 0
                      • DerelictD
                        Derelict LAYER 8 Netgate
                        last edited by

                        Yes. He's telling it to put everything FROM that device out WAN regardless of destination. Far easier than trying to single out "Netflix."

                        Chattanooga, Tennessee, USA
                        A comprehensive network diagram is worth 10,000 words and 15 conference calls.
                        DO NOT set a source address/port in a port forward or firewall rule unless you KNOW you need it!
                        Do Not Chat For Help! NO_WAN_EGRESS(TM)

                        1 Reply Last reply Reply Quote 0
                        • D
                          Dave R
                          last edited by

                          Good idea. Unfortunately, I have a mix of devices on the LAN which also access Netflix.  For now, I've added around 30+ subnets to my Netflix Alias. It's not great but it keeps the tablets/phones on the VPN for everything but Netflix.

                          1 Reply Last reply Reply Quote 0
                          • D
                            Dave R
                            last edited by

                            If I'm running 'Services > DNS Resolver' on PFsense, It looks like (most?) of my DNS queries are still going out the WAN. Is this because the the source IP is 'LAN net' on my VPN policy (ports 80,443,53) and the Resolver is using my WAN IP for the DNS queries (at least what it looks like from tcpdump)?

                            1 Reply Last reply Reply Quote 0
                            • F
                              Finger79
                              last edited by

                              @Dave:

                              If I'm running 'Services > DNS Resolver' on PFsense, It looks like (most?) of my DNS queries are still going out the WAN. Is this because the the source IP is 'LAN net' on my VPN policy (ports 80,443,53) and the Resolver is using my WAN IP for the DNS queries (at least what it looks like from tcpdump)?

                              To fix this, go to Services / DNS Resolver and under "Outgoing Network Interfaces," select only your PIA VPN interface(s) and make sure "All' and "WAN" aren't selected.

                              This fixes the DNS leak over your regular WAN but introduces the problem that if your VPN ever goes down, pfSense will not be able to resolve DNS to reconnect the VPN.  To fix this, go to System / General Setup and specify a 3rd party DNS resolver of your choosing (Google, OpenDNS, Level 3, Verisign, etc.).  This setting only affects outbound DNS queries by localhost, not by anything on your LAN, which should go out the PIA VPN only via unbound.

                              1 Reply Last reply Reply Quote 0
                              • D
                                Dave R
                                last edited by

                                Thanks! Precisely what I was wanting. em0 egress is looking better now.

                                @Finger79:

                                To fix this, go to System / General Setup and specify a 3rd party DNS resolver of your choosing

                                I'm assuming the screenshot is correct?

                                dns.png
                                dns.png_thumb

                                1 Reply Last reply Reply Quote 0
                                • B
                                  bcruze
                                  last edited by

                                  @Dave:

                                  Thanks! Precisely what I was wanting. em0 egress is looking better now.

                                  @Finger79:

                                  To fix this, go to System / General Setup and specify a 3rd party DNS resolver of your choosing

                                  I'm assuming the screenshot is correct?

                                  see now this is when my head starts hurting.    the  instructions never say to create a new interface.  so when i got home i disabled, the PIA interface to test my connection to see if it still worked and it did.  so i deleted the openvpn/ PIA interface.    so i can't change this setting.

                                  so are you saying on the standard PIA instructions your data is not routed correctly on the outgoing interface..?

                                  when i go to PIA.com i have a protected IP.  and i am getting my normal speeds and i have not for some time.  i really don't want to alter this unless i have too

                                  1 Reply Last reply Reply Quote 0
                                  • D
                                    Dave R
                                    last edited by

                                    @bcruze:

                                    so are you saying on the standard PIA instructions your data is not routed correctly on the outgoing interface..?

                                    My setup is a little different than "VPN all the things!" which is the direction given by all the tutorials I've found anyway. Straight off, yes all my traffic was egressing the VPN tunnel as it should but I don't want Steam going over it, and Netflix absolutely refuses to run as well. Fiddling around with splitting the traffic over multiple interfaces is inherently problematic because now I need to use IP addresses, protocol and port to determine what goes where. And that's not always a straightforward thing (Especially for Netflix. I'm a little surpised my setup is working at all with all the Aliases I had to configure.)

                                    That said, I'm continually impressed by pfSense. It's enterprise grade software in features, quality and functionality. I'm very grateful for the tutorial in this thread and all the support from the forum folks. Thanks all.

                                    PS: Um..not sure I follow what you mean about creating a new interface. Isn't it right there in the first post under "Create OpenVPN interface" ?

                                    1 Reply Last reply Reply Quote 0
                                    • B
                                      bcruze
                                      last edited by

                                      i am following the newest guide:

                                      https://www.privateinternetaccess.com/forum/discussion/29231/tutorial-pia-on-pfsense-2-4?new=1

                                      i also posted an updated link just about the top page of 22.  from a PIA staff

                                      1 Reply Last reply Reply Quote 0
                                      • F
                                        Finger79
                                        last edited by

                                        @bcruze:

                                        i am following the newest guide:

                                        https://www.privateinternetaccess.com/forum/discussion/29231/tutorial-pia-on-pfsense-2-4?new=1

                                        i also posted an updated link just about the top page of 22.  from a PIA staff

                                        Their guides are never perfect.

                                        @Guide:

                                        14.) Ensure NCP is checked.
                                              Remove AES-128-GCM and AES-256-GCM by clicking on them in the darkened box in NCP Algorithms
                                              Add AES-128-CBC and AES-256-CBC  by selecting them in the left box.

                                        This is stupid and defeats the purpose of NCP in OpenVPN 2.4 which automatically negotiates the NCP ciphers if both client and server support NCP.  NCP should remain set to AES-256-GCM and/or AES-128-GCM.  And the traditional cipher should be set to AES-256-CBC or AES-128-CBC.

                                        @Guide:

                                        17.) Custom Options: Add these parameters:

                                        persist-key
                                                  persist-tun
                                                  remote-cert-tls server
                                                  reneg-sec 0

                                        "persist-key" and "persist-tun" are already hard-coded in pfSense's OpenVPN implementation and are redundant if specified here.  They should be left out because all this does is list the directives twice in the config file.

                                        Mine are currently set to:

                                        Advanced Configuration Settings from GUI

                                        remote-cert-tls server
                                        auth-nocache
                                        tls-version-min 1.2
                                        reneg-sec 0
                                        pull-filter ignore "auth-token"

                                        I learned a lot from reading the OpenVPN 2.4 Manual.  Took several hours over several days before I had a basic understanding of how to harden the config settings.  The pull-filter ignore "auth-token" is my latest addition since I was having issues with the session token expiring and the VPN would never automatically reconnect by itself.  Adding that directive keeps pfSense connected to PIA 24/7 and automatically reconnects.

                                        1 Reply Last reply Reply Quote 0
                                        • D
                                          Dave R
                                          last edited by

                                          @Finger79:

                                          "persist-key" and "persist-tun" are already hard-coded in pfSense's OpenVPN implementation and are redundant if specified here.  They should be left out because all this does is list the directives twice in the config file.

                                          It's worth noting  (and this may have been stated already in the previous 20 pages of thread) that the tutorial in this thread also configures /etc/openvpn-password.txt for the vpn user and password. I've omitted this portion since there is a configuration field in the UI for both of these (I presume earlier versions of pfSense did not have this feature). Either method does seem to work but I prefer keeping config items in one place when possible. Not to mention the added potential problems with cleartext files and permissions.

                                          1 Reply Last reply Reply Quote 0
                                          • N
                                            nasolsi
                                            last edited by

                                            First thank you for taking the time to write this tutorial.

                                            I went through it but got stuck to the point where no traffic goes through VPN interface and couldn't find how to resolve it.

                                            pfSense's WAN and VPN interfaces are up and running, WAN and VPN's gateways are also online, and OpenVPN client instance to our VPN's Provider server is also up (please see attached file), I'm able to ping VPN's Hong Kong server from pfSense's WAN interface but not form VPN and LAN's interfaces. I know it's something wrong with firewall rules or DNS that not been configured properly.

                                            I did upgrade pfSense to the latest version 2.4.2-RELEASE-p1 (amd64).

                                            Could you please help me on where else to look into to fix this.

                                            ![pfSense OpenVPN client.PNG](/public/imported_attachments/1/pfSense OpenVPN client.PNG)
                                            ![pfSense OpenVPN client.PNG_thumb](/public/imported_attachments/1/pfSense OpenVPN client.PNG_thumb)

                                            1 Reply Last reply Reply Quote 0
                                            • First post
                                              Last post
                                            Copyright 2025 Rubicon Communications LLC (Netgate). All rights reserved.