Vous avez acheté et installé un Raspberry sur votre réseau personnel LAN.
Maintenant vous souhaitez le transformer en routeur VPN et bloquer les publicités et trackers avec pi-hole.
Cela est tout à fait possible.
Cet article vous guide pour transformer votre raspberry en routeur VPN + pihole (NordVPN ou ProtonVPN).

Table des matières
Principe du raspberry en routeur VPN avec Pi-hole
Voici le schéma de ce que l’on veut internet.
A savoir :
- que le appareils (PC, portable, tablette, etc) se connecte à travers le raspberry.
- ce dernier effectue le filtrage DNS à travers pi-hole pour bloquer les publicités et trackers.
- enfin le raspberry se connecte au VPN public de type NordVPN ou ProtonVPN afin de masquer votre adresse IP.
Le Raspberry remplace le routeur ou la box internet afin de :
- serveur DHCP afin de distribuer les IP aux appareils clients
- effectue les résolutions DNS avec le filtrage pi-hole
- se comporte comme une passerelle
- route les paquets vers internet à travers le VPN public
Enfin la connexion avec le raspberry peut se faire en filaire (eth0) ou en Wifi.
Ici dans cet article, nous traitons le cas du filaire.
Installer Raspberry en routeur VPN avec Pihole
pi-hole fonctionne avec les éléments.
- dnsmasq – un serveur DNS et DHCP léger.
- curl – Un outil en ligne de commande pour transférer des données avec la syntaxe URL.
- lighttpd – serveur web conçu et optimisé pour de hautes performances.
- php – un langage de script Web à usage général populaire.
- AdminLTE Dashboard – panneau de contrôle d’administration premium basé sur Bootstrap 3.x.
Configurer l’interface réseau
La première chose à faire est de passer le raspberry en IP fixe.
Pour cela, éditez le fichier /etc/network/interfaces en vous inspirant de cet exemple :
auto eth0
iface eth0 inet static
address 192.168.1.254
netemask 255.255.255.0
gateway 192.168.1.1
Enfin relancez le service network pour prendre en compte les changements.
/etc/init.d/networking restart
Installer pi-hole
L’installation de pi-hole est vraiment très simple puisqu’un script automatisé existe.
Il faut alors suivre les instructions de l’assistant.
Lancez le téléchargement et l’installation de pi-hole de cette manière.
wget -O basic-install.sh https://install.pi-hole.net
sudo bash basic-install.sh
- Le script se lance alors avec l’assistant
- Passez outre les pages d’accueil et de bienvenue.
- Puis on sélectionne l’interface sur lequel pi-hole sera actif. Il faut sélectionner l’interface eth0.
- Ensuite on choisit les serveurs DNS à utiliser. Par exemple Cloudflare.
- Les listes de filtrages, vous pouvez laisser tout cocher.
- Puis si on veut activer ou désactiver IPV6.
- La configuration des interfaces réseaux.
- Puis on trouve les éléments à activer sur Pi-hole. Ici on vous demande si vous désirez activer l’interface web d’administration. Laissez sur On.
- On vous demandera alors d’activer Lighthttpd.
- On vous demande si vous désirez enregistrer les requêtes DNS.
- Puis si vous désirez enregistrer les filtrages afin d’obtenir des statistiques ou être en anonyme.
- Enfin l’installation s’effectue, cela peut prendre du temps.
- Enfin on arrive sur la page d’installation terminée.
- Le mot de passe administrateur est alors indiquée. Notez le.
Sachant qu’une bonne partie de la configuration se change depuis l’interface ou en ligne de commandes.
Si tout va bien, vous pouvez vous connecter à votre interface d’administration pi-hole.
Vérifier la configuration DHCP
Ensuite on vérifie la configuration du serveur DHCP dans pi-hole.
Le but étant de s’assurer que les adresses IP distribuées sont correctes.
- Ouvre l’interface d’administration de pi-hole
- puis menu Settings
- onglet DHCP
- enfin vérifiez que les adresses sont correctes
Les IP début et fin doivent être dans la même plage que le raspberry.
Le routeur correspond à l’adresse IP du raspberry.
Partager la connexion avec iptables
Ensuite on utilise iptables afin de partager la connexion internet depuis le raspberry.
sudo sysctl -w net.ipv4.ip_forward=1
echo "1" > /proc/sys/net/ipv4/ip_forward
sudo iptables -A FORWARD -i eth0 -j ACCEPT
sudo iptables -A FORWARD -i wlan0 -j ACCEPT
sudo iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
Changer les IP des postes clients
Tout est prêt sur le raspberry pour partager la connexion internet.
Il faut ensuite demander une nouvelle adresse IP depuis les postes clients.
Cela afin que le raspberry redistribue la nouvelle configuration IP.
Dans un premier temps, si vous désirez utiliser pleinement le serveur DHCP de pi-hole, vous devez désactiver celui de votre box internet.
- Accéder à l’interface d’administration de box internet ou routeur
- Cherchez les paramètres DHCP puis désactiver le.
Par exemple sur une Livebox, on les trouve dans la configuration avancée.
Ensuite on demande une nouvelle adresse IP au serveur DHCP depuis les postes clients.
- Ouvrez une invite de commandes en administrateur
- puis saisissez la commande ipconfig suivante :
ipconfig /release
ipconfig /renew
Enfin vérifiez que le la configuration IP du client est alors correcte :
ipconfig /all
Installer le VPN
Voici deux exemples d’installation de VPN.
Généralement on trouve la documentation sur le site et l’installation n’est pas très compliquée.
NordVPN
NordVPN fournit un utilitaire qui permet de configurer le VPN puis de se connecter.
Par défaut il connecte aux serveurs le plus proche mais vous pouvez forcer un pays.
L’installation est documentée : La documentation officielle.
sudo wget -qnc https://repo.nordvpn.com/deb/nordvpn/debian/pool/main/nordvpn-release_1.0.0_all.deb
sudo dpkg -i ~/Downloads/nordvpn-release_1.0.0_all.deb
sudo apt-get update
sudo apt-get install nordvpn
Sinon vous pouvez perdre la connexion SSH ou VNC à votre raspberry.
Cela se fait à travers la commande suivante :
nordvpn whitelist add subnet 192.168.1.254/25
puis pour se connecter :
nordvpn login
nordvpn connect
curl ifconfig.co
La commande suivante permet de vérifier la configuration NordVPN :
nordvpn settings
Ici la technologie utilisée est OpenVPN mais on peut forcer.
On en parle dans cette page : Meilleurs VPN gratuits et nordlynx
sudo nordvpn set technology nordlynx
sudo nordvpn set technology openvpn
ProtonVPN
ProtonVPN fournit un utilitaire protonvpn qui permet de connecter.
La documentation de l’installation : ProtonVPN command-line tool for Linux.
sudo apt install -y openvpn dialog python3-pip python3-setuptools
sudo pip3 install protonvpn-cli
Puis pour initialiser la configuration :
sudo protonvpn init
Laissez-vous guider.
Ensuite on peut se connecter avec les commandes suivantes :
sudo protonvpn c -r # se connecter à un serveur aléatoire
sudo protonvpn c -cc FR # se connecter à un serveur en France.
Vérifier les configuration du raspberry et des clients
Vérifier les DNS du raspberry
Pour que le filtrage pihole fonctionne, il faut que le serveur DNS du raspberry pointe vers le serveur DNS de pihole.
Ainsi, la configuration DNS du raspberry doit avoir une IP local.
Mais les clients VPN peuvent changer ce dernier pour imposer le leur.
Il convient donc de vérifier régulièrement que le serveur DNS est correct.
Pour cela :
cat /etc/resolv.conf
Si vous n’avez pas 127.0.0.1, ce n’est pas bon.
Il faut alors éditer le fichier resolv.conf pour corriger.
Voici un script qui le fait automatiquement que l’on peut intégrer dans un cron.
#!/bin/bash
adr_dns=$(cat /etc/resolv.conf |egrep ^nameserver|awk '{print $2}')
if [[ "$adr_dns" == "127.0.0.1" ]]
then
echo "DNS ok"
else
echo ko
sed -i -r 's/^nameserver [0-9.]+/nameserver 127.0.0.1/g' /etc/resolv.conf
fi
Par exemple, un cron qui change l’IP ProtonVPN à 4h du matin et qui lance le script de vérification DNS.
#0 4 * * * `date` >> /tmp/bla.txt ; sudo protonvpn c --cc DE ; sudo /home/pi/checkdns.sh
Changer l’adresse IP du client pour Netflix et autres streaming
Les sites de streaming (Netflix, Disney, PrimeVideo, M6, etc) bloquent les VPN publics.
Votre raspberry en routeur VPN ne vous permettra donc pas de vous connecter à ces services de streaming.
Vous pouvez alors couper le VPN du rasperry ou encore changer l’adresse IP du client pour passer par votre box internet.
On peut alors créer deux scripts sur Windows avec netsh afin de changer l’adresse IP et la passerelle.
- Un script pour passer par la box internet
- Un second script qui va passer par le raspberry
Ainsi cela permet de basculer via le raspberry ou la box d’un clic.
Voici un exemple à s’inspirer.
- gateway=ip_box_internet – soit l’adresse IP de la box internet soit du raspberry
- La seconde partie permet de définir les DNS. Vous pouvez laisser le raspberry en DNS quelque soit la passerelle. Cela permet de bénéficier du filtrage des trackers et publicités permanent.
netsh int ip set address "Ethernet" address=ip_client mask=255.255.255.0 gateway=ip_box_internet
netsh interface ipv4 set dnsservers name="Ethernet" source=static address="ip_raspberry" validate=no
ipconfig /flushdns
Conclusion
Nous venons de voir comment installer un raspberry en routeur VPN avec blocage des trackers et publicités avec pi-hole.
Enfin on peut masquer son adresse IP avec un VPN comme NordVPN ou ProtonVPN.
Enfin rien vous empêche de monter son propre serveur VPN avec une machine distance et de connecter son raspberry dessus avec OpenVPN, WireGuard ou autre serveur VPN.
Liens
- Installer et configurer un serveur VPN WireGuard sur Linux et client (Windows, Android, Ubuntu)
- Comment activer et voir les logs WireGuard
- Résoudre les erreurs dans les logs WireGuard
- Comment installer OpenVPN sur Ubuntu, Debian
- Installer un raspberry en routeur VPN + pi-hole (NordVPN ou ProtonVPN)
- Serveur d’anonymat : OpenVPN + Proxy et TOR
- pi-hole : bloquer la publicité et trackers
- Configurer pihole avec DNSCrypt ou DNS over HTTPS (DoH)