Pi-Hole, un serveur DNS sur Raspberry Pi pour se débarrasser de la pub

Pi-Hole, un serveur DNS sur Raspberry Pi pour se débarrasser de la pub

Pi-Hole est une solution pour se débarrasser de la publicité sur tous vos appareils connectés. Créé autour d’une carte Raspberry Pi, le système permet de passer au crible les affichages publicitaires de vos sessions de surf.

Pi-Hole est une création de Jacob Selma qui livre les sources et les informations nécessaires pour le réaliser. Il s’agit d’un serveur DNS au travers duquel vos appareils pourront se connecter.

Très léger, Pi-Hole ne demande pas beaucoup de ressources et peut même tourner sur une carte Raspberry Pi Zero. Il est possible d’utiliser d’autres types de cartes de développement, le système s’acclimate à énormément de distributions linux : Raspbian mais aussi Debian, Ubuntu, Fedora, CentOS…  L’installation se passe au travers d’un guide pas à pas après avoir pianoté une simple ligne de commande sur votre Pi1 :

curl -sSL https://install.pi-hole.net | bash

Une fois votre Pi-Hole en place vous n’aurez plus qu’a utiliser son adresse IP comme serveur DNS pour votre routeur ou connecter toutes vos machines au travers de celui-ci.

2018-07-31 11_25_01-minimachines.net

Si votre routeur ne permet pas cette manipulation, il est possible de se servir du serveur DHCP de Pi-Hole pour parvenir au même résultat.

Le système utilisera ensuite une « liste noire » de serveurs publicitaires pour tracker les éléments à ne pas afficher ni télécharger sur votre réseau. Vos pages web seront donc débarrassées des publicités de la même manière qu’en utilisant un ad-blocker en extension sur votre navigateur. A la différence que cela sera fait automatiquement sur toutes les machines connectées que vous utiliserez sur votre réseau local : En wifi comme en Ethernet.

Il est possible d’utiliser des listes blanches pour supporter des sites affichant de la publicité raisonnable et que vous voulez soutenir ou pour profiter de services payés par les publicités comme Spotify, par exemple.

Pi-holedashboard

L’interface graphique de Pi-Hole est un modèle du genre avec énormément d’informations et de statistiques, ce qui permet de savoir combien de publicités vous avez fait sauter mais également la bande passante économisée. Cela m’intéresse grandement pour associer ce genre de solution à un routeur 4G afin d’économiser du débit et des gigaoctets de données.

Pi-Hole est totalement libre et gratuit, vous trouverez toutes les informations sur sa page web : Pi-Hole.net. Pour qu’il reste libre et gratuit vous pouvez participer à son financement au moyen d’un don via Paypal ou Patreon.

 

Notes :

  1. D’autres méthodes d’installation sont disponibles et détaillées à cette adresse.
