Utiliser Pi-hole et le VPN Mullvad sur un Raspberry Pi

Introduction
Vous craignez que votre fournisseur d'accès Internet vous espionne et lise tout le trafic de votre réseau domestique ? Vous en avez assez de voir des publicités partout ? Ou vous n'aimez simplement pas l'idée qu'une entreprise puisse voir et suivre chaque mouvement de souris et chaque frappe lorsque vous naviguez ?
Si ce sont vos préoccupations, vous êtes au bon endroit. Dans ce guide pratique, nous allons configurer un bloqueur de publicités et de traceurs pour tout le réseau, une sorte de bouclier numérique entre vous, votre fournisseur et les sociétés d'analyse.
Nous utiliserons Pi-hole (un système de filtrage DNS très populaire) pour bloquer les publicités et les traceurs, ainsi que le VPN Mullvad (un fournisseur très respectueux de la vie privée) pour cacher votre trafic Web à votre fournisseur.
Ce dont nous avons besoin
Raspberry Pi
L'élément principal est le Raspberry Pi, un petit ordinateur connu qui permet de tester des projets chez soi sans serveur coûteux. Son processeur ARM et sa mémoire suffisent largement à notre bouclier réseau.

Nous utiliserons Raspberry Pi OS, plus précisément la version Lite sans interface graphique. Une variante de 4 ou 8 Go est recommandée, même si l'installation en consommera bien moins. Des notions de terminal et de connexions SSH sont également nécessaires.
Mullvad
Ce projet nécessite un compte Mullvad. Ce fournisseur VPN populaire et respectueux de la vie privée ne demande même pas d'adresse e-mail : un numéro de compte aléatoire suffit, sans mot de passe.

Mullvad applique une politique stricte de non-conservation des journaux et ne stocke ni l'historique du trafic, ni les requêtes DNS, ni les horaires de connexion, ni les adresses IP, ni la consommation de bande passante. C'est un excellent choix pour éloigner votre trafic de votre fournisseur. J'ai aussi choisi Mullvad pour son attachement à la liberté d'expression et à un Internet ouvert.
1. Préparer le Raspberry Pi
Cette guide ne couvre pas l'installation du système ; nous passons directement à la configuration réseau. De nombreux guides détaillés sont disponibles en ligne. Commençons par configurer l'adresse IP du Pi.
2. Définir une IP statique
Pour utiliser le Raspberry Pi comme serveur DNS (Pi-hole) et passerelle (Mullvad), nous devons définir une IP statique. Une adresse attribuée par DHCP peut changer et empêcher les autres appareils de retrouver le Pi. Nous allons donc utiliser NetworkManager pour fixer une adresse.
Lister les interfaces réseau
nmcli con show
Dans mon cas, la connexion s'appelle netplan-eth0 et le périphérique eth0.
Configurer avec l'interface texte
Vous pouvez utiliser l'interface simple ou la ligne de commande. Pour ouvrir l'interface :
sudo nmtuiOu depuis la ligne de commande
Cette méthode est plus rapide. Remplacez les noms et adresses par ceux de votre réseau.
sudo nmcli con mod netplan-eth0 ipv4.addresses "192.168.21.82/24" ipv4.gateway "192.168.21.1" ipv4.dns "192.168.21.1,1.1.1.1" ipv4.method manualAppliquer les changements
sudo nmcli device reapply eth0Vérifier l'interface
Vérifiez que l'adresse, la passerelle et le DNS correspondent aux valeurs définies.
nmcli device show eth0
Le Raspberry Pi possède maintenant une IP statique. En SSH, la connexion peut être interrompue ; reconnectez-vous avec la nouvelle adresse.
3. Installer Pi-hole
Mettre d'abord le système à jour
Installez les dernières mises à jour et redémarrez le Pi :
sudo apt update && sudo apt full-upgrade -ysudo reboot
Installer Pi-hole
Utilisez l'installateur officiel en une étape. Vous pouvez examiner le script avant de l'exécuter.
curl -sSL https://install.pi-hole.net | bash
Confirmez l'IP statique et cliquez sur Continue.

Choisissez Cloudflare comme DNS amont pour le moment ; nous le changerons lorsque Mullvad fonctionnera.

Confirmez la liste StevenBlack Unified Hosts, un bon point de départ pour bloquer les domaines publicitaires et de suivi.

L'installation est terminée. Notez le lien du panneau et le mot de passe : http://<pi-ip>/admin ou http://pi.hole/admin.

