Setting up ExpressVPN on Ubuntu


I’ve been meaning to set up a VPN and this morning seemed like a good time to tick it off the bucket list. This is a quick outline of my experience, which included one minor hiccup.

Sign Up

There are a number of vendors to choose from, but based on a recommendation I had a look at ExpressVPN. The first thing that you need to do is create an account. You’ll need to provide credit card details and you have a choice of subscription periods. There’s a 30 day money back offer, which means that you can try this out with no significant risk.

Download the Client

Click the button to download the client. Then install.

$ ls -l *.deb
-rw-rw-r-- 1 colliera colliera 9419912 Jun 24 07:07 expressvpn_1.2.0_amd64.deb
$ sudo dpkg -i expressvpn_1.2.0_amd64.deb

The install went flawlessly for me.


Next you need to apply the activation code from the web site.

$ expressvpn activate
Enter activation code:


Connecting (First Attempt)

At this point everything had gone very smoothly and I was feeling most optimistic. So I went ahead and tried to connect to a VPN server. By default a connection will be made to a suitable server based on your geographic location.

$ expressvpn connect
Connecting to Smart Location...
Connecting to UK - Berkshire... 87.5%
We were unable to connect to this VPN location.

To connect, please try the following:

- Check that your Internet connection is working and try to connect again.
- Try connect to another VPN location.
- Switch to another protocol

Well, that’s no good! Luckily it’s easy to get some diagnostics.

$ expressvpn diagnostics | tail
Sat Jun 24 07:19:37 2017 OPTIONS IMPORT: route options modified
Sat Jun 24 07:19:37 2017 OPTIONS IMPORT: --ip-win32 and/or --dhcp-option options modified
Sat Jun 24 07:19:37 2017 TUN/TAP device tun0 opened
Sat Jun 24 07:19:37 2017 TUN/TAP TX queue length set to 100
Sat Jun 24 07:19:37 2017 do_ifconfig, tt->ipv6=0, tt->did_ifconfig_ipv6_setup=0
Sat Jun 24 07:19:37 2017 /sbin/ifconfig tun0 pointopoint mtu 1500
Sat Jun 24 07:19:37 2017 Linux ifconfig failed: could not execute external program
Sat Jun 24 07:19:37 2017 Exiting due to fatal error
Disconnected with error: vpn process terminated unexpectedly

That’s unexpected: unable to execute ifconfig. I’m working on a fresh Ubuntu install, so evidently I haven’t yet installed all of the usual tools. Easily remedied.

$ sudo apt install net-tools

Connecting (Second Attempt)

Let’s try connecting again.

$ expressvpn connect
Connecting to Smart Location...
Connecting to UK - Berkshire... 100.0%


Bingo! Check your IP address location.

So I’ve automatically been connected to a VPN server in Berkshire. Let’s disconnect and see what other server locations are available.

$ expressvpn disconnect
$ expressvpn list | head
----- --------------- ------------------------------ -----------
smart Smart Location UK - Berkshire Y
ukbe United Kingdom (GB) UK - Berkshire Y
ukel UK - East London Y
uklo UK - London
ukke UK - Kent
ukbe2 UK - Berkshire - 2
ukch UK - Chessington
ukma UK - Maidenhead
$ expressvpn list | tail
ge1 Georgia (GE) Georgia
az1 Azerbaijan (AZ) Azerbaijan
kg1 Kyrgyzstan (KG) Kyrgyzstan
eg1 Egypt (EG) Egypt
ke1 Kenya (KE) Kenya
dz1 Algeria (DZ) Algeria
uz1 Uzbekistan (UZ) Uzbekistan
bd1 Bangladesh (BD) Bangladesh
bt1 Bhutan (BT) Bhutan
bnbr Brunei Darussalam (BN) Brunei
$ expressvpn list | grep Africa
za1 South Africa (ZA) South Africa Y

So there’s a server located in South Africa. It’s interesting to browse the full list of locations with ExpressVPN servers. Obviously the choice of server will be dictated by your reason for using the VPN. There’s a handy guide to the various considerations in choosing a server location.

We’ll connect to the South African server by specifying its alias.

$ expressvpn connect za1
Connecting to South Africa... 100.0%


I feel like I’ve just started to scratch the surface with this technology, but it’s been a pleasant experience so far. Looking forward to delving deeper.

Categorically Variable