Mullvad VPN, le client open‑source d'un VPN payant suédois

Mullvad VPN, le client open‑source d'un VPN payant suédois

C’est quoi Mullvad VPN ?

Mullvad est un service VPN suédois lancé en 2009 par Amagicom AB, basé à Göteborg. Le service en lui-même est payant et propriétaire, mais les apps client (Android, iOS, macOS, Windows, Linux) sont toutes open‑source sous licence GPL‑3.0, dans un seul et même repo : github.com/mullvad/mullvadvpn-app.

Deux particularités côté usage :

  • Pas de compte avec email. À l’inscription, l’application génère un identifiant à 16 chiffres aléatoires, et c’est lui qui sert à se connecter. Aucune donnée personnelle n’est demandée.
  • Un seul prix : 5 €/mois. Pas d’abonnement annuel discount, pas de pack “Famille”, pas de fonctionnalités payantes débloquées par un tier supérieur.

Au quotidien, l’application mobile permet de :

  • Se connecter à un serveur VPN dans une cinquantaine de pays.
  • Activer un kill switch qui coupe tout trafic si le tunnel tombe.
  • Choisir entre WireGuard (par défaut) et OpenVPN.
  • Bloquer pubs, trackers et contenus pour adultes au niveau du DNS chiffré.
  • Activer le split tunneling (apps qui contournent le VPN), du multi-hop, ou de l’obfuscation du trafic.

Comment on l’installe ?

L’app Android est sur le Play Store, sur F‑Droid, et l’APK signée est aussi disponible directement sur mullvad.net/download. La version iOS est sur l’App Store.

Capture Mullvad 1Capture Mullvad 2Capture Mullvad 3Capture Mullvad 4

Techniquement, ça marche comment ?

Parlons un peu du code

Le repo Mullvad mélange plusieurs langages, et ce n’est pas un hasard :

  • Un daemon Rust (mullvad-daemon) porte la logique cœur : sélection de relais, gestion du tunnel, kill switch, DNS chiffré. Il tourne sur desktop (mac/Windows/Linux) et également sur Android, où il est appelé depuis l’app Kotlin via JNI (module mullvad-jni).
  • L’app Android (dossier android/) est donc un frontend natif Kotlin classique, mais qui s’appuie sur le VpnService Android pour ouvrir le tunnel et délègue toute la logique réseau au binaire Rust embarqué dans l’APK.
  • L’app iOS (dossier ios/) est en revanche une réimplémentation Swift complète. Pas de Rust, pas de daemon : iOS ne permet pas d’embarquer un démon arbitraire en arrière-plan, et l’extension réseau passe par NetworkExtension (Packet Tunnel Provider). Mullvad a donc dû réécrire en Swift toute la pile : sélection de relais, parsing de la conf WireGuard, gestion des erreurs, observabilité.

C’est probablement ce qui rend le repo intéressant pour un dev mobile : on a sous la main, dans le même projet, deux philosophies opposées de partage de code. Côté Android, on partage tout le cœur via Rust + JNI, l’app native est volontairement maintenue mince. Côté iOS, on duplique la totalité parce que la plateforme l’impose.

Petit fun fact qui m’a fait sourire en découvrant l’architecture de l’application : les modules talpid-* portent la couche réseau bas niveau (talpid-wireguard, talpid-routing, talpid-dns…) — “talpid” pour Talpidae, la famille des taupes, qui est aussi le logo de l’entreprise.

Détail qui mérite d’être souligné : le repo contient un dossier audits/ avec les rapports complets des audits de sécurité tiers. On y trouve des PDF signés Cure53 (2018), Atredis Partners (2022), X41 D‑Sec (2024) et NCC Group (2025) — l’audit NCC Group de février 2025 porte spécifiquement sur l’app Android (compliance MASA / Mobile Application Security Assessment). Avoir l’historique d’audits commit dans le repo public, c’est une posture sécurité que je n’ai pas souvent vu.

Le design

L’identité visuelle est sobre : couleur dominante vert/jaune saturé, pas d’illustration superflue. Sur mobile, l’écran principal est dominé par un seul gros bouton de connexion qui prend la moitié supérieure de l’écran, et le reste tient en une liste verticale d’options. Mullvad fait le choix de ne pas proposer un onboarding à rallonge

Les options avancées (WireGuard vs OpenVPN, multi‑hop, obfuscation, DNS personnalisé) sont rangées dans un menu Paramètres plutôt classique, mais j’ai bien aimé le fait que chaque fonctionnalité technique soit expliquée de manière accessible pour un public non-technique. La cohérence visuelle entre Android et iOS est forte malgré les implémentations natives séparées — preuve que le design system est tenu côté produit.

Le modèle économique

Le service est facturé 5 €/mois flat. Paiement par carte, virement, crypto, ou même cash dans une enveloppe pour ceux qui veulent dissocier complètement leur identité du compte VPN, ce qui est assez rare pour être souligné.

Mullvad VPN AB est une filiale d’Amagicom AB, société suédoise basée à Göteborg, qui édite aussi le Mullvad Browser (un fork de Tor Browser fait en partenariat avec le Tor Project). Ce sont à ma connaissance leurs deux seules sources de revenus.

Je n’ai pas trouvé de chiffres publics fiables sur le chiffre d’affaires ou le résultat de Mullvad VPN AB : les comptes annuels sont en théorie déposés auprès de Bolagsverket en Suède, mais ne sont pas en libre accès. Mullvad ne publie pas non plus de rapport sur ses finances. Ce qu’on peut dire : l’investissement régulier dans des audits tiers, l’absence de pub, l’absence d’investisseurs externes connus et le fait qu’ils financent le développement WireGuard depuis 2017 suggèrent un flux récurrent stable, mais ce ne sont que des suppositions.

Côté code : seules les applications client sont libres, le backend ne l’est pas (mais il se base malgé tout sur des couches VPN libres comme Wireguard).

Concrètement, on en pense quoi ?

Le repo Mullvad est super intéressant à explorer. Le contraste Android/iOS sur le partage de code (Rust + JNI d’un côté, Swift natif de l’autre) est une vraie leçon sur ce que les contraintes de plateforme imposent comme architecture, et c’est rare de pouvoir le voir aussi clairement dans un projet public.

L’autre point qui mérite d’être souligné, c’est le modèle économique : Mullvad a choisi de proposer un service payant (et que les utilisateurs ont l’habitude de payer) mais de s’appuyer sur du logiciel libre pour proposer ce service.

Articles sur le même thème

Saracroche, le bloqueur d’appels anti‑spam

Saracroche, le bloqueur d’appels anti‑spam

Saracroche est une application Android libre qui bloque automatiquement les appels indésirables grâce à une liste locale de préfixes, sans collecte de données.

NewPipe, le client Youtube alternatif

NewPipe, le client Youtube alternatif

NewPipe est un front-end libre et léger pour regarder des videos et écouter de l’audio sur Android, sans compte et sans services Google Play.