rss logo

Comment créer une passerelle VPN Mozilla sur Ubuntu Linux

Tutoriel sur la passerelle VPN Mozilla pour Ubuntu et Arch Linux

Je possède une licence pour Mozilla VPN, car je trouve que c’est une excellente façon de soutenir la fondation, et c'est une très bonne solution VPN. Mais je dois avouer que je suis un peu frustré !

En effet, Mozilla VPN prend officiellement en charge Windows 10/11, macOS, Android, iOS, Ubuntu et partiellement Debian. Mais que faire si vous utilisez Arch Linux ou une autre distribution non prise en charge ?

Ce guide vous montre comment créer une passerelle VPN avec Ubuntu pour rediriger le trafic de n’importe quelle machine Linux de votre réseau à travers Mozilla VPN. Cette solution est non seulement plus flexible, mais aussi plus pratique que d’installer le client VPN sur chaque appareil.

Ce que vous allez apprendre :

💡 Important : la licence Mozilla VPN permet jusqu’à 5 appareils. Ce tutoriel ne doit pas être utilisé pour dépasser cette limite. Merci de respecter les conditions de licence.

Architecture réseau de la passerelle VPN

Ce tutoriel explique comment configurer une machine Ubuntu en tant que routeur de passerelle VPN. Cette configuration permet à n’importe quel appareil de votre réseau — comme un poste Arch Linux — d’acheminer son trafic via la connexion Mozilla VPN.

Schéma réseau montrant une passerelle VPN Ubuntu routant le trafic d’un client Arch Linux via Mozilla VPN vers Internet
Topologie réseau : le serveur Ubuntu (192.168.1.1) agit comme passerelle VPN et redirige le trafic du client Arch Linux (192.168.1.10) à travers l’interface WireGuard de Mozilla VPN vers Internet.

Configurer Ubuntu comme passerelle VPN

Logo Ubuntu

Installer Mozilla VPN sur Ubuntu

Suivez ces étapes pour installer Mozilla VPN depuis le dépôt APT officiel de Mozilla pour Linux. Utiliser le dépôt officiel garantit les mises à jour automatiques et la vérification correcte des paquets.

Ajouter le dépôt APT de Mozilla

  • Créez le répertoire APT keyrings :
user@ubuntu:~$ sudo install -d -m 0755 /etc/apt/keyrings
  • Importez la clé de signature du dépôt APT de Mozilla :
user@ubuntu:~$ wget -q https://packages.mozilla.org/apt/repo-signing-key.gpg -O- | sudo tee /etc/apt/keyrings/packages.mozilla.org.asc > /dev/null
  • Vérifiez que l’empreinte correspond à 35BAA0B33E9EB396F59CA838C0BA5CE6DC6315A3 pour confirmer l’authenticité :
user@ubuntu:~$ gpg -n -q --import --import-options import-show /etc/apt/keyrings/packages.mozilla.org.asc | awk '/pub/{getline; gsub(/^ +| +$/,""); if($0 == "35BAA0B33E9EB396F59CA838C0BA5CE6DC6315A3") print "\nL’empreinte correspond ("$0").\n"; else print "\nÉchec de la vérification : l’empreinte ("$0") ne correspond pas à celle attendue.\n"}'
  • Ajoutez le dépôt Mozilla APT à votre liste de sources :
user@ubuntu:~$ echo "deb [signed-by=/etc/apt/keyrings/packages.mozilla.org.asc] https://packages.mozilla.org/apt mozilla main" | sudo tee -a /etc/apt/sources.list.d/mozilla.list > /dev/null

Installer le paquet Mozilla VPN

  • Mettez à jour la liste des paquets et installez Mozilla VPN :
user@ubuntu:~$ sudo apt update
user@ubuntu:~$ sudo apt install mozillavpn

Exporter la configuration de Mozilla VPN pour WireGuard

Lancer Mozilla VPN depuis l’interface graphique :

