AnonymFlow
outils-diagnosticINFO

Test fuite VPN complet 2026 : DNS, WebRTC, IPv6, MTU, kill switch - méthodologie unifiée

Un VPN actif ne garantit pas l'anonymat. Méthode complète pour tester DNS, WebRTC, IPv6, MTU et kill switch en 30 minutes. Outils open-source dns-leak-detector-cli + webrtc-leak-detector et interprétation des résultats.

Par Eric Gerard · Éditeur · AnonymFlow10 min de lecturePhoto : Taylor Vick - Unsplash

Un VPN actif et techniquement connecté ne signifie pas anonymat garanti. Cinq vecteurs de fuite distincts peuvent compromettre la confidentialité d'une session même avec un tunnel VPN apparemment opérationnel : DNS (résolution de noms hors tunnel), WebRTC (exposition de l'IP par API navigateur), IPv6 (transit en clair si non bloqué), MTU (fragmentation et fuites de fragments en clair), kill switch défaillant (trafic en clair lors des micro-coupures invisibles). Des recherches indépendantes constatent régulièrement qu'une part notable des setups VPN domestiques présentent au moins une fuite parmi ces cinq vecteurs malgré un client VPN affichant « protégé ».

Ce guide consolide la méthodologie de test couvrant les 5 dimensions, avec deux outils CLI open-source que nous maintenons (dns-leak-detector-cli et webrtc-leak-detector), des commandes shell reproductibles, et les seuils de validation à respecter. Il s'adresse aux utilisateurs techniques (admin sys, dev, sécurité) et aux freelances soumis à RGPD article 32 souhaitant documenter une vérification trimestrielle. Durée totale du protocole : ~30 minutes pour un setup domestique standard.

Pourquoi le test DNS seul ne suffit plus en 2026

Le test fuite DNS standard est devenu insuffisant pour deux raisons techniques précises. Première raison : la généralisation d'IPv6 chez les FAI européens. Free, Orange, SFR, Bouygues, Movistar, Vodafone, Deutsche Telekom déploient massivement IPv6 sur leurs liens fibre depuis 2023-2024. En mai 2026, ~40 % des connexions fibre françaises et allemandes disposent d'une stack dual-stack IPv4/IPv6 native. Si le client VPN ne tunnelise pas explicitement IPv6 (cas par défaut sur certaines versions OpenVPN sans paramétrage spécifique), le trafic IPv6 sort par la route par défaut FAI - fuite intégrale d'identité non détectée par un test DNS classique focalisé sur IPv4.

Seconde raison : la prévalence de WebRTC dans les navigateurs modernes. WebRTC (Web Real-Time Communication) est activée par défaut dans Chrome, Edge, Firefox, Safari pour permettre les appels vidéo intégrés (Google Meet, WhatsApp Web, Microsoft Teams Web). L'API RTCPeerConnection énumère les candidats ICE (Interactive Connectivity Establishment) en exposant l'IP locale ET l'IP publique de l'appareil. Sur Chrome et Edge en 2026, environ 30 % des installations exposent encore une IP locale ou publique distincte de celle du tunnel VPN, même avec VPN actif. Cette fuite est invisible côté utilisateur (aucun indicateur navigateur) et silencieuse côté VPN (le tunnel reste « connecté »).

À cela s'ajoutent les fuites par MTU mal calibré (fragmentation provoquant des fuites de fragments en clair lors de la reassembly côté serveur) et les défaillances kill switch (micro-coupures du tunnel de 1-3 secondes lors de changement de réseau WiFi/4G, durant lesquelles le trafic passe en clair par la route FAI par défaut).

Vecteur 1 - Fuite DNS : méthode détaillée

La fuite DNS survient quand le client VPN ne capture pas l'intégralité des requêtes de résolution de noms et laisse l'OS interroger les résolveurs FAI ou public (8.8.8.8 Google, 1.1.1.1 Cloudflare) en parallèle. Conséquence : ces résolveurs voient passer toutes les requêtes (domaines consultés), exposant un journal complet d'activité au FAI ou à l'opérateur public.

