Tutorial: Configuring pfSense as VPN client to Private Internet Access
-
the tunnel takes over all outbound over the WAN as soon as it is started.
This tutorial is written so that all LAN traffic is routed through the VPN using the system routing table. So this is to be expected.
If you followed this tutorial exactly, then there are two ways that I know of to accomplish what you want.
- This first option is more involved, because it requires editing every firewall rule. This is not really ideal, but I'm outlining it here as an option so that you're aware.
-
Go to Advanced settings under every firewall rule and assign the WAN interface as your Gateway.
-
Then create a specific rule for your single computer on the LAN, with the PIAVPN gateway selected.
-
Move this new rule to the top of the list.
-
With this setup, all traffic bypasses the system routing table, and the traffic is routed via each rule through a specific gateway.
- The second option is much easier.
-
Add route-nopull to the Advanced Configuration settings of the VPN
-
Create a firewall rule for the specific computer on the LAN with an Advanced setting that specifically chooses the PIAVPN Gateway.
-
Move this new rule to the top of the list.
To explain how option 2 works, this is from the OpenVPN manual:
–route-nopull When used with --client or --pull, accept options pushed by server EXCEPT for routes. When used on the client, this option effectively bars the server from adding routes to the client's routing table, however note that this option still allows the server to set the TCP/IP properties of the client's TUN/TAP interface.
So, this tells the client not to pull the default route from the server, yet it pulls all other necessary TCP/IP settings. And if you look at your system routing table (Diagnostics->Routes) before and after changing this setting, you'll see the pulled route present and then not present respectively. It'll be the first line in the table:
0.0.0.0/8 xxx.xxx.xxx.xxx UGS 0 0 1500 ovpnc1 =>
Therefore, after adding this Advanced Configuration setting, all traffic continues to use the System Routing Table. And with this pulled route removed from the table, the traffic will be routed out the WAN interface instead of the PIAVPN interface based on the remaining rules in the table.
However, the new firewall rule you created for your specific LAN computer will be routed out the VPN interface, because you chose it as the Gateway under Advanced settings within the rule. This specific rule then bypasses the System Routing Table.
-
If you follow the tutorial, when finished the tunnel should only be routing traffic that you specify using the firwall->lan rules.
This is incorrect. This tutorial configures the firewall to route all traffic out the VPN interface.
Anyone else have the tunnel go down rather frequently using this service?
All I see in the logs is the following when it disconnects:
Jun 15 20:31:20 pfsense openvpn[41114]: MANAGEMENT: Client disconnected Jun 15 20:31:37 pfsense openvpn[41114]: event_wait : Interrupted system call (code=4)
Just wondering if this is normal for PIA?
I don't experience this at all. I've used several of PIA's server, but not specifically the US-East server.
-
This is incorrect. This tutorial configures the firewall to route all traffic out the VPN interface.
Woops, sorry I followed a couple tutorials when I set mine up, just came across yours after setting mine up, must have gotten them confused. I will edit my post.
I don't experience this at all. I've used several of PIA's server, but not specifically the US-East server.
Hmm, strange. Wonder why mine seems to disconnect somewhat frequently. I am using same settings as yourself, just a different server. Out of curiosity what DNS servers are you using? What version of pfSense?
I have setup a box at work with linux, I will see if it has disconnection issues. I thought it seemed strange to disconnect frequently. My internet service is pretty rock solid, very rarely see any outages thankfully. Maybe I will try a different server for a bit and see if it makes any difference.
Kevin
-
Woops, sorry I followed a couple tutorials when I set mine up
No problem. Just wanted to make sure that there's no confusion
Out of curiosity what DNS servers are you using?
I'm using Google's DNS servers. Also, under System->General Setup, I do not have the following checked: Allow DNS server list to be overridden by DHCP/PPP on WAN
What version of pfSense?
2.1.3-RELEASE
-
Woops, sorry I followed a couple tutorials when I set mine up
No problem. Just wanted to make sure that there's no confusion
Out of curiosity what DNS servers are you using?
I'm using Google's DNS servers. Also, under System->General Setup, I do not have the following checked: Allow DNS server list to be overridden by DHCP/PPP on WAN
What version of pfSense?
2.1.3-RELEASE
Yup, same here all around. I will go through all my settings, make sure I didn't miss anything. I may try PIA's DNS servers. Maybe that will be better. Worst case I can put the OpenVPN client back on my linux box which was more reliable it seems, although this was kind of the purpose of building the pfSense box, lol. :-) Go figure.
-
Thanks for the tutorial!
I had made a simular setup but I was missing the advanced setting.
I have a problem that occurs every few days; the VPN service will be up but the IP address will be missing from the VPN display on the dashboard page. The VPN log will have 500+ entries that say…
Iopenvpn[72509]: RESOLVE: Cannot resolve host address: us-midwest.privateinternetaccess.com: hostname nor servname provided, or not known
I can get it working again by restarting the service. I think it's some type of DNS problem, but I don't have way to debug it.
Any suggestion on what I should try?
If I could restart the VPN service every hour that would partial fix it.
{edit}
OK I found the problem, in my DNS server I had set the gateway to the VPN interface. I guess every few days the IP address changes and when that happens it needs to use DNS to find the new IP address. Anyway I added an extra DNS on the WAN interface, and to day it was able to get the new IP address. I checked the https://www.dnsleaktest.com/ and http://ipleak.net/ it not showing my IP address. On a side note when I use 208.67.222.222 and 208.67.220.220 I get better RTT, in my case ~60ms -
this is by far the best tutorial I've found for PFsense and PIA, others have you do redundant steps that are no needed.
Thanks a lot, great information
-
This is a great tutorial no doubt, and thank you very much for it!
I only have one issue I'm trying to resolve but have failed, I want to bypass the vpn for one specific ip (my desktop, for gaming reasons) and leave everything else go through the vpn.
So far I have everything setup and working with the tutorial. I have found similiar posts by using google but nothing I have found has worked. The closest post I've found related to my problem is https://forum.pfsense.org/index.php?topic=58630.0 and I've tried to follow jimp's suggestion by creating this lan rule:
But still have no luck getting that single ip to bypass the vpn.
Any suggestions and feedback is greatly appreciated.
-
I also wanted to compliment you on this fine (excellent) tutorial ;D
It even turned out that I appear to have done something wrong myself months ago (certificate part), and for some strange reason, it did work all these months.
-
This is a great tutorial no doubt, and thank you very much for it!
I only have one issue I'm trying to resolve but have failed, I want to bypass the vpn for one specific ip (my desktop, for gaming reasons) and leave everything else go through the vpn.
But still have no luck getting that single ip to bypass the vpn.
Any suggestions and feedback is greatly appreciated.
I also have the same problem. I think JimP responded to me about this problem in my thread some months ago, but I didn't understand and then it blead do death :-[
-
I as well want to route certain traffic around the VPN but my rules aren't working.. It looks just like the above pictures.
-
I as well want to route certain traffic around the VPN but my rules aren't working.. It looks just like the above pictures.
+1
It is working for me now, but had not been working for nearly 48 hours. What got it working, I have no idea since I haven't done a thing to pfSense settings since I initially created a thread on the issue.
-
So I had a chance to test a few things, specifically what made it work and what didn't. Here's some screenshots of my interface rules. I've kept some of them in there, just disabled, in case for whatever reason things go south again.
The big takeaway was to specify the gateway that each rule should use for what gets tunneled through VPN, as well as what host ip/alias you want to use the non-VPN tunnel gateway from your ISP.
Hope this helps some others…
-
Hello,
Sorry for bumping this old thread up but it was a great tutorial. Followed every steps and in 15 minutes, all my devices are going through the VPN.
FYI, I have pFsense set up as a VM on ESXi.
However, I have 2 issues:
1. Even though internet works and a "what is my ip" shows I'm behind my VPN, the gateway shows offline in the dashboard. I have rebooted pfsense, stopped/started the openvpn service but it will always go to offline after being online for 15 seconds. Again: i still have internet access but if I open a shell on pFsense and try to ping the PIAVPN gateway, I get no response hence the offline status…what's the issue here?
[EDIT] I "fixed" it by disabling monitoring on the gateway.
2. I'm having trouble wrapping my head around accessing a service on a devices behind the VPN. Put simply, I have a synology that I access with DS audio on my phone to listen to my tunes. Everything works fine when the VPN is not running, however when it is, I can't connect to my synology.
I can see the packet arriving in the logs but it seems no response is ever sent out back even though I'm forcing the Synology to use the WAN gateway and not the VPN for outbound traffic.
Any clues? ???
-
Ok, allow me to answer my own question. Simply adding route-noexec to the openvpn client configuration (the part where you specify verb 5 etc.) fixed it. Only traffic that I specifically tell to use the vpn goes through the VPN, I am however perfectly able to access my audiostation, didn't even have to change anything in the port forwarding menu.
-
Love the tutorial and am almost there. I get stuck when I need to create the default firewall rule to route everything through the VPN.
I don't see the PIAVPN_VPN4 gateway. I tried to create it, though I didn't see that in the tutorial, but that didn't work either. I also notice that on the main page the PIAVPN interface never shows an IP address, but if I look under Status->OpenVPN it says it is connected and I see traffic in/out and ip addresses.
Any ideas what I missed? I"m running version 2.1.5-RELEASE
thanks,
davidEDIT:
I found my problem. Item #2 under "Create OpenVPN interface", It says ovpnc1() will be selected, but in my case it selected an unused ethernet over firewire port. When I finally noticed this and changed it to ovpnc(1) it worked! -
Awesome tutorial! Thank you for taking the time to write it up :)
-
Firstly, thank you for the amazing step-by-step tutorial. I literally had it completed in 10 minutes.
A few questions.
First, I have been playing with different servers provided by PIA, from Texas to California to Canada. Running the test at speedtest.net, my speeds went from 80-90mb/down and 30-40mb/up to 20-40mb/down and 1-4mb/up. I know the VPN will slow things down a bit, but I was not expecting this level of speed loss. Is this normal? My pfsense box is a dual core Atom (with hyperthreading) and this far CPU use has never peaked above 30%, usually at 13% (which is where it was prior to be configuring the VPN). Just curious if I should just keep testing servers to find one with better speed?
On the dashboard, my WAN and LAN interface graphs are showing plenty of traffic, but my PIAVPN interface is showing none. I am presently downloading a file – WAN is showing 500Kbps-5Mbps, but zero activity whatsoever on the VPN interface. Is this an indication that the VPN is being bypassed?
Using various ip lookup tools, every site is seeing me on an IP address in Canada (I am currently using the Canadian PIA VPN server). So why is there no traffic bring generated on the PIA VPN interface? As far as I can tell it is working.
Thanks again for the great tutorial.
ETA VPN just went down, logs show failure to resolve the hostname of the PIAVPN server I had chosen. Rebooting pfsense worked (I tried everything else I could think of) -- wonder how long it will be up and if this will happen again? I am using OpenDNS servers.
-
About a week ago, PIA service went to sh*t for me… It worked great for over a year, and now constant disconnects.
-
It's kind of early to say anything for sure–this is the longest I've went this week without being disconnected (30minutes so far; these past 2 weeks, it has usually been every 1-2 minutes)...
But anyway...
Under OpenVPN 'advanced configuration' (in pfsense), I added the following:
keepalive 5 30;
So now my 'advanced configuration' looks like this:
auth-user-pass /etc/openvpn-password.txt;persist-tun;verb 5;remote-cert-tls server;route-nopull;keepalive 5 30;
Note: I added this today:
route-nopull;
Not sure if it's doing anything (probably not) but left it there, since my connection is stable for the time being.
What I think is going on is PIA is pinging the client, but for whatever reason, the pings are getting blocked. So in turn 'keepalive 5 30;' does something to mitigate that...