Définir un nouveau mot de passe
Changez le mot de passe généré depuis le terminal et n'en réutilisez jamais un autre.
sudo pihole setpassword
Le bloqueur réseau fonctionne. Consultez la documentation officielle pour en savoir plus.
4. Configurer le DNS du réseau
Pi-hole ne filtre que les requêtes qu'il reçoit. Configurez le DHCP du routeur pour distribuer l'IP du Raspberry Pi comme DNS principal, puis renouvelez les baux ou reconnectez les clients. Si le routeur ne le permet pas, configurez chaque appareil manuellement. Le Pi peut aussi utiliser Pi-hole via /etc/dhcpcd.conf ou NetworkManager ; une mauvaise configuration peut couper la connexion.
5. Installer WireGuard et Mullvad
Une fois Pi-hole opérationnel, installez WireGuard. WireGuard crée un tunnel VPN chiffré, léger et rapide. Mullvad fournit le fichier de configuration ; WireGuard le lit, établit la connexion et achemine le trafic, tandis que Pi-hole filtre le DNS.
Installer WireGuard
sudo apt install wireguard wireguard-tools resolvconf -y
Configurer WireGuard
Téléchargez depuis votre compte Mullvad une configuration WireGuard pour Linux, choisissez un serveur et enregistrez-la sous mullvad.conf dans /etc/wireguard.
sudo chmod 600 /etc/wireguard/mullvad.confDémarrer et vérifier le tunnel
sudo wg-quick up mullvadsudo wg showcurl https://am.i.mullvad.net/connectedVous devez voir "You are connected to Mullvad". Activez ensuite le démarrage automatique :
sudo systemctl enable wg-quick@mullvad
Pour arrêter le tunnel pendant le dépannage :
sudo wg-quick down mullvadAcheminer le trafic par Mullvad
Pour les autres appareils, le Pi doit transférer et masquer le trafic. Nous supposons que :
- L'interface LAN est eth0.
- L'interface WireGuard Mullvad est mullvad, car le fichier s'appelle mullvad.conf.
- L'adresse LAN du Raspberry Pi est 192.168.21.82.
Remplacez les valeurs d'exemple par les vôtres. Vérifiez les interfaces avec :
ip link showSi elle s'appelle wg0, remplacez mullvad par wg0.
Activer le transfert IPv4
sudo sysctl net.ipv4.ip_forward
La valeur doit être 1. Si elle vaut 0, activez-la :
sudo sysctl -w net.ipv4.ip_forward=1Rendez le réglage permanent :
echo 'net.ipv4.ip_forward=1' | sudo tee /etc/sysctl.d/99-router.confsudo sysctl --systemsudo sysctl net.ipv4.ip_forward
Autoriser le transfert et ajouter le NAT
sudo iptables -A FORWARD -i eth0 -o mullvad -j ACCEPTsudo iptables -A FORWARD -i mullvad -o eth0 -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPTsudo iptables -t nat -A POSTROUTING -o mullvad -j MASQUERADEInstallez l'outil de persistance :
sudo apt install iptables-persistent -y

sudo netfilter-persistent save
Configurer les appareils réseau
Utilisez ces valeurs sur chaque appareil :
- Une IP dans le même LAN que le Raspberry Pi.
- L'IP du Raspberry Pi comme passerelle par défaut.
- L'IP du Raspberry Pi comme serveur DNS.
Tester la route par étapes
ping 192.168.21.82Puis testez le DNS Cloudflare 1.1.1.1 :
ping 1.1.1.1Enfin, testez la résolution DNS :
nslookup example.comEn cas d'échec :
- Si le premier test échoue, vérifiez le réseau et la passerelle du PC.
- Si le premier réussit mais que 1.1.1.1 échoue, vérifiez le transfert IPv4, le NAT et le pare-feu Mullvad.
- Si l'IP publique fonctionne mais pas le DNS, vérifiez que Pi-hole écoute sur le LAN et que le PC l'utilise comme DNS.
sudo wg show
Les compteurs doivent augmenter. Vérifiez l'adresse publique depuis le PC :
curl https://am.i.mullvad.net/connected
6. Vérifier notre sécurité
Ouvrez la vérification de connexion Mullvad et contrôlez l'IP de sortie ainsi que les résolveurs DNS.