Cliquez sur l’interrupteur pour activer la connexion VPN. Vous pouvez choisir l’emplacement du serveur (par exemple : Tokyo) avant de vous connecter.

Application de bureau Mozilla VPN affichant le bouton d’activation et le serveur Tokyo sélectionné
Interface graphique de Mozilla VPN — cliquez sur l’interrupteur pour activer la connexion VPN.

Enregistrer la configuration VPN actuelle dans un fichier WireGuard :

Utilisez la commande mozillavpn wgconf pour exporter votre configuration VPN. Cela crée un fichier wireguard.conf utilisable avec les outils standard de WireGuard :

user@ubuntu:~$ mozillavpn wgconf > wireguard.conf

Désactiver Mozilla VPN depuis l’interface graphique :

Une fois la configuration exportée, désactivez le client Mozilla VPN en cliquant à nouveau sur l’interrupteur. Nous allons ensuite utiliser directement WireGuard à la place de l’application graphique.

Application de bureau Mozilla VPN affichant une connexion active et sécurisée au serveur Tokyo avec le bouton activé
Connexion active sur Mozilla VPN — cliquez sur l’interrupteur pour vous déconnecter et passer sous contrôle WireGuard.

Démarrer le VPN avec WireGuard :

Chargez le fichier de configuration exporté avec la commande wg-quick :

user@ubuntu:~$ sudo wg-quick up ./wireguard.conf

💡 Astuce : si nécessaire, utilisez wg-quick down ./wireguard.conf pour arrêter la connexion VPN.

Activer le routage IP sur Ubuntu

Pour transformer votre serveur Ubuntu en passerelle VPN, vous devez activer le routage IP (IP forwarding). Ce paramètre du noyau permet au serveur de transférer les paquets entre les interfaces réseau — une étape essentielle pour faire passer le trafic des clients à travers le tunnel Mozilla VPN.

Activer le routage IPv4

  • Méthode temporaire (active jusqu’au redémarrage) :
user@ubuntu:~$ echo 1 | sudo tee /proc/sys/net/ipv4/ip_forward
  • Méthode persistante (conservée après redémarrage). Éditez le fichier /etc/sysctl.conf et ajoutez ou décommentez la ligne suivante :
net.ipv4.ip_forward=1
  • Appliquez les modifications de configuration :
user@ubuntu:~$ sudo sysctl -p

Activer le routage IPv6

  • Méthode temporaire (active jusqu’au redémarrage) :
user@ubuntu:~$ echo 1 | sudo tee /proc/sys/net/ipv6/conf/all/forwarding
  • Méthode persistante (conservée après redémarrage). Éditez le fichier /etc/sysctl.conf et ajoutez ou décommentez la ligne suivante :
net.ipv6.conf.all.forwarding=1
  • Appliquez les modifications de configuration :
user@ubuntu:~$ sudo sysctl -p

Configurer les règles de masquage NAT

Configurez le masquage NAT (Network Address Translation) afin de permettre aux clients d’acheminer leur trafic via la passerelle VPN. Ce mécanisme traduit les adresses IP internes en l’adresse externe utilisée par le VPN.

Masquage IPv4

  • Ajoutez la règle iptables NAT :
user@ubuntu:~$ sudo iptables -t nat -A POSTROUTING -o wireguard -j MASQUERADE

Masquage IPv6

  • Ajoutez la règle ip6tables NAT :
user@ubuntu:~$ sudo ip6tables -t nat -A POSTROUTING -o wireguard -j MASQUERADE

La configuration de la passerelle VPN Ubuntu est maintenant terminée. Le serveur peut désormais rediriger le trafic des clients à travers le tunnel Mozilla VPN. Dans la section suivante, nous allons configurer une machine Arch Linux pour utiliser cette passerelle comme accès Internet.

Configurer un client Arch Linux pour utiliser la passerelle VPN

Logo Arch Linux