Test recommandé - dns-leak-detector-cli. Outil CLI Node.js que nous maintenons sur GitHub ricco020/dns-leak-detector-cli. Installation et exécution :

npx dns-leak-detector --resolver auto --hostnames 10 --verbose

Le script résout 10 hostnames distincts (subdomains aléatoires) et analyse les résolveurs ayant traité chaque requête côté serveur. Sortie attendue : tous les résolveurs identifiés appartiennent au pool VPN du fournisseur utilisé. Sortie défaillante : présence de résolveurs FAI (préfixes ASN connus AS3215 Orange, AS12322 Free, AS3209 Telefonica, AS3320 Deutsche Telekom) ou résolveurs publics non-VPN (8.8.8.8 Google, 9.9.9.9 Quad9, 1.1.1.1 Cloudflare).

Tests web complémentaires. dnsleaktest.com (test extended à 1000+ résolveurs), browserleaks.com/dns. Avantage : pas d'installation. Inconvénient : reposent sur la consultation par navigateur, peuvent masquer des fuites système (OS) hors navigateur.

Réparation si fuite détectée. Dans les paramètres NordVPN : Settings → DNS → Use NordVPN DNS (activé par défaut). Dans Surfshark : Settings → Advanced → Custom DNS (désactiver, laisser auto). Dans ExpressVPN : automatique. Si fuite persistante après vérification client : vérifier que l'OS n'a pas un résolveur DNS hardcodé (macOS Network Preferences → DNS, Windows Network Settings → Properties → IPv4 → DNS). Pour les VPN open-source (WireGuard manuel), ajouter explicitement la directive DNS = 10.0.0.1 (IP DNS interne du serveur VPN) dans le fichier de config.

Vecteur 2 - Fuite WebRTC : la moins connue

WebRTC expose via l'API JavaScript RTCPeerConnection.createOffer() l'ensemble des candidats ICE qui incluent : IP locale (LAN privé 192.168.x.x, 10.x.x.x, 172.16-31.x.x), IP publique (sortie réseau via STUN), parfois IPv6 native. Un site web malveillant ou simplement curieux peut interroger ces candidats en quelques millisecondes sans permission utilisateur explicite.

Test recommandé - webrtc-leak-detector. Page HTML standalone ricco020/webrtc-leak-detector. Ouvrir dans le navigateur avec VPN actif. Le script collecte les candidats ICE et compare avec l'IP attendue du tunnel.

Sortie attendue : seule l'IP publique du serveur VPN visible. Aucune IP locale exposée. Aucune IP publique alternative.

Sortie défaillante typique : IP publique du tunnel + IP locale du LAN privé visible (fuite partielle, identifie le réseau local mais pas le pays), ou IP publique du tunnel + IP publique distincte du FAI (fuite intégrale, identifie le pays réel).

Réparation. Dans NordVPN : Settings → Advanced → activer « Block WebRTC ». Dans Chrome : installer l'extension WebRTC Control qui désactive les ICE candidates non tunnelisés. Dans Firefox : about:configmedia.peerconnection.enabled = false. Sur Safari : configuration plus délicate, généralement résolue par activation du Block WebRTC côté client VPN.

Vecteur 3 - Fuite IPv6 : 40 % des fibres françaises concernées

IPv6 est la zone de fuite la plus sous-estimée en 2026. Les FAI européens (Free, Orange, SFR, Telefonica, Deutsche Telekom) déploient massivement le dual-stack IPv4/IPv6 sur fibre. Si le client VPN tunnelise IPv4 mais laisse IPv6 sortir par la route par défaut, toute requête à un service compatible IPv6 (Google, Facebook, Cloudflare, AWS) transite hors tunnel.

Test direct CLI :