49 commentaires sur ce sujet.
  • 31 juillet 2018 - 12 h 02 min

    Je l’ai réinstallé définitivement il y a 15 jours sur une Piv1. Je l’avais testé il y a 2 ans lorsque tout le monde en parlait et il s’est grandement amélioré.

    Répondre
  • 31 juillet 2018 - 13 h 07 min

    Le « pipe » batch, il faut être sacrément couillu (ou autre) pour exécuter ce genre de commande depuis Internet !

    Répondre
  • 31 juillet 2018 - 13 h 18 min

    @exxos:
    Effectivement c’est un peu… comment dire… suicidaire?

    Répondre
  • 31 juillet 2018 - 13 h 31 min

    Je l’ai installé il y a quelques mois sur mon esxi avec Debian 9 et c’est vraiment une joie notamment avec la Shield TV, plus aucune pub YouTube/Twitch etc… Et il prend littéralement 5 min à être configuré.

    Un « must have » comme on dit.

    Répondre
  • 31 juillet 2018 - 13 h 38 min

    @exxos:

    Oui et non.

    Oui: le code source est disponible en clair, le lire (juste prends l’adresse http dans un Browser) et si ok, lancer la commande. On se rends compte également que le code est disponible sur github avec presque 10k stars.

    Non: Le Copier / Coller est un peu trop facile dans l’article et à mon avis trop peu de gens voudront même parcourir les 20 premières lignes.

    Répondre
  • 31 juillet 2018 - 13 h 42 min

    attention tout de même; depuis que je l’ai installé, le site auvio.be ne fonctionne plus les vidéos ne se lancent plus, je l’ai pourtant whitelisté.
    Donc ça fonctionne très bien, mais c’est parfois pas évident au niveau du fine tuning, certains sites en appelant d’autres de manière indirecte

    Répondre
  • 31 juillet 2018 - 13 h 59 min

    Je l’utilise depuis presque deux ans, ça fonctionne bien, et effectivement ça nécessite un peu de « fine tuning ».
    Par contre, sur un RPI, les logs font beaucoup d’écritures sur la carte SD. Pas top pour la durée de vie.
    Mais ils sont désactivables dans le dashboard. On perd un peu l’intérêt des stats, mais au bout d’un moment on les regarde plus, il y en a tellement…

    Répondre
  • 31 juillet 2018 - 14 h 27 min

    Pour ceux qui ont un router qui tourne sous OpenWrt, DDWrt ou équivalent, il existe depuis des années un package nommé adblock qui fait la même chose, mais sans toute la partie stats et graphes. On installe, la configuration par défaut convient, et c’est tout grosso modo.

    Lien github: https://github.com/openwrt/packages/blob/master/net/adblock/files/README.md

    Répondre
  • 31 juillet 2018 - 14 h 38 min

    @exxos:

    Le site hébergeant le script d’install est au moins en https, amha ce n’est pas pire que d’ajouter un dépôt tiers… supposé de confiance. Surtout ajouté sans précaution (priorités…), qui pourrait voir installées des binaires de ce dépot ajouté remplacer ceux de la distribution.

    Si on veut rester dans le cadre de sa distro, on peut faire du DNS avec le choix de serveurs supportés.

    dnsmasq pour un usage personnel est léger. Pour ma part je l’ai installé sur un PI gérant également domotique/alarme afin d’y mettre des listes de filtrage de sites de cul/violence et les PC des enfants sont configurés sur ce DNS perso.

    Ces listes (via shallalist, qui semble pas trop mal mises à jour et surtout, hébergement sur un PI oblige, ne pas accumuler des domaines n’existant plus depuis des lustres qui vont pénaliser les temps de résolution) sont chargées/re-formatées pour dnsmasq via un script appelé par un cron 2 fois par semaine.
    http://www.shallalist.de/

    C’est un tar.gz contenant les listes classées par thème à charger/vérifier (md5). J’extrait/reformate seulement celles qui me sont utiles et donne cela à dnsmasq via un fichier /etc/dnsmasq.more.conf

    Pour ce qui est de la pub, je trouve pour ma part bien plus simple de procéder sur la machine même avec le fichier hosts qui redirige vers la boucle locale les domaines de pub qu’on ne veut pas voir résolus. Et en prime, cela n’oblige pas à reconfigurer pour passer outre le DNS généralement obtenu par le DHCP de sa box (chiant sur un laptop qui se ballade, à moins de faire aussi héberger la fonction DHCP par celle faisant le filtre DNS).

    J’utilise pour ma part le hosts de mvps depuis une dizaine d’années. C’est global système et évite les extensions de navigateur faisant commerce des exceptions au filtrage.
    http://winhelp2002.mvps.org/hosts.htm

    Attention néanmoins sous Linux à commenter les localhost/nom machine du fichier mvps et conserver ceux initiaux: sudo fait des vérifications utilisant le nom machine et s’il n’est plus dans le hosts, il ne fonctionne plus! Cela peut être embêtant sur des distributions n’activant par défaut pas le compte root comme Ubuntu. Après il faut bidouiller (command line à éditer via grub afin de booter en single-user/root ; boot sur live-CD puis montage de la partition locale hébergeant le hosts pour le modifier…).

    Si le DNS est hébergé par une machine peu performante, cela permet aussi de ne pas y avoir des listes de filtrage trop longues que de répartir le boulot de filtrage pub/le reste.

    Répondre
  • 31 juillet 2018 - 14 h 40 min

    @Elgringo:

    Pour ma part, les logs sont dans un tmpfs… et ils sont rincés une fois par semaine (un cron qui lance un « truncate -s 0 FichierLog » qui fonctionnera même sur les fichiers qui restent en permanence ouverts en écriture ; c’est le log-sans-rotate du pauvre!).

    Répondre
  • 31 juillet 2018 - 15 h 03 min

    @casswinch: alors ça vire les pubs youtube ? Sur une Android TV ?

    Répondre
  • 31 juillet 2018 - 15 h 25 min
  • 31 juillet 2018 - 17 h 12 min
  • 31 juillet 2018 - 17 h 31 min

    Question pour les spécialistes… Est-ce que ça ne ramène pas trop sur une Pi, parce qu’une Pi sur sa RJ45, ça fait pas fondre les câbles réseau…

    Répondre
  • 31 juillet 2018 - 17 h 35 min

    je découvre ce genre de montage… cela ne ralenti pas trop les services de passer par un Rpi ?

    perso j’ai un VDSL2@56M… j’ai peur de ne pas apprécier l’expérience ! :/

    sachant que nous avons dessus… 1 TV (by kody), 1 NAS (bon lui ne devrait pas être impacter :D ), 2 tabellets, 1 PC, 2 ordi portables et 2 smartphones… en général 50% des appareils connectés en même temps sur le net !
    (j’aurais pas cru il y à 5ans… oO … quand nous n’avions que le fixe et un portable)

    Répondre
  • 31 juillet 2018 - 18 h 19 min

    j’adore l’interface graphique, je m’essaie au code avec python mais j’arrive pas a construire facilement de sinterface comme ca -_-, des idées ?

    Répondre
  • 31 juillet 2018 - 18 h 40 min

    @Augure: Il est vrai qu’un rpi peut paraitre asthmatique au 1er abord mais l’article parle d’un service dns couplé à un filtrage de pub, soit un genre de service pouvant être proposé par un simple routeur basique si les constructeurs le voulaient.
    J’ai mon propre serveur dns sur un rpi de 1ère génération et il lui en reste suffisamment sous le pied pour bloquer les pubs sans problème.
    Le seul inconvénient qu’on pourrait y trouver est ne ne pas profiter du gros cache dns fourni par les fai, en sachant que ça peut être contre-balancé par le propre cache dns du rpi.
    Donc :
    La 1ère requête est plus longue (quelques dixièmes de seconde) avec un rpi.
    Les requêtes suivante sur le même site seront beaucoup plus rapide avec le cache d’un serveur dns sur son propre réseau local.
    Pour conclure, il n’y a pas grand chose à perdre à tester soi-même, à part un peur de son temps.

    Répondre
  • 31 juillet 2018 - 19 h 09 min

    @chapichapo: Et je dirais que c’est même du temps investi dans l’apprentissage et donc jamais « perdu ».

    Répondre
  • 31 juillet 2018 - 19 h 58 min

    @kantfredo:

    Salut, regarde du côté de bootstrap et du thème core.ui.

    Répondre
  • 31 juillet 2018 - 20 h 35 min

    @haruhi: Tout à fait, plus une seule.

    Répondre
  • 31 juillet 2018 - 22 h 15 min

    Donc ça filtrerait aussi les pubs porno qui pullulent dans les jeux gratuits sur Android ?

    Vous me conseillez quoi comme carte raspberry pas chère avec ethernet ?

    Répondre
  • 31 juillet 2018 - 22 h 33 min

    @StefD : Certainement. Voici une bonne liste : https://firebog.net/

    Vous pouvez tester Pi-hole sous linux en VM si vous voulez (et donc redirection du dns de l’hôte vers ip de la VM)
    On parle de Pi parce qu’il faut un « serveur » qui soit allumé 24h/24 donc autant prendre un ensemble fonctionnel qui consomme le moins possible.

    Répondre
  • 1 août 2018 - 0 h 17 min

    Bon vous m’avez convaincu a 80%… Les 15% restant sont ma Pi1 qui pleure dans le fond de mon tiroir (et que mon poussin est trop fière d’avoir monté avec moi il y a 3ans).

    Mais je garde encore 5% qui est mon subconscient qui me répète toutes les 5mn que je me lance encore dans un truc trop compliqué pour moi et que je vais encore galérer des semaines avant d’abandonner… 😅

    Répondre
  • Tof
    1 août 2018 - 1 h 01 min
  • 1 août 2018 - 9 h 07 min

    @dyox: Ah pas mal je connaissais pas je vais essayer ça. Merci bien!

    Répondre
  • 1 août 2018 - 9 h 30 min

    @Matth:
    Je ne l’ai pas installé mais il est dans ma TODO !!
    Pour Auvio.be, après un petit snif j’ai remarqué que tout le contenu passait par:
    https://rtbf-vod.l3.freecaster.net/vod/rtbf/geo/drm/
    Si tu whitelist freecaster.net, est-ce que cela fonctionne ?

    Merci pour l’article et la futur réponse j’espère :-p .

    Répondre
  • 1 août 2018 - 10 h 29 min

    Bonjour et merci Dyox pour ta réponse

    Du coup j’ai installé Ubuntu en VM depuis windows 7. J’ai installé Pi-Hole mais je bloque à la configuration Static Ip Adress. Comment configurer tout cela en VM ? Pouvez-vous me filer un petit coup de main svp

    Merci !

    Répondre
  • 1 août 2018 - 11 h 49 min

    @StefD : de mémoire (il y a 2 ans), avec des ip fixes
    imaginons votre pc sous win7 :
    ip :192.168.1.10 / 255.255.255.0
    passerelle : 192.168.1.1 (la box)
    DNS : 192.168.1.1

    sous ubuntu avec virtualbox, le réseau est en nat par défaut donc vous devriez avoir le net tout de suite, on installe pi-hole et on configure l’ip fixe dans son installation :
    192.168.1.254 /24
    passerelle : 192.168.1.1
    DNS : (choisisssez dans la liste si c’est possible)

    puis remplacez le DNS win7 par 192.168.1.254 puis un petit ipconfig /flushdns

    Répondre
  • 1 août 2018 - 16 h 31 min

    @dyox:

    Merci Dyox mais je crois que je suis une bille… Soit j’ai un pb dans mes réglages, soit il y a un bug avec la VM. Après la config il bloque sur Starting dnsmasq service…

    En fait je connecte Ubuntu à ma carte réseau windows en réglant connexion de pont dans la VM : OK
    Je vois bien ma VM dans mon box : 192.168.1.26

    Je règle Pi-Hole en mettant DNS google, ip 192.168.1.26 – passerelle : 192.168.1.254 (ma box)
    Je coche l’installation admin
    ça redémarre et ça s’arrête : [i] Starting dnsmasq service… etc…

    Répondre
  • 1 août 2018 - 16 h 40 min

    @StefD : Il ne faut surtout rien toucher au réseau de win et de la VM, pas de pont. Réglez la vm sur nat ( la config par défaut en plus donc on ne touche à rien) et cela suffit.
    Votre VM a accès à internet ?

    Répondre
  • 1 août 2018 - 17 h 43 min

    Ca fait riche d’utiliser une Pi pour ça (en dehors de l’aspect éducatif et ludique, bien sûr !).

    ** Pour les plus bricoleurs ** on trouve des « mini routeur 3G » à 8€, avec un port RJ45 alimentés via un port mini USB, qui peuvent être flashé avec OpenWRT. Reste ensuite à adapter Pi-Hole sur ces bébêtes pour avoir un mini filtre DNS tout rikiki (la taille d’une gomme !), posé contre le modem ADSL et alimenté par lui, pour jouer ce role à 1/10ème du prix d’un kit RPI.

    Pour quelques euros de plus, il y a aussi l’option du mini routeur Nexx WT3020 qui a 2 ports RJ45. Avec un OpenWRT dessus, et une adaptation de PiHole, on pourrait faire une sorte de routeur filtrant autonome qu’on intercalerait entre le modem et le routeur, par exemple, et qui se chargerait d’intercepter toutes les requêtes pour filtrer les pubs. Cette approche est déjà utilisée pour placer un VPN sur ces mini routeurs et sécuriser tout le traffic d’une maison par un seul flux VPN. On pourrait aussi ajouter un filtre à pubs sur ce type de machine.

    Ca donne plein d’idées, ce truc ……

    Répondre
  • 1 août 2018 - 17 h 45 min

    @dyox:

    Et bien au départ oui mais plus maintenant… :(
    Ce qui complique aussi à mon avis c’est que j’ai un VPN sur le PC windows 7

    Répondre
  • 1 août 2018 - 17 h 47 min

    Ah bah si ça fonctionne maintenant…

    Répondre
  • 1 août 2018 - 17 h 52 min

    Je pencherais plus quand même pour un problème avec la distri Ubuntu ou la VM car ça bloque toujours au moment de lancer le service dnsmasq

    Répondre
  • 1 août 2018 - 18 h 25 min

    @StefD: Tu trouve vraiment que c’est moins compliqué d’installer PiHole sur une VM dans un pc sous VPN que d’écrire sur la SD d’un RPi ?
    J’ai pas la même conception de la simplicité, sachant que le serveur PiHole n’a pas besoin de passer par le VPN.

    Répondre
  • 1 août 2018 - 18 h 51 min

    @chapichapo : il ne possède pas de RPi, donc c’est le meilleur moyen pour tester à moindre frais et normalement rapidement ^^

    @StarDreamer : OpenWRT / LEDE est aussi installable sur RPi. J’ai testé il y a 1 mois. C’était plus pour apprendre iptables et savoir compiler. J’ai intégré mes drivers wifi sur une RPi2, fait différents essais et testé l’adblock.
    En tout cas, je comprends maintenant la hype autour de LEDE. J’ai même hésité à acheter un minipc avec de 2 lan (hystou (170€) / mini mint box2 (300€) / Turris Omnia (330€) pour cet distribution. Et je prends aussi l’attente de compatibilité avec les routeurs Xiaomi.

    https://openwrt.org/toh/views/toh_fwdownload?dataflt%5BBrand*~%5D=rasp

    Ha bah tien ! fr.aliexpress.com est pi-holed

    Répondre
  • 1 août 2018 - 19 h 03 min

    @dyox: Oups, J’ai mélangé les propos de StefD et d’Augure.
    C’est en effet une solution économique avec un grand risque de se dégoûter de linux en faisant une telle config.

    Répondre
  • 1 août 2018 - 22 h 05 min

    Ai installé ça en 5min sur une VM Mint. Super simple à faire et l’interface est top. Du coup j’ai commandé mon premier RPI3B+.

    Répondre
  • 2 août 2018 - 14 h 37 min

    En fait :

    Ubuntu 18 : problème de conflit de port donc il y a une manip à faire mais pas eu le temps de chercher comment fonctionne le « edit » car j’arrive à modifier mais pas enregistrer (je ne connais pas linux)c’est pour cette raison que Pi-Hole plante au démarrage

    Ubuntu 16.10 : pas réussi (plus trop le temps aussi) d’installer Git : le terminal me renvoie un truc du genre : pas de version compatible avec Ubuntu 16.10

    Je vais essayer sur VM Mint ça m’occupera quelques minutes.

    En fait je ne connais pas Linux donc c’est l’occasion de s’y mettre, même si ce n’était pas dans mes priorités.

    Répondre
  • 3 août 2018 - 8 h 27 min

    […] Pi-Hole, un serveur DNS sur Raspberry Pi pour se débarrasser de la pub. Pi-Hole est une création de Jacob Selma qui livre les sources et les informations nécessaires pour le réaliser. Il s’agit d’un serveur DNS au travers duquel vos appareils pourront se connecter. Très léger, Pi-Hole ne demande pas beaucoup de ressources et peut même tourner sur une carte Raspberry Pi Zero. Il est possible d’utiliser d’autres types de cartes de développement, le système s’acclimate à énormément de distributions linux : Raspbian mais aussi Debian, Ubuntu, Fedora, CentOS… L’installation se passe au travers d’un guide pas à pas après avoir pianoté une simple ligne de commande sur votre Pi : curl -sSL | bash Une fois votre Pi-Hole en place vous n’aurez plus qu’a utiliser son adresse IP comme serveur DNS pour votre routeur ou connecter toutes vos machines au travers de celui-ci. […]

  • 3 août 2018 - 16 h 46 min

    Ça fait quelques années que j’en ai entendu parler, peut être le moment de franchir le pas …

    J’ai un vieux Pi 1B qui traîne et qui ne me sert a rien faute de puissance, est il suffisant? (enfin je veux dire pas « juste » suffisant mais « sans accroc »)

    Répondre
  • 4 août 2018 - 15 h 45 min

    j’ai fais un essai pour le côté éducatif mais ça marche pas terrible chez moi.
    Déjà je suis tombé sur le bug d’incompatibilité jessie/dnsmasq/pi-hole , résolu en suivant cette faq :
    https://discourse.pi-hole.net/t/install-a-more-recent-dnsmasq-on-raspbian-jessie/7306
    Ensuite j’ai le service ftl qui reste down même après reboot, je suis obligé de faire sudo service pihole-FTL restart
    pour qu’il fonctionne.
    Je ne sais pas ce que j’ai raté.
    Bon, j’ai testé quand même mais pas convaincu pour le moment, par exemple toutes les pubs de binnews.in restent

    Répondre
  • 4 août 2018 - 21 h 01 min

    Je râlais parce que ça ne marchait pas… j’avais oublié de relancer ma connexion wifi sur mon ordinateur !

    Oui je suis un boulet :D

    Sinon je trouve l’outil formidable, avec un petit réglage aux oignons même plus besoin d’extentions.

    Répondre
  • 5 août 2018 - 10 h 46 min

    Pour ma part, idem avec Mint sur VM… Ca reste bloqué ici [i] Starting dnsmasq service

    Je crois que je vais abandonné

    Répondre
  • 5 août 2018 - 13 h 29 min

    @StefD : je viens de tester et j’ai eu le même problème. Quand on fait un
    $ systemctl status dnsmasq.service, il nous dit que le port 53 est déjà en utilisation.
    Maintenant faut savoir pourquoi :
    $ sudo netstat – pdtaun | grep 53 nous dis que c’est le service systemd-resolved qui l’occuppe.
    On le désactive :
    $ systemctl disable systemd-resolved.service puis on active les 2 services : systemctl start dnsmasq.service pihole-FTL.service
    Puis on teste en local : dans firefox : 127.0.0.1/admin
    voir les listes, si vide, il faut les rajouter : https://firebog.net/
    Pour changer de mdp : $ pihole -a -p

    Ben, ce n’est plus si simple qu’auparavant :(
    Et il faut relancer pihole-FTL.service au redémarrage. (en tout cas pour moi)

    Bon courage

    Répondre
  • 6 août 2018 - 18 h 23 min

    MAJ en v4.0 aujourd’hui : https://github.com/pi-hole/pi-hole/releases
    Corrige le problème expliqué dans mon post au dessus : Disable SystemD’s DNS stub resolver when installing to fix Ubuntu 18.04 #2180

    Peut-être est-ce redevenu simple à tester en VM Mint / Ubuntu ?

    Répondre
  • 8 août 2018 - 19 h 57 min

    @dyox:

    Salut et merci Dyox pour l’info !

    Effectivement ça marche désormais. Enfin presque ! Je me casse la tête à essayer de configurer. J’ai réussi quelques instants mais étrangement ça n’a pas duré… Il faut dire que je me complique la vie avec la VM et le VPN…

    Ça fonctionne que quelques secondes mais ça s’arrête…

    A suivre !

    Répondre
  • 8 août 2018 - 21 h 03 min

    En fait, ça fonctionne beaucoup mieux en redémarrant le routeur… :) :) :)

    Par contre je n’ai pas l’impression que ça filtre les pubs youtube depuis le tél…

    Bref, en test ! Merci

    Répondre
  • 9 août 2018 - 11 h 10 min

    […] une batterie de possibilités comme bloquer le nom de domaine. Pierre dernièrement a présenté pi-hole par exemple, qui fait office de bloqueur de pub par résolution […]

  • LAISSER UN COMMENTAIRE

    *

    *