J'utilise NordVPN sur Ubuntu Server depuis 2020 — d'abord sur Ubuntu Server 22.04 LTS, maintenant sur Ubuntu 24.04 LTS Noble. Avant ça, j'ai tourné avec Mullvad CLI pendant un an sur un VPS OVH (Fedora 39), et testé ProtonVPN sur Fedora 40 pour un client qui voulait le support NetworkManager. Linux est la plateforme où les VPN ont le plus progressé en 5 ans — et aussi celle où les pièges sont les plus subtils (DNS leak via systemd-resolved, kill switch qui disparaît au reboot, conflits NM). Ce guide documente ce qui fonctionne vraiment en 2026.
Pourquoi un VPN sur Linux en 2026 — cas d'usage réels
Linux n'est pas une plateforme homogène. Un développeur sur Pop!_OS, un sysadmin sur Ubuntu Server 22.04, et un journaliste sur Tails ont des besoins radicalement différents. Les quatre cas d'usage qui reviennent le plus dans ma pratique :
Road warrior / sysadmin en déplacement. Connexion depuis un hôtel ou un coworking, accès SSH à des serveurs de production. Sans VPN, le trafic SSH passe en clair sur le réseau local (l'encryption SSH protège le contenu, pas les métadonnées réseau). Avec un VPN actif, le seul trafic visible sur le réseau local est le tunnel chiffré. J'ai mesuré 892 Mbps download via NordVPN WireGuard (NordLynx) sur fibre 1 Gbps en mai 2026, contre 980 Mbps sans VPN — overhead de 9%, invisible pour du SSH ou du git push.
Privacy dev. Développer des outils ou services sensibles sans exposer son IP réelle aux services tiers que l'on teste (APIs, scrapers, tests de pénétration autorisés). Linux est la plateforme naturelle pour ce cas d'usage car on peut binder le VPN à une interface précise, router seulement certains processus dans le tunnel (split tunneling), ou configurer un namespace réseau isolé.
Admin de serveur VPN. Administrer un serveur WireGuard ou OpenVPN depuis Linux requiert de comprendre le setup côté client ET côté serveur. Ce guide couvre le côté client ; notre analyse WireGuard vs OpenVPN couvre les aspects serveur et protocole.
Utilisateur desktop Linux soucieux de sa vie privée. L'utilisateur GNOME ou KDE qui veut chiffrer sa connexion au café, accéder à des contenus géo-restreints, ou protéger sa navigation. Mullvad GUI et ProtonVPN GUI sur Wayland/GTK4 rendent ce cas d'usage aussi simple que sur Windows.
Critères pour choisir un VPN compatible Linux
Pas tous les VPN sont égaux sur Linux. Voici ce qui compte vraiment :
Package officiel signé (.deb / .rpm). Un VPN qui distribue juste un binaire sans package géré par apt/dnf crée une maintenance manuelle — pas de mise à jour automatique, pas de vérification GPG. NordVPN, Mullvad, ProtonVPN et ExpressVPN publient tous des packages officiels signés, référencés dans leurs propres repos apt/dnf.
CLI ergonomique. Sur Linux, on passe souvent par le terminal. Une CLI intuitive (nordvpn connect, mullvad connect, protonvpn-cli connect) fait gagner du temps. ExpressVPN CLI est fonctionnel mais moins cohérent syntaxiquement.
Kill switch natif Linux. Le kill switch doit couper tout trafic si le tunnel tombe. Sur Linux, il passe par iptables ou nftables. NordVPN et Mullvad le gèrent proprement ; ProtonVPN l'implémente via NM ou iptables. Pour WireGuard manuel, il faut l'écrire soi-même (voir section Troubleshooting).
Support NetworkManager. Utile pour les environnements GNOME/KDE qui gèrent les connexions réseau via NM. ProtonVPN est le seul grand fournisseur qui propose une intégration NM complète avec plugin officiel. NordVPN et Mullvad utilisent leur propre daemon.
Autostart systemd. Le service VPN doit démarrer au boot sans intervention. NordVPN, Mullvad et ProtonVPN ont tous un service systemd qui s'active avec systemctl enable.
Multi-distro packages. Debian/Ubuntu (.deb), Fedora/RHEL (.rpm), Arch (AUR), AppImage pour les autres. Mullvad est le plus complet sur ce point avec en plus un AppImage universel.
Top 4 VPN Linux 2026 — comparatif 6 critères
| Critère | NordVPN | Mullvad | ProtonVPN | ExpressVPN |
|---|---|---|---|---|
| Package officiel | .deb + .rpm | .deb + .rpm + AppImage | .deb + .rpm | .deb + .rpm |
| GUI Linux | Oui (Electron) | Oui (GTK4/Wayland) | Oui (GTK4/Wayland) | Non |
| CLI | Oui (nordvpn) | Oui (mullvad) | Oui (protonvpn-cli) | Oui (expressvpn) |
| Kill switch | iptables natif | nftables natif | iptables / NM | Manuel iptables |
| NetworkManager | Non | Non | Oui (plugin officiel) | Non |
| Autostart systemd | nordvpn-daemon | mullvad-daemon | protonvpn-daemon | expressvpn |
NordVPN sur Linux — L'app officielle existe depuis 2018 mais a franchement mûri en 2023-2024. La CLI nordvpn est la plus intuitive : nordvpn connect, nordvpn set killswitch on, nordvpn set autoconnect on. Le daemon nordvpnd tourne à 45-60 MB RAM au repos sur mes serveurs Ubuntu 24.04. Le protocole par défaut est NordLynx (WireGuard custom avec double NAT pour la vie privée) — j'obtiens 850-920 Mbps sur fibre 1 Gbps, latence ajoutée de 3-8ms vers Paris. Seul bémol : GUI Electron, pas natif Wayland.
Mullvad sur Linux — Le fournisseur qui a poussé le plus loin la qualité de son client Linux. Package .deb et .rpm signés, plus un AppImage universel pour Arch et les distros exotiques. GUI GTK4 natif Wayland, CLI mullvad claire. Kill switch nftables documenté et open-sourcé. Seule particularité : compte Mullvad sans email (juste un numéro), payable en cash ou Monero. Throughput mesuré sur mon VPS : 780 Mbps en WireGuard (distros avec kernel 5.15+), RAM daemon : 38-55 MB.
ProtonVPN sur Linux — Le seul avec intégration NetworkManager officielle via le plugin network-manager-openvpn (ou WireGuard NM) — utile si vous préférez gérer les connexions depuis GNOME Settings sans toucher au terminal. CLI protonvpn-cli disponible. Basé en Suisse, open-source, audité. RAM mesurée sur Fedora 40 : 42-65 MB (daemon seul), 120 MB avec GUI ouvert.
ExpressVPN sur Linux — Client CLI uniquement sur Linux, pas de GUI. Configuration simplifiée mais moins de contrôle granulaire. Pas de support NM. Throughput correcte (~750 Mbps WireGuard sur ma connexion test) mais le prix plus élevé et l'absence de GUI le rendent moins compétitif face à NordVPN et Mullvad pour un usage desktop Linux.
Setup étape par étape — Ubuntu 24.04 LTS (Noble)
NordVPN sur Ubuntu 24.04
# 1. Télécharger et vérifier le script d'installation officiel
curl -sSf https://downloads.nordcdn.com/apps/linux/install.sh -o nordvpn-install.sh
sha256sum nordvpn-install.sh # vérifier le hash sur nordvpn.com/download/linux/
# 2. Installer
sudo sh nordvpn-install.sh
# 3. Ajouter votre utilisateur au groupe nordvpn (requis depuis v3.12)
sudo usermod -aG nordvpn $USER
newgrp nordvpn # ou déconnexion/reconnexion session
# 4. Login (ouvre un lien dans le navigateur)
nordvpn login
# 5. Activer kill switch et DNS protection AVANT la première connexion
nordvpn set killswitch on
nordvpn set dns 103.86.96.100 103.86.99.100 # DNS NordVPN
nordvpn set autoconnect on
# 6. Connexion au serveur le plus rapide
nordvpn connect
# 7. Vérifier l'état
nordvpn status
# → Status: Connected | Server: France #589 | IP: 185.234.x.x | Protocol: NordLynx
Autostart systemd (Ubuntu 24.04 active nordvpnd automatiquement via le package) :
systemctl status nordvpnd # doit être active (running)
sudo systemctl enable nordvpnd # si pas déjà activé
Vérification DNS après connexion :
resolvectl status
# Vérifier que l'interface tun0 ou nordlynx pointe vers les DNS NordVPN
# Si systemd-resolved interfère : voir section Troubleshooting
Mullvad sur Ubuntu 24.04
# 1. Ajouter le repo Mullvad
sudo curl -fsSLo /usr/share/keyrings/mullvad-keyring.asc \
https://repository.mullvad.net/deb/mullvad-keyring.asc
echo "deb [signed-by=/usr/share/keyrings/mullvad-keyring.asc arch=$(dpkg --print-architecture)] \
https://repository.mullvad.net/deb/stable $(lsb_release -cs) main" | \
sudo tee /etc/apt/sources.list.d/mullvad.list
# 2. Installer
sudo apt update && sudo apt install mullvad-vpn
# 3. Connexion (via GUI ou CLI)
mullvad account login <votre-numéro-compte>
mullvad connect
# 4. Kill switch et autoconnect
mullvad lockdown-mode set on # kill switch strict (bloque si VPN non connecté)
mullvad auto-connect set on
# 5. Vérifier
mullvad status
# → Connected to se-got-wg-001 in Göteborg, Sweden
Setup étape par étape — Fedora 41
Variation dnf vs apt
Sur Fedora 41, dnf remplace apt. Les packages .rpm officiels NordVPN et Mullvad s'installent directement :
# NordVPN sur Fedora 41
curl -sSf https://downloads.nordcdn.com/apps/linux/install.sh | sudo sh
# Le script détecte Fedora et utilise dnf automatiquement
# Mullvad sur Fedora 41
sudo dnf install https://mullvad.net/download/app/rpm/latest
Considérations SELinux sur Fedora 41
Fedora 41 tourne en SELinux enforcing par défaut. Deux situations possibles :
NordVPN sur Fedora avec SELinux :
# Si nordvpnd échoue à démarrer (AVC deny dans journalctl)
sudo ausearch -m avc -ts recent | grep nordvpn
sudo restorecon -v /usr/sbin/nordvpn /usr/bin/nordvpn
# Vérifier que le service démarre correctement
sudo systemctl restart nordvpnd
systemctl status nordvpnd
Mullvad sur Fedora 41 : Le .rpm intègre un module SELinux depuis la version 2024.1 — aucune manipulation requise. C'est l'un des avantages de Mullvad sur Fedora.
ProtonVPN sur Fedora : Si vous utilisez l'intégration NetworkManager, installer le plugin WireGuard NM :
sudo dnf install NetworkManager-wireguard
# Puis importer la config ProtonVPN via GNOME Settings > VPN
Firewalld vs iptables : Fedora utilise firewalld par défaut. NordVPN et Mullvad gèrent iptables directement — des conflits peuvent apparaître. Solution recommandée :
# Vérifier les conflits
sudo firewall-cmd --list-all
# Si NordVPN bloque : passer firewalld en mode direct ou utiliser nftables
sudo systemctl stop firewalld # temporaire, pour test
nordvpn connect
WireGuard manuel pour utilisateurs avancés
Pour un serveur VPS, une config NAS, ou quiconque veut contrôle total sans daemon tiers :
Installation
# Ubuntu/Debian
sudo apt install wireguard wireguard-tools
# Fedora/RHEL
sudo dnf install wireguard-tools
# Vérifier le module kernel
sudo modprobe wireguard && echo "WireGuard OK"
Génération des clés
cd /etc/wireguard
umask 077 # permissions restrictives OBLIGATOIRE
wg genkey | sudo tee privatekey | wg pubkey | sudo tee publickey
Fichier de configuration wg0.conf
[Interface]
PrivateKey = <votre-clé-privée>
Address = 10.0.0.2/24
DNS = 103.86.96.100 # DNS NordVPN, ou 10.64.0.1 pour Mullvad
PostUp = resolvectl dns %i 103.86.96.100; resolvectl domain %i '~.'
PreDown = resolvectl revert %i
[Peer]
PublicKey = <clé-publique-du-serveur-VPN>
AllowedIPs = 0.0.0.0/0, ::/0
Endpoint = <ip-serveur>:51820
PersistentKeepalive = 25
Démarrage et autostart
# Démarrer le tunnel
sudo wg-quick up wg0
# Vérifier la connexion
sudo wg show
curl ifconfig.me # doit retourner l'IP du serveur VPN
# Autostart au boot
sudo systemctl enable wg-quick@wg0
sudo systemctl start wg-quick@wg0
Routes et firewall (ufw/firewalld)
# ufw (Ubuntu/Debian) — autoriser WireGuard
sudo ufw allow 51820/udp
sudo ufw reload
# firewalld (Fedora) — ajouter WireGuard à la zone trusted
sudo firewall-cmd --add-interface=wg0 --zone=trusted --permanent
sudo firewall-cmd --reload
Troubleshooting — problèmes fréquents
DNS leak via systemd-resolved
Symptôme : curl ifconfig.me retourne l'IP VPN mais nslookup google.com utilise le DNS du FAI.
Diagnostic :
resolvectl status | grep -A5 "DNS Servers"
# Si l'interface principale (eth0/ens3) garde les DNS FAI, il y a un leak
Fix :
# Forcer le DNS VPN sur l'interface tunnel
sudo resolvectl dns tun0 103.86.96.100 # remplacer tun0 par votre interface VPN
sudo resolvectl domain tun0 '~.' # router tout DNS via tun0
# Test de vérification
nslookup google.com
# Doit répondre via les DNS NordVPN, pas les DNS FAI
Kill switch via nftables (WireGuard manuel)
Règles nftables pour bloquer tout trafic si wg0 est down :
sudo nft add table inet vpn_killswitch
sudo nft add chain inet vpn_killswitch output "{ type filter hook output priority 0; policy drop; }"
sudo nft add rule inet vpn_killswitch output oifname "lo" accept
sudo nft add rule inet vpn_killswitch output oifname "wg0" accept
sudo nft add rule inet vpn_killswitch output ip daddr <ip-serveur> accept # trafic WG sortant
# Sauvegarder pour la persistance au reboot
sudo nft list ruleset > /etc/nftables.conf
sudo systemctl enable nftables
Conflits NetworkManager
Symptôme : NM reconfigure les DNS après que NordVPN/Mullvad les ait fixés.
Fix :
# Désactiver la gestion DNS par NM (si vous n'utilisez pas l'intégration NM)
sudo nano /etc/NetworkManager/NetworkManager.conf
# Ajouter dans [main] :
# dns=none
sudo systemctl restart NetworkManager
Autostart au boot qui ne fonctionne pas
# Vérifier le service
sudo systemctl status nordvpnd # ou mullvad-daemon
# Activer explicitement
sudo systemctl enable nordvpnd
sudo systemctl enable --now nordvpnd # enable + démarrage immédiat
# Pour NordVPN : activer l'autoconnect DANS l'app
nordvpn set autoconnect on
Pour les configurations de protocoles avancées (choix WireGuard vs OpenVPN selon votre réseau), consultez notre analyse technique WireGuard vs OpenVPN 2026. Si vous évaluez NordVPN vs Surfshark pour votre usage Linux, notre comparatif Surfshark vs NordVPN couvre aussi les apps Linux. Pour les journalistes et activistes qui utilisent Linux, le guide VPN journaliste et activiste 2026 couvre le modèle de menace spécifique.
★ Audit Deloitte 2024 · ✓ Garantie 30 jours · 14M+ utilisateurs (source : NordVPN press)
Essayer NordVPN sur Linux — app native .deb/.rpmApp officielle Ubuntu/Fedora · CLI ergonomique · kill switch iptables intégré · 30 jours satisfait ou remboursé→★ Audit Deloitte 2024 · ✓ Garantie 30 jours · 14M+ utilisateurs (source : NordVPN press)
Voir l'offre NordVPN30 jours satisfait ou remboursé→