Maintenant que la passerelle VPN Ubuntu est opérationnelle, vous pouvez configurer vos appareils clients afin qu’ils redirigent leur trafic à travers celle-ci. Cette section présente trois stratégies de routage différentes pour les clients Arch Linux :

  • Rediriger tout le trafic — Acheminer l’intégralité du trafic Internet via la passerelle VPN
  • Rediriger certains hôtes — Ne faire passer que le trafic vers certaines adresses IP par le VPN
  • Routage basé sur les ports (PBR) — Acheminer le trafic selon les protocoles (HTTP, HTTPS, etc.) via le VPN

Choisissez la méthode qui correspond le mieux à vos besoins. La première option est la plus simple, tandis que le routage basé sur les ports offre la plus grande flexibilité.

Rediriger tout le trafic via la passerelle VPN

C’est la méthode de configuration la plus simple. En modifiant la passerelle par défaut sur votre client Arch Linux, tout le trafic Internet sera automatiquement acheminé à travers la passerelle VPN Ubuntu.

Configurer la route par défaut IPv4

  • Supprimez la route par défaut actuelle :
root@arch:~# route del default
  • Ajoutez la passerelle VPN comme route par défaut (remplacez 192.168.1.1 par l’adresse IP de votre passerelle Ubuntu et ens160 par le nom de votre interface réseau) :
root@arch:~# route add default via 192.168.1.1 dev ens160

Configurer la route par défaut IPv6

💡 Obtenir l’adresse IPv6 de la passerelle Ubuntu : Exécutez ip -6 addr show sur le routeur Ubuntu pour trouver son adresse locale de lien (elle commence par fe80::).

  • Depuis la passerelle VPN Ubuntu, notez l’adresse IPv6 locale de lien :
user@ubuntu:~$ ip -6 addr sh
2: ens192: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
    inet6 2001:db8::/64 scope global dynamic mngtmpaddr
       valid_lft 86187sec preferred_lft 14187sec
    inet6 fe80::aaff:874a:dead:bee5/64 scope link
       valid_lft forever preferred_lft forever
  • Depuis le client Arch Linux, supprimez la route par défaut IPv6 actuelle :
root@arch:~# ip -6 route del default
  • Ajoutez la passerelle VPN comme route par défaut IPv6 (remplacez fe80::aaff:874a:dead:bee5 par l’adresse locale de lien de votre passerelle Ubuntu et ens160 par le nom de votre interface) :
root@arch:~# ip -6 route add default via fe80::aaff:874a:dead:bee5 dev ens160 metric 1

Rediriger certains hôtes via la passerelle VPN

Plutôt que de faire passer tout le trafic par le VPN, vous pouvez configurer des routes statiques vers des adresses IP ou des réseaux spécifiques. Cette méthode permet d’utiliser sélectivement le VPN pour certaines destinations tout en conservant un accès Internet direct pour le reste.

Routage IPv4 basé sur les hôtes

  • Faites passer une adresse IP unique par la passerelle VPN — par exemple, pour rediriger le trafic destiné au DNS de Google (8.8.8.8) via le VPN :
root@arch:~# ip route add 8.8.8.8 via 192.168.1.1 dev ens160
  • Faites passer un réseau entier via la passerelle VPN :
root@arch:~# ip route add 10.0.0.0/8 via 192.168.1.1 dev ens160
  • Faites passer plusieurs hôtes spécifiques par la passerelle VPN :
root@arch:~# ip route add 1.1.1.1 via 192.168.1.1 dev ens160
root@arch:~# ip route add 8.8.4.4 via 192.168.1.1 dev ens160

Routage IPv6 basé sur les hôtes

  • Faites passer une adresse IPv6 spécifique via la passerelle VPN :
root@arch:~# ip -6 route add 2001:0db8::1 via fe80::aaff:874a:dead:bee5 dev ens160

Vérifier et gérer les routes

  • Afficher la table de routage :
root@arch:~# ip route show
  • Supprimer une route statique :
root@arch:~# ip route del 8.8.8.8

