Installer un raspberry en routeur VPN + pi-hole (NordVPN ou ProtonVPN)

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).

Instlaler un raspberry en routeur VPN + pi-hole (NordVPN ou ProtonVPN)
Instlaler un raspberry en routeur VPN + pi-hole (NordVPN ou ProtonVPN)

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.
Schéma d'un raspberry en routeur VPN avec pi-hole et VPN (NordVPN ou ProtonVPN)

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.
Installer pi-hole sur un raspberry en routeur VPN
  • Puis on sélectionne l'interface sur lequel pi-hole sera actif. Il faut sélectionner l'interface eth0.
Installer pi-hole sur un raspberry en routeur VPN
  • Ensuite on choisit les serveurs DNS à utiliser. Par exemple Cloudflare.
Installer pi-hole sur un raspberry en routeur VPN
  • Les listes de filtrages, vous pouvez laisser tout cocher.
Installer pi-hole sur un raspberry en routeur VPN
  • Puis si on veut activer ou désactiver IPV6.
Installer pi-hole sur un raspberry en routeur VPN
  • La configuration des interfaces réseaux.
Installer pi-hole sur un raspberry en routeur VPN
  • 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.
Installer pi-hole sur un raspberry en routeur VPN
  • On vous demande si vous désirez enregistrer les requêtes DNS.
Installer pi-hole sur un raspberry en routeur VPN
  • Puis si vous désirez enregistrer les filtrages afin d'obtenir des statistiques ou être en anonyme.
Installer pi-hole sur un raspberry en routeur VPN
  • Enfin l'installation s'effectue, cela peut prendre du temps.
Installer pi-hole sur un raspberry en routeur VPN
Installer pi-hole sur un raspberry en routeur VPN
  • Enfin on arrive sur la page d'installation terminée.
  • Le mot de passe administrateur est alors indiquée. Notez le.
Installer pi-hole sur un raspberry en routeur VPN
En cas d'erreur, vous pouvez reconfigurer pi-hole à tout moment avec la commande pihole reconfigure.
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.

L'interface admin de pi-hole
Bravo ! votre pi-hole est maintenant installé sur le raspberry et prêt à l'emploi.

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
Vérifier la configuration DHCP de pi-hole

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.

Par exemple sur une Livebox, on les trouve dans la configuration avancée.

Désactiver le serveur DHCP de la livebox

Ensuite on demande une nouvelle adresse IP au serveur DHCP depuis les postes clients.

ipconfig /release
ipconfig /renew

Enfin vérifiez que le la configuration IP du client est alors correcte :

ipconfig /all
Vérifier la configuration IP des clients pour avoir le raspberry en passerelle et serveur DNS.
Les postes clients doivent avoir l'adresse IP du raspberry comme passerelle et serveur DNS.
Vérifiez alors que la connexion internet fonctionne bien depuis les postes clients.

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
Attention avant de vous connecter avec NordVPN, vous devez ajouter votre réseau en liste blanche.
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
Connecter NordVPN sur son rasberry

La commande suivante permet de vérifier la configuration NordVPN :

nordvpn settings
Connecter NordVPN sur son rasberry
Par défaut, NordVPN ne touche pas aux serveurs DNS, ce qui est une bonne chose pour notre installation raspberry + pi-hole.

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.
Connecter protonVPN sur son rasberry
Attention, protonVPN a tendance à forcer la configuration du DNS. Ainsi ici, il utilise celui du VPN. On perd donc le filtrage pi-hole.

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.

Vérifier les DNS du raspberry pour forcer le DNS pi-hole

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
Vérifier les DNS du raspberry pour forcer le DNS pi-hole

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
Changer l'adresse IP du client pour Netflix et autres streaming

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.

La connexion du raspberry vers un serveur OpenVPN pour masquer son adresse IP.

Les liens :

Vous avez trouvé cet article utile et interressant, n'hésitez pas à le partager...

Trouver la solution sur le forum d'aide

Vous êtes arrivé au terme de l'article Installer un raspberry en routeur VPN + pi-hole (NordVPN ou ProtonVPN) mais vous n'avez pas trouvé la solution à votre problème...
Suivez ces articles du forum pour trouver une réponse ou demandez à votre tour de l'aide sur le forum