Geek Home

My VPN Service Showdown

You need to determine what things are important to when when looking for a VPN Service.

Features I wanted:

  1. reasonable P2P allowances
  2. support for pfSense
  3. speed, ideally 80-100% of my bandwidth capability
  4. streaming video, eg, Netflix or Amazon Video not blocked

I am less concerned about:

  • company location, ie, if the company is US-based
  • logs, since all services shy away from keeping logs

I imagined that I may use some online-service (eg, Netflix) which wouldn’t work correctly, so I also setup another wifi network which bypasses all VPN connections.

My Top Service


I like Mullvad a lot. The pricing is very simple at $5/mo and there isn’t any long-term commitment necessary to get that pricing (ie, no need to pay for a full-year up front). I switched to a different server and was getting consistent 100-110 Mb/s download.

Signing up is dead simple. And the installation on pfSense seemed to be one of the easiest as well.

Mullvad also has port-forwarding capabilities. Unfortunately it didn’t help with my Plex issues.

Tested Services

Private Internet Access

I used a friend’s PIA account for this. Initially the speeds were great at around 110-120 Mbps, but after a few days they would drop to 5 Mbps and never recover.


ExpressVPN was decent. Their server speeds were consistent but pretty slow. On average, I was getting only 1/2 of my regular bandwidth.

The look of the website is clean, but I found it difficult to find out how to actually install their desktop software.


Separate server choices for P2P. Crazy number of US servers ! (but I don’t know where they are)

Downloaded software directly from their website. After launch it notified me that there were updates ! (Hmm, that’s bad ! The download should have already been the latest version.)

NordVPN had relatively higher speeds – definitely over 70-80 Mbps. However, it was hard to consistently test with

Their pfsense configuration was much more complex, including special DNS configurations which no one else had. My browsers would hang while surfing, etc. I seemed to be because the DNS queries took awhile to work – for example, on the command line I would ping a server. The first two responses would be icmp errors, then the ping would go through and would resolve the IP address.


(to try)


This was the first VPN service I tried, however at the time I didn’t yet have my pfSense router. The service seemed good, so I’d like to try it again.


(to try)


Code Sample Geek

Auto Connect to VPN on Boot & Login in MacOS Sierra

I added VPN connectivity to my network and I wanted to make sure the connection to the remote VPN was always running. One way to do this is to use AppleScript to check the connection status. The problem I had was that the AppleScripts that I found no longer worked with MacOS Sierra.

After some digging, I got it to work. Here’s my script:

on idle
  set myVPN to "VPN (dallas)" -- set name of VPN connection
    set isConnected to do shell script "scutil --nc show \"" & myVPN & "\" | grep -c Connected"
  on error
    set isConnected to "0"
  end try
  if isConnected = "0" then
    do shell script "scutil --nc start \"" & myVPN & "\""
  end if
  return 15 -- how often to check, seconds
end idle


Change the variable myVPN to the name of your network connection. Here mine is VPN (dallas).

Also modify the return value if you want the time between checks to be longer or shorter. Here I’ve set mine to 15 seconds.


These are the some of the pages that I started with. The instructions for script generation and auto-boot still apply. So you can still reference them for those other tasks:


Some other tech references which helped:
* “on idle” reference