curl -6 https://ipv6.icanhazip.com --max-time 5

Sortie attendue : soit timeout (IPv6 bloqué par VPN, configuration sûre), soit IP IPv6 appartenant au pool VPN (vérifier que le préfixe correspond bien aux préfixes NordVPN / Surfshark / ExpressVPN).

Sortie défaillante : IP IPv6 native FAI visible. Préfixes typiques à reconnaître : 2a01:e00::/27 Orange, 2a01:e35::/32 Free, 2a02:1210::/26 SFR, 2a02:560::/29 Bouygues, 2a02:9000::/24 Vodafone, 2a02:8071::/29 Telefonica, 2003:a::/24 Deutsche Telekom.

Réparation. Dans NordVPN : Settings → Advanced → activer « Block IPv6 ». Dans Surfshark : auto par défaut depuis v4.x. Dans ExpressVPN : Settings → Advanced → Block IPv6. Alternative au niveau OS : sur Linux sysctl net.ipv6.conf.all.disable_ipv6=1, sur Windows Disable-NetAdapterBinding -ComponentID ms_tcpip6, sur macOS via Network Preferences → désactiver IPv6 sur l'interface.

Vecteur 4 - MTU mal calibré : fragmentation et fuites partielles

Du code source dans un éditeur en terminal
Du code source dans un éditeur en terminal

Le MTU (Maximum Transmission Unit) définit la taille maximale d'un paquet IP transmis sans fragmentation. Sur Ethernet standard, MTU = 1500 octets. Un tunnel VPN ajoute un overhead : ~80 octets pour WireGuard, ~28-50 octets pour OpenVPN UDP, jusqu'à 70 pour OpenVPN TCP avec compression. MTU effectif tunnel = 1500 - overhead.

Si l'OS continue d'envoyer des paquets 1500 octets sur un tunnel à MTU 1420 effectif, fragmentation : le paquet est découpé en 2 fragments, transmis séparément, reassemblé côté serveur destination. Conséquences : performance dégradée (latence +50-100ms typique), parfois pertes (les routeurs intermédiaires fragmentent mal IPv6), et selon les implémentations VPN une fuite de fragments en clair si le tunnel rejette les paquets surdimensionnés (rare mais documenté sur OpenVPN UDP avec compression activée).

Test direct CLI :

# Linux / macOS
ping -M do -s 1472 example.com

# Windows
ping -f -l 1472 example.com

Interprétation : 1472 octets de payload + 28 octets d'en-tête ICMP/IP = 1500 octets total. Si l'écho revient : MTU 1500 acceptable. Si « message too long » : descendre par paliers de 50 (1422, 1372, 1322...) jusqu'à obtenir l'écho.

MTU optimal selon protocole VPN : NordLynx / WireGuard 1420 typique, OpenVPN UDP 1450 typique, OpenVPN TCP 1430 typique, NordWhisper 1420 typique. Configurer cette valeur manuellement sur l'interface VPN si performance dégradée constatée.

Vecteur 5 - Kill switch défaillant : micro-coupures invisibles

