Pi-Hole : bloquer toutes les pubs internet sur votre réseau
Il existe de nombreux logiciels et plugins pour bloquer les pubs, mais si vous voulez les mettre en place sur tous vos objets connectés au web vous aurez besoin soit de trouver ces programmes pour chacun de vos périphériques, soit d’une alternative. C’est là qu’intervient Pi-Hole en effectuant un filtrage directement entre votre box et votre Raspberry.
Pi-Hole va assurer le rôle de serveur DNS grâce à Dnsmasq et des fichiers texte contenant des domaines bloqués pointant vers 0.0.0.0 (une adresse non routable). En sorte c’est un bon vieux DNS menteur. Plutôt que d’utiliser votre box/routeur comme DNS il faudra que toutes vos machines pointent vers Pi-Hole pour la résolution IP.
Cela permet même de bloquer les publicités là où c’est normalement pas possible (console de jeu, camera IP connectée au cloud, etc).
Dans mon cas, la mise en place a été extrêmement simple car je disposais déjà d’un Raspberry sur mon réseau … Mais des tutos d’installation sont disponibles un peu partout sur le net. De plus, Pi-Hole peut s’installer de manière générale sur les distributions basées sur Debian : Raspbian, Kali, Ubuntu, etc…
Je vais traiter du cas Raspberry ici mais les commandes sont les mêmes pour les autres distributions …
Prérequis :
- Raspbian installé sur votre Raspberry Pi
- Avoir votre Raspberry connecté au réseau local
- Avoir une IP fixe sur le Raspberry
- Connaître l’IP de sa box
Installation :
L’installation est simplissime car il suffit de se connecter en SSH sur le raspberry et de simplement lancer la commande suivante :
# curl -L install.pi-hole.net | bash
Le script d’installation se lance et vous devez répondre à quelques questions.
on me demande de choisir un fournisseur DNS dans une liste de fournisseurs de DNS publics, j’ai sélectionné OpenDNS :
Les questions suivantes sont basiques ….
Bien noter le password donné à la fin de l’installation qui vous permettra de vous connecter sur l’interface d’admin ! |
Voilà ! Pi-Hole est désormais actifs sur votre réseau … Il suffit de se connecter sur l’URL : http://Ip_du_Raspberry/admin pour obtenir un beau dashboard :
Configuration Pi-Hole
Les commandes :
# pihole –help
::: Control all Pi-hole specific functions
:::
::: Usage: pihole [options]
::: Add -h after -w (whitelist), -b (blacklist), -c (chronometer), or -a (admin) for more information on usage
:::
::: Options:
::: -w, whitelist Whitelist domain(s)
::: -b, blacklist Blacklist domain(s) (exact match)
::: -wild, wildcard Blacklist whole domain(s) (wildcard)
::: -d, debug Start a debugging session
::: Automated debugging can be enabled with ‘-a’.
::: ‘pihole -d -a’
::: -f, flush Flush the ‘pihole.log’ file
::: -t, tail Output the last lines of the ‘pihole.log’ file. Lines are appended as the file grows
::: -up, updatePihole Update Pi-hole components
::: -r, reconfigure Reconfigure or Repair Pi-hole
::: -g, updateGravity Update the list of ad-serving domains
::: -c, chronometer Calculates stats and displays to an LCD
::: -h, help Show this help dialog
::: -v, version Show installed versions of Pi-hole and Web-Admin
::: -q, query Query the adlists for a specific domain
::: ‘pihole -q domain -exact’ shows exact matches only
::: -l, logging Enable or Disable logging (pass ‘on’ or ‘off’)
::: -a, admin Admin webpage options
::: uninstall Uninstall Pi-hole from your system! 🙁
::: status Display if Pi-hole is Enabled or Disabled
::: enable Enable Pi-hole DNS Blocking
::: disable Disable Pi-hole DNS Blocking
::: Blocking can also be disabled only temporarily, e.g.,
::: ‘pihole disable 5m’ – will disable blocking for 5 minutes
::: restartdns Restart dnsmasq
::: checkout Check out different branches
Changer le mot de passe
Se connecter en ssh et utiliser la commande :
# pihole -a -p votre-mot-de-passe
Mettre à jour Pi-Hole
Se connecter en ssh et utiliser la commande :
# pihole -up
ex:
# pihole -up ::: Checking for updates... ::: Pi-hole Core: up to date ::: FTL: up to date ::: Web Interface: up to date ::: ::: Everything is up to date! #
Afin d’être à jour en permanence le mieux est de passer cette commande dans un cron
on créé un script dans le répertoire /etc/cron.daily ( script trouvé ici : https://pastebin.com/ZDhgQ2be )
# sudo vi pi-hole
“pihole -g” permet de mettre à jour les listes
“pihole -up” permet de mettre à jour Pi-Hole
#!/bin/bash echo "" echo "" echo "******************************" echo "*** updating pi-hole lists ***" echo "******************************" pihole -g pihole -up clear date >> /var/log/pihole-update.log echo "******************************" echo "*** pi-hole lists updated ***" echo "******************************" echo "" echo ""
On ajoute les droits d’execution au script avec un :
# sudo chmod 755 pi-hole
Et notre pi-Hole se mettra à jour tous les jours …
Configuration sur le réseau
Une fois cela fait, il ne reste plus qu’à configurer vos appareils pour qu’il puisse utiliser le Pi-Hole en tant que serveur DNS sinon l’intérêt est plus que limité 😆 .
Pour cela plusieurs méthodes en fonction de la configuration de votre réseau.
Pour ma part toutes les adresses IP de mon réseau sont fournies par un serveur DHCP sur Synology et si j’ai besoin d’adresse fixe je configure ce même DHCP pour une réservation d’adresse avec l’adresse MAC. Donc il me suffit de modifier la configuration DHCP de mon serveur pour qu’il utilise le Raspberry Pi-Hole en tant que serveur DNS primaire, et hop ! le tour est joué ! Tous mes appareils ( PC, NAS, Tablette, smartphone, etc … ) feront des requêtes DNS sur le Pi-Hole 😎
Le principe est le même dans le cas d’une box ( Livebox, Freebox, etc … ). Il faut se rendre sur la configuration du serveur DHCP et remplacer le serveur DNS par l’adresse du Pi-Hole.
Paramétrage des DNS sans passer par une box ou serveur DHCP :
Sous Linux :
- Settings > Network Connections
- Sélectionnez la connexion puis Edit
- Sélectionnez IPv4 Settings ou IPv6 Settings selon ce que vous utilisez
- Si la méthode utilisée est « Automatic (DHCP) », ouvrez le menu et sélectionnez « Automatic (DHCP) addresses only ».
- Remplacez les adresses par l’IP du Raspberry Pi-Hole
- Sauvegardez
Sous Windows :
- Clic droit sur le bouton démarrer > Panneau de configuration
- Réseaux Internet > Centre réseaux et partage
- Panneau latéral gauche > Modifier les paramètres de la carte
- Sélectionnez votre connexion
- Clic droit > Propriétés
- Double clic sur Protocol Internet Version 4 (TCP/IPv4) ou Protocol Internet Version 6 (TCP/IPv6) selon ce que vous utilisez
- Sélectionnez Utiliser l’adresse de serveur DNS suivante
- Rentrez l’IP du Raspberry Pi-Hole
- Redémarrez votre connexion ou ordinateur
Sous Mac OS X :
- Apple > Préférences Système > Réseau
- Sélectionnez votre connexion
- Avancé > Serveur DNS
- Remplacez l’adresse par l’IP du Raspberry Pi-Hole
- Appliquer
Conclusion
Pi-Hole est une solution gratuite et très facile à mettre en place. Bien sûr ce n’est pas l’arme ultime car certaines publicités continuent de passer mais dans la grande majorité elles sont effectivement bien bloquées.
3 commentaires
Gwen · 15 décembre 2017 à 8 h 27 min
Super tuto, merci. Pihole est installé, mais ma livebox empêche le changement du serveur DNS. Je fais comment pour que tous mes appareils utilisent mon raspi comme DNS (sauf la box, le décodeur et le téléphone) ?
Tpeltier · 15 décembre 2017 à 8 h 42 min
Bonne question … A part modifier les DNS de chaque machine localement je vois pas trop … Je n’ai pas de livebox mais il serait quand même bizarre de ne pas pouvoir modifier les dns par défaut au niveau de la configuration DHCP de la box …
bart · 30 décembre 2022 à 18 h 39 min
reponse un peu tardive mais bon … poir les box qui ne permette pas le changement de dns, il faut brider le serveur dhcp de la box a 2 ip (box télé+pihole) ensuite sur le dhcp du pihole decaler les attributions des ip en dehors de la plage ip du serveur dhcp de la box , ex ip dhcp de la box de 192.168.1.1 a 192.168.1.3 et le dhcp du pihole de 192.168.1.100 a 192.168.1.200