💡 Cas d’usage : cette méthode est idéale pour accéder à des services géo-restreints via le VPN tout en conservant une connexion rapide et directe pour la navigation ou les téléchargements locaux.

Routage basé sur les ports (PBR)

PBR (Port-Based Routing) consiste à marquer certains paquets réseau qui doivent être acheminés via la passerelle VPN. Seuls les paquets portant la marque 0x80 utiliseront la route VPN. Cette méthode permet d’envoyer des hôtes ou des protocoles spécifiques — comme le trafic HTTP ou HTTPS — à travers le tunnel Mozilla VPN, tout en laissant le reste du trafic passer par le réseau classique.

Table de routage VPN

  • Créez une table de routage dédiée au VPN :
root@arch:~# echo "200  vpn" >> /etc/iproute2/rt_tables
  • Associez la marque de paquet 0x80 à la table vpn :
root@arch:~# ip rule add fwmark 0x80 table vpn
  • Ajoutez votre passerelle VPN Ubuntu comme route par défaut dans la table vpn :
root@arch:~# ip route add default via 192.168.1.1 dev ens160 table vpn
  • Vérifiez la table de routage VPN :
root@arch:~# ip route list table vpn
default via 192.168.1.1 dev ens160

Routage de protocoles spécifiques avec des règles nftables

Dans cet exemple, nous allons marquer les paquets sortants HTTP et HTTPS afin qu’ils soient routés via la passerelle VPN. L’utilisation de nftables permet de marquer les paquets de manière flexible selon les ports, les adresses ou les protocoles — une approche puissante pour les configurations avancées de routage Linux avec Mozilla VPN.

  • Créez une nouvelle chaîne MANGLE nftables :
root@arch:~# nft add chain ip filter MANGLE { type route hook output priority -150\; policy accept \; }
  • Marquez tous les paquets HTTP et HTTPS à l’exception de ceux destinés au réseau local (192.168.1.0/24) :
root@arch:~# nft add rule ip filter MANGLE tcp dport { 80, 443 } ip daddr \!= { 192.168.1.0/24 } meta mark set 0x80 counter
  • Pour marquer tous les paquets TCP sortants à la place :
root@arch:~# nft add rule ip filter MANGLE tcp sport \>= 1024 ip daddr \!= { 192.168.1.0/24 } meta mark set 0x80 counter
  • Pour marquer tous les paquets UDP sortants :
root@arch:~# nft add rule ip filter MANGLE udp sport \>= 1024 ip daddr \!= { 192.168.1.0/24 } meta mark set 0x80 counter

Vérifier votre connexion VPN

Maintenant que tout est configuré, vérifions que votre trafic passe bien par la passerelle VPN Mozilla. Le moyen le plus simple de le confirmer consiste à vérifier votre adresse IP publique (adresse WAN). Si votre VPN fonctionne correctement, votre adresse IP doit correspondre à la localisation du serveur VPN que vous avez sélectionné.

IPv4

  • Récupérez votre adresse IPv4 publique actuelle :
root@arch:~# curl ipinfo.io/ip

IPv6

  • Récupérez votre adresse IPv6 publique actuelle :
root@arch:~# telnet -6 ipv6.telnetmyip.com

Vérifier les adresses IP avec l’extension Firefox STIP

J’ai développé une extension Firefox légère appelée STIP 🥰, qui vous permet d’afficher instantanément vos adresses IP publiques IPv4 et IPv6 directement depuis le navigateur. Vous pouvez la télécharger gratuitement 🤗 depuis le site officiel des modules complémentaires de Mozilla :

Télécharger l’extension STIP sur Mozilla Add-ons

Barre d’outils du navigateur Firefox affichant la fenêtre STIP avec les adresses IPv4 et IPv6 publiques détectées via Mozilla VPN
L’extension Firefox STIP affiche vos adresses IPv4 et IPv6 publiques — confirmant que le trafic passe bien par Mozilla VPN.

L’application a parlé : nous sommes bien à Tokyo ! (Ou du moins, notre connexion internet.)