Le kill switch est la dernière ligne de défense en cas de chute du tunnel VPN. Deux modes existent : mode app (bloque le trafic d'applications spécifiques) et mode système (bloque tout le trafic OS sortant). Seul le mode système est suffisamment robuste pour garantir l'absence de fuite lors des micro-coupures de 1-3 secondes invisibles à l'utilisateur (changement de réseau WiFi, perte 4G en métro, transition LTE↔5G).

Test reproductible :

# Terminal 1 - lancer un ping continu vers ipinfo.io
watch -n1 curl -s ipinfo.io | jq .ip

# Terminal 2 - déconnecter le VPN brutalement
sudo killall -9 nordvpn-daemon  # ou équivalent selon client

Sortie attendue : le curl du terminal 1 échoue immédiatement avec timeout/refused. Pas de bascule transparente vers IP FAI. Le kill switch a fonctionné.

Sortie défaillante : le curl continue de retourner une IP, mais ce n'est plus l'IP VPN - c'est l'IP FAI réelle. La micro-coupure a laissé passer le trafic. Kill switch en mode app uniquement ou non activé.

Réparation. Dans NordVPN : Settings → Kill Switch → activer Kill Switch (system-level) et Internet Kill Switch. Dans Surfshark : Settings → VPN settings → Kill switch (activé). Dans ExpressVPN : Network Lock (activé par défaut). Pour les VPN open-source (WireGuard manuel), implémenter le kill switch via règles iptables/nftables explicites refusant tout trafic sortant non encapsulé wg0.

Documenter pour conformité RGPD article 32

Pour un freelance ou une entreprise soumise au RGPD, le test trimestriel constitue une vérification raisonnable de la mesure technique VPN au sens de l'article 32. Documentation recommandée :

  • Capture d'écran datée du résultat de chaque test
  • Archivage dans vpn-tests/{date}/ avec hash SHA-256 du fichier
  • Ligne dans le registre des traitements : « Vérification trimestrielle absence de fuite VPN - dernier test JJ/MM/AAAA »
  • En cas de fuite détectée et corrigée : noter la fuite, la cause, la correction appliquée et la date de retest

Cette documentation est demandée en cas de contrôle CNIL ou d'audit RGPD interne. Voir notre guide complet RGPD VPN freelance pour le contexte juridique.

Ce qu'il faut retenir

Tester un VPN en 2026 n'est plus un single check DNS - c'est une méthodologie unifiée 5 dimensions (DNS, WebRTC, IPv6, MTU, kill switch) qui prend ~30 minutes et peut révéler des fuites silencieuses qu'un test DNS standard ne voit pas. Outils open-source disponibles : dns-leak-detector-cli et webrtc-leak-detector, avec commandes shell complémentaires pour IPv6, MTU et kill switch. Test trimestriel obligatoire ou à chaque changement de contexte (nouveau FAI, mise à jour OS, nouveau client VPN). Pour RGPD article 32, documenter chaque vérification avec capture datée - preuve de diligence raisonnable en cas d'audit.

Disclosure : Eric Gerard est mainteneur des outils open-source dns-leak-detector-cli et webrtc-leak-detector cités dans cet article. Pas de monétisation directe des outils - uniquement liens d'affiliation NordVPN dans le contenu éditorial. Sources techniques : RFC 4787 NAT behavior, RFC 5245 ICE, WireGuard whitepaper, W3C WebRTC specification.

Choix éditorial
4.6 / 5

Tester NordVPN avec notre protocole 5 dimensions

WebRTC Block + IPv6 Block + Kill Switch système · 30 jours satisfait ou remboursé

Audit Deloitte 2024Garantie 30 jours14M+ utilisateurs
Voir l'offre

Outils et guides associés

Choix éditorial
4.6 / 5

Corrige la fuite - chiffre tout avec NordVPN

DNS sécurisé · kill switch · Threat Protection · 30 jours remboursé

Audit Deloitte 2024Garantie 30 jours14M+ utilisateurs
Voir l'offre
Tout ce qu'il faut savoir.

Questions fréquentes

Pourquoi tester ces 5 dimensions et pas seulement le DNS ?

Parce qu'un VPN peut être actif et fonctionnel selon le test DNS standard tout en laissant fuiter ton IP réelle par 4 autres vecteurs distincts. Le DNS leak test ne couvre que la résolution de noms (~25 % du risque réel). Les 4 autres dimensions : (1) WebRTC qui expose ton IP locale et publique via API navigateur même avec VPN actif (~30 % des navigateurs Chrome/Edge en 2026), (2) IPv6 qui transite hors tunnel si non bloqué (~40 % des connexions fibre françaises et allemandes en 2026), (3) MTU mal calibré qui peut couper les paquets et révéler des données en clair fragmentées, (4) kill switch défaillant qui laisse passer du trafic en clair lors des micro-coupures de tunnel (1-3 secondes invisibles à l'œil). Des études indépendantes constatent régulièrement qu'une part notable des setups VPN domestiques présentent au moins une fuite parmi ces 5 vecteurs malgré un test DNS standard validé.

Quels outils open-source pour ces tests ?

Deux outils CLI ouverts et auditables : (1) `dns-leak-detector-cli` (repo ricco020/dns-leak-detector-cli) - script Node.js qui résout 10 hostnames via plusieurs résolveurs et compare la sortie attendue avec l'IP de sortie observée, détecte les leaks même en présence d'ECS et de DNS hybride routeur. (2) `webrtc-leak-detector` (repo ricco020/webrtc-leak-detector) - page HTML standalone qui exploite `RTCPeerConnection` pour énumérer les candidats ICE et identifie les IP locales et publiques exposées. Avantages CLI sur outils web : reproductible en CI, scriptable pour vérification programmée, pas de dépendance externe. Pour MTU : `ping -M do -s 1472` (Linux/macOS) ou `ping -f -l 1472` (Windows). Pour IPv6 : `curl -6 ipv6.icanhazip.com` qui ne doit retourner que l'IP du tunnel VPN ou un timeout.

Mon VPN dit «protected» mais les outils en ligne montrent une fuite. Qui croire ?

Les outils tiers indépendants. L'indicateur «protected» du client VPN ne vérifie en réalité que la présence du tunnel VPN (handshake réussi + IP de sortie modifiée), pas l'absence de fuites collatérales. Cas typique observé : NordVPN ou Surfshark affichent connecté avec IP US visible, mais WebRTC dans Chrome révèle simultanément l'IP française du LAN local, ou IPv6 sort par la route par défaut FAI. Pour trancher : tester depuis le client VPN les 5 dimensions via outils externes (browserleaks.com, dnsleaktest.com, ipv6-test.com, ou nos CLI). Si une seule dimension fuite : VPN partiellement protecteur. La solution est généralement de cocher «Block IPv6», «Disable WebRTC» dans les paramètres VPN, ou d'utiliser le navigateur en mode kill switch app-level + system-level.

À quelle fréquence retester ?

Test trimestriel minimum, plus systématiquement à chaque changement de contexte : (1) installation d'une nouvelle version du client VPN, (2) changement de fournisseur FAI ou de routeur, (3) changement de navigateur ou mise à jour majeure Chrome/Firefox/Safari, (4) connexion à un nouveau réseau (coworking, hôtel, événement) où les configs DNS peuvent varier, (5) changement de protocole VPN (passage WireGuard ↔ OpenVPN ↔ NordWhisper). Un test trimestriel détecte les régressions silencieuses dues aux mises à jour OS - un effet connu, raison pour laquelle une vérification périodique est utile. Conserver une capture datée comme rastre RGPD ou simplement comme suivi qualité.

Le test fonctionne-t-il sur smartphone Android et iOS ?

Oui, avec quelques adaptations. Sur Android, le test DNS et IPv6 fonctionne via Termux (terminal CLI) qui permet d'exécuter `dig`, `curl -6`, `ping -M do`. Le test WebRTC fonctionne via le navigateur (Chrome Android, Firefox Android) - RTCPeerConnection est exposée comme sur desktop. Sur iOS, plus restrictif : pas de Termux, mais le test web via Safari fonctionne pour DNS, WebRTC, IPv6. Le test MTU n'est pas testable directement sur iOS (pas de ping CLI). Le kill switch d'iOS « On Demand » se teste en désactivant l'interface VPN brièvement et en vérifiant que les requêtes externes échouent immédiatement (et non passent en clair). Notre [outil fuite DNS en ligne](/fr/outils/test-fuite-dns) est compatible mobile et fournit un rapport unifié.