WireGuard is a secure and fast VPN protocol, now available in our Windows, macOS, Android, and iOS/iPadOS apps.
If you are on one of these platforms then we strongly recommend using WireGuard via our apps as this is the easiest way to use WireGuard and it allows you to benefit from many of Proton VPN’s advanced features. For example:
- Kill switch and permanent kill switch
- Smart protocol
- DNS leak protection
- Port forwarding (Windows only)
However, Proton VPN’s implementation of WireGuard follows the official open-source specifications for the protocol. This means that advanced users can use any WireGuard client that also matches official specifications to connect to Proton VPN servers using WireGuard. This includes WireGuard clients built into routers.
To configure a third-party WireGuard client for use with Proton VPN, you need to download a WireGuard configuration file.
How to download a WireGuard configuration file
1. Log in to account.protonvpn.com and go to Downloads → WireGuard configuration.
2. Create a name for the config you are about to generate and then select:
- VPN options (Netshield Ad-blocker filtering level, Moderate NAT, VPN Accelerator)
- Server to connect to (choose from the list or accept our recommended server based on current server load and your location)
Note that if you are on a Free plan, the only VPN option available to you is VPN Accelerator. To access more advanced features, you can upgrade. To do this, log in to account.protonvpn.com and go to Dashboard → Plans.
3. Wait a few seconds for Proton VPN to generate the WireGuard config file. By default, these files expire after one year. Click the Extend button to extend the validity of the configuration file by one year. Otherwise, click Download to save the configuration file as a .conf file.
You can now use this file to configure any WireGuard client that conforms to the open-source WireGuard standard for use with Proton VPN.
How to use WireGuard with NetworkManager on Ubuntu 20.04 LTS
We provide the following guide as an example of how to use Proton VPN WireGuard config files to set up a VPN connection to our servers.
1. Open Terminal from your Home directory and install WireGuard using the following command:
sudo apt install wireguard git dh-autoreconf libglib2.0-dev intltool build-essential libgtk-3-dev libnma-dev libsecret-1-dev network-manager-dev resolvconf
2. Clone the NetworkManager plugin from GitHub, compile, and install it using the following commands (hit <enter> after each line):
git clone https://github.com/max-moser/network-manager-wireguard cd network-manager-wireguard ./autogen.sh --without-libnm-glib ./configure --without-libnm-glib --prefix=/usr --sysconfdir=/etc --libdir=/usr/lib/x86_64-linux-gnu --libexecdir=/usr/lib/NetworkManager --localstatedir=/var make sudo make install
3. Open NetworkManager → VPN → +.
4. If the WireGuard option is not available, restart your computer and try again. If it is, select Import from file…
5. Locate the .conf configuration file you downloaded from Proton VPN using your file manager and click Add.
6. Configuration is now complete. In NetworkManager, simply toggle the VPN switch next to the WireGuard connection you just created on.
You are now connected to Proton VPN using the WireGuard protocol.