Comprendre le résultat
- Si l'IP de sortie appartient à Mullvad, comme **it-mil-wg-001** à Milan, le trafic passe correctement par Mullvad.
- Si les résolveurs sont des adresses Cloudflare telles que **172.70.x.x**, **1.1.1.1** ou l'adresse IPv6 correspondante, Pi-hole transmet actuellement les requêtes à Cloudflare.
En général, Using Mullvad VPN et No WebRTC leaks sont verts, tandis que No DNS leaks est rouge, car Cloudflare n'est pas exploité par Mullvad.
Rendre le contrôle DNS vert
Remplacez le DNS amont de Pi-hole par un DNS Mullvad :
- 1DNS interne Mullvad : 10.64.0.1. Fonctionne uniquement avec le tunnel WireGuard actif.
- 2DNS public Mullvad sans filtrage : 194.242.2.2. Fonctionne même si le tunnel tombe brièvement.
- 3DNS public Mullvad avec blocage des publicités, traceurs et logiciels malveillants : 194.242.2.4.
- 4DNS public Mullvad avec blocage des publicités uniquement : 194.242.2.3.
Dans le tableau de bord Pi-hole :
- 1Ouvrez l'interface d'administration Pi-hole.
- 2Allez dans Settings, puis DNS.
- 3Sous Upstream DNS Servers, désélectionnez Cloudflare et les autres fournisseurs.
- 4Sélectionnez Custom et saisissez une adresse DNS Mullvad. Ajoutez IPv4 et IPv6 si nécessaire.
- 5Cliquez sur Save en bas de la page.

Attendez quelques secondes, puis relancez le test sur mullvad.net/check. No DNS leaks devrait être vert.
Si une fuite DNS est toujours signalée
Le navigateur utilise souvent son propre DNS over HTTPS et ignore Pi-hole. Désactivez donc le DNS sécurisé.
Firefox
- 1Ouvrez Settings, puis Privacy & Security.
- 2Faites défiler jusqu'à DNS over HTTPS.
- 3Sélectionnez Off.
- 4Redémarrez Firefox et relancez le test Mullvad.
Chrome
- 1Ouvrez chrome://settings/security.
- 2Dans Use secure DNS, désactivez l'option.
- 3Redémarrez Chrome et relancez le test Mullvad.
Edge
- 1Ouvrez edge://settings/privacy.
- 2Trouvez Use secure DNS et désactivez-le.
- 3Redémarrez Edge et relancez le test Mullvad.
Si le résultat ne change pas, essayez une fenêtre privée ou un autre navigateur pour identifier la source de la fuite.
Conclusion
Votre Raspberry Pi agit maintenant comme bloqueur de publicités et de traceurs pour tout le réseau et achemine le trafic par le VPN Mullvad. Maintenez Raspberry Pi OS, Pi-hole, WireGuard et la configuration Mullvad à jour pour conserver une installation fiable et sécurisée.
Voilà, c'est terminé pour aujourd'hui. J'espère que ce guide vous a plu !
Questions frequentes
Trouvez des reponses rapides aux questions les plus courantes sur ce sujet.
Pi-hole bloque les publicités et les traceurs au niveau DNS, tandis que Mullvad achemine le trafic Internet dans un tunnel VPN chiffré. Ensemble, ils assurent un filtrage DNS à l'échelle du réseau et une protection VPN aux appareils qui utilisent le Raspberry Pi comme serveur DNS et passerelle.
Oui. Il peut exécuter Pi-hole comme serveur DNS du réseau et WireGuard comme client VPN Mullvad. Avec le transfert IPv4 et le NAT configurés, il peut aussi acheminer le trafic des autres appareils dans le tunnel VPN.
Il lui faut une adresse stable pour que les autres appareils puissent toujours le trouver comme serveur DNS et passerelle. Une adresse DHCP changeante pourrait interrompre le filtrage DNS et empêcher les appareils d'atteindre la passerelle VPN.
Activez le transfert IPv4, autorisez le transfert entre les interfaces LAN et WireGuard, ajoutez une règle de masquerade pour l'interface VPN et configurez chaque appareil afin qu'il utilise le Pi comme passerelle et serveur DNS.
Utilisez le DNS interne Mullvad 10.64.0.1 lorsque le tunnel WireGuard est actif. Pour le DNS public Mullvad, utilisez 194.242.2.2 sans filtrage, 194.242.2.4 avec blocage des publicités et traceurs, ou 194.242.2.3 avec blocage des publicités uniquement.
Cloudflare n'est pas exploité par Mullvad ; sa vérification peut donc signaler une fuite même si le tunnel fonctionne correctement. Pour afficher No DNS leaks, configurez Pi-hole avec un résolveur DNS Mullvad plutôt qu'avec Cloudflare.
Désactivez DNS over HTTPS ou le DNS sécurisé dans le navigateur, puis relancez la vérification Mullvad. Si le résultat ne change pas, testez une fenêtre privée ou un autre navigateur pour déterminer s'il contourne Pi-hole.
