Rédaction le 12/12/2018
Mise à jour le 04/05/2019
Attention : ne surtout pas faire de sauvegarde ou de snapshot de cette VM en marche. Il faut d’abord l’arrêter. L’effet de bord est que le plugin Jeedom pour la piloter ne fonctionnera plus.
Ajout 05/2019 : Pensez à mettre à jour votre pihole par la commande suivante dans votre console et mettez à jour vos filtres :
pihole -up
Votre configuration ne sera perdue !
Ou comment gérer le filtrage de la publicité depuis Jeedom ou sans d’ailleurs ! On en profitera lors de la mise en place de ce serveur DNS pour mettre en place un moyen aisé d’accéder à ses IP locales comme ne plus avoir à retenu 192.158.2.1 pour le routeur et rentrer http://routeur.maison par exemple !
Pré-requis :
- comprendre ce qu’est PIHOLE : https://pi-hole.net/
- avoir son serveur domotique avec Proxmox ou un autre moyen de virtualisation à disposition ;
- avoir son tableau d’adresses IP sur son réseau local sous le bras (voir l’article) ;
- facultatif : un téléphone Android avec l’application pihole installée ;
- facultatifs : avoir Jeedom installé, un plugin de notifications type Telegram ou autre ; le plugin pihole installé depuis le market (gratuit).
Installation de PIHOLE
Traduit de l’anglais ; PIHOLE est une application de blocage de traqueur internet et de publicité au niveau du réseau Linux qui agit comme une fosse DNS, destinée à être utilisée sur son réseau local – privé afin d’améliorer le confort de lisibilité des pages ou éviter le tracking par les GAFA par exemple…
Je ne donnerai pas mon avis sur ça mais je vous propose une alternative intéressante pour toute la famille, surtout avec Jeedom. Cela permet d’éviter un plugin type adblock sur votre navigateur par exemple. Attention, toutefois car de nombreuses recherches Google, de visualisation de sites internet ne fonctionneront plus. C’est aussi la raison qui fait que j’ai mis en place un pilotage Jeedom ou Android pour tout cela.
Suivez le tutoriel de la machine virtuelle Apache dans sa partie générique (relire l’article) pour installer une machine virtuelle dédiée à PIHOLE dont voici les paramètres (là encore après quelques semaines d’utilisation) :
- 1 core – 1 socket et encore si on pouvait mettre moins (3% tout le temps !) ;
- 512 à 1024 Mo de mémoire vive ;
- 8 Go de disque dur.
N’oubliez pas de récupérer votre IP, l’adresse MAC, l’ajout au serveur DHCP de votre routeur (on y reviendra plus tard pour fixer la partie DNS), le login et le mot de passe de votre super-utilisateur pour tout monitoring et direction notre client SSH préféré pour installer tout cela.
Reprenez le fil de la machine virtuelle Apache dans sa partie générique et on se retrouve ensuite :
Déroulez la partie générique de l’installation Debian9 sous Proxmox
https://jeedom-facile.fr/index.php/2018/12/06/machine-virtuelle-apache/
Partie générique de la machine virtuelle
Ensuite, direction votre client SSH connecté à l’IP de votre machine virtuelle PIHOLE, votre utilisateur – “super-utilisateur” connecté.
J’ai fait le choix de fixer l’adresse IP depuis la machine virtuelle pour éviter toute surprise et du coup fixer les serveurs DNS que nous allons utiliser ; dans mon cas ceux d’Orange.
Voir la liste des serveurs DNS :
https://www.commentcamarche.net/faq/1496-serveurs-dns-des-principaux-fai
sudo nano /etc/network/interfaces
Adaptez ce texte en fonction du nom de votre interface (ici ens18), l’adresse IP de votre machine virtuelle PIHOLE (X.X), celle de votre passerelle (routeur habituellement) (X.Y) et les 2 serveurs DNS que vous souhaitez utiliser pour votre trafic internet au format A.B.C.D
# The primary network interface
allow-hotplug ens18
# iface ens18 inet dhcp
iface ens18 inet static
address 192.168.X.X
netmask 255.255.255.0
gateway 192.168.X.Y
dns-nameservers DNS1 DNS2
Ensuite mise à jour et installation de curl pour réaliser l’installation :
sudo apt update -y && sudo apt upgrade -y && sudo apt install curl -y
Mise à jour et curl
Puis pihole depuis le site officiel :
curl -L https://install.pi-hole.net | bash
Pas besoin de le lancer en sudo, le script le gère tout seul
La barre verticale = ALT GT + 6
Déroulez l’installation graphique pour :
- il vous indique qu’il faut que votre IP soit statique – nous l’avons fait plus haut ;
- choisissez l’interface de filtrage – ici l’Ethernet ;
- choisissez le protocole internet choisi, je n’indique que l’IPV4 personnellement ;
- choisissez Custom (ou si vous savez ce que vous faites, do-it !) pour indiquer les serveurs DNS de sortie que vous avez mis dans le fichier interfaces plus haut avec le bon format ;
- validez !
Vous devriez arriver à la console avec un résumé de votre installation indiquant le login “admin” et le mot de passe de votre administration pihole.
Avant de continuer, j’ai fait le choix d’ajouter un pare-feu logiciel sur cette machine virtuelle avec :
sudo apt-get install -y ufw
On installe ufw (firewall) puis on autorise le trafic sur le port HTTP (80) et DNS (53).
sudo ufw allow http
sudo ufw allow 53
Logguez-vous dans l’interface de votre pihole avec votre navigateur web à l’adresse http://ipvmpihole (à remplacer par l’IP adéquate) :
Forcément la copie d’écran ici est un peu “fausse” car cela fait plusieurs jours qu’il tourne. On y retrouvera (car vous n’avez pas encore fini votre installation) :
- le nombre de clients connectés ;
- le nombre de requêtes bloquées ;
- le pourcentage bloqué ;
- les domaines dans la liste de blocage ;
- l’état de santé de pihole ; etc.
Là encore, vous pouvez conserver la liste d’origine de blocage ou bien la compléter. Rendez-vous dans l’onglet Settings / Blocklists puis dans le champ “Enter one URL per line to add new blocklists” ajoutez ces lignes que j’ai groupées par type de filtrage en retirant les premières lignes de votre copier-coller !
- Suspicious :
https://hosts-file.net/grm.txt
https://reddestdream.github.io/Projects/MinimalHosts/etc/MinimalHostsBlocker/minimalhosts
https://raw.githubusercontent.com/StevenBlack/hosts/master/data/KADhosts/hosts
https://raw.githubusercontent.com/StevenBlack/hosts/master/data/add.Spam/hosts
https://v.firebog.net/hosts/static/w3kbl.txt
- Advertising :
https://adaway.org/hosts.txt
https://v.firebog.net/hosts/AdguardDNS.txt
https://s3.amazonaws.com/lists.disconnect.me/simple_ad.txt
https://hosts-file.net/ad_servers.txt
https://v.firebog.net/hosts/Easylist.txt
https://raw.githubusercontent.com/StevenBlack/hosts/master/data/SpotifyAds/hosts
https://raw.githubusercontent.com/StevenBlack/hosts/master/data/UncheckyAds/hosts
- Tracking :
https://v.firebog.net/hosts/Airelle-trc.txt
https://v.firebog.net/hosts/Easyprivacy.txt
https://v.firebog.net/hosts/Prigent-Ads.txt
https://raw.githubusercontent.com/quidsup/notrack/master/trackers.txt
https://raw.githubusercontent.com/StevenBlack/hosts/master/data/add.2o7Net/hosts
https://raw.githubusercontent.com/StevenBlack/hosts/master/data/tyzbit/hosts
- Malicious :
https://v.firebog.net/hosts/Airelle-hrsk.txt
https://s3.amazonaws.com/lists.disconnect.me/simple_malvertising.txt
https://mirror1.malwaredomains.com/files/justdomains
https://hosts-file.net/exp.txt
https://hosts-file.net/emd.txt
https://hosts-file.net/psh.txt
https://mirror.cedia.org.ec/malwaredomains/immortal_domains.txt
https://www.malwaredomainlist.com/hostslist/hosts.txt
https://bitbucket.org/ethanr/dns-blacklists/raw/8575c9f96e5b4a1308f2f12394abd86d0927a4a0/bad_lists/Mandiant_APT1_Report_Appendix_D.txt
https://v.firebog.net/hosts/Prigent-Malware.txt
https://v.firebog.net/hosts/Prigent-Phishing.txt
https://raw.githubusercontent.com/quidsup/notrack/master/malicious-sites.txt
https://ransomwaretracker.abuse.ch/downloads/RW_DOMBL.txt
https://v.firebog.net/hosts/Shalla-mal.txt
https://raw.githubusercontent.com/StevenBlack/hosts/master/data/add.Risk/hosts
https://zeustracker.abuse.ch/blocklist.php?download=domainblocklist
- Crypto :
https://raw.githubusercontent.com/ZeroDot1/CoinBlockerLists/master/hosts
Attention, toutefois car la liste ici est conséquente et il ne faut pas s’étonner derrière d’avoir quelques problèmes de visualisation internet.
Voici la liste blanche que j’ai mise en place – onglet White List par exemple après quelques jours d’utilisation. En effet, je rencontrais des problèmes pour télécharger les sous-titres de série, faire fonctionner les tablettes Android, etc :
- analytics.google.com
- cdnjs.cloudflare.com
- opensubtitles.org
- ssl.google-analytics.com
- ssl.gstatic.com
- stats.g.doubleclick.net
- aliexpress.com (oui !)
Vous retrouvez dans l’onglet DNS les 2 serveurs de votre FAI précédemment configurés :
Récupérez la clé API de votre installation PIHOLE dans l’onglet API/Web Interface en cliquant sur le bouton “Show API Token” et en acceptant le faire qu’elle est unique !
Ensuite, il faut indiquer à notre réseau le nouveau serveur de la maison ! Oui car tous les équipements utilisent pour l’instant celui de votre routeur qui repart vers les DNS de votre fournisseur internet.
Rendez-vous dans l’onglet DHCP du réseau local pour le routeur Asus :
De cette manière, pas besoin d’indiquer à chaque équipement que le serveur DNS est la machine virtuelle PIHOLE. Le routeur sera client du serveur DNS PIHOLE et donc chaque équipement s’adressera au routeur qui renverra à PIHOLE.
Quelques commandes fort utiles pour forcer le DNS au cas où :
- sous Windows :
- ouvrez une invite de commandes (Démarrer/Exécuter + CMD) ;
- ipconfig /flushdns pour rafraichir le serveur DNS ;
- nslookup www.google.com vous retournera le serveur DNS local (pihole) ;
- sous Linux :
- dig www.google.com idem !
Sauvegardez votre machine virtuelle après l’avoir éteinte et ne prenez surtout pas de SNAPSHOT avec ! Cela a pour effet de casser le lien avec le plugin Jeedom sinon. N’oubliez pas de la rallumer sinon votre trafic internet risque d’avoir quelques soucis…
Application Android
Là encore, le choix d’un pilotage aisé est pratique. Cette partie sera pour Android. Téléchargez l’application depuis le Playstore Android :
https://play.google.com/store/apps/details?id=com.joseaviles.Pi_Hole
Quelques copies d’écran mais il faut indiquer l’API dans le champ Token du menu Settings avant ! Personnellement, je peux y accéder à distance si besoin par le VPN ou en local par mon Wifi (voir l’article dédié).
Dans cette page, entrez l’API. Notez que vous pouvez piloter en cliquant sur le curseur (Pi-hole ad blocked) pour activer ou non pihole ; mais ce n’est pas très pratique quand même ; seconde solution alors !
Le pilotage depuis Jeedom
Là encore Jeedom s’impose pour son côté pratique.
On installe le plugin du même nom :
Et on le configure (pas de dépendance à installer) en cliquant sur le bouton ajouter :
- le nom de votre pihole (pihole ça suffira, je n’en ai pas 40 !) ;
- l’IP du serveur – ma machine virtuelle PIHOLE ;
- l’API (le truc super long que vous avez récupéré plus haut) ;
- on sauvegarde !
Profitez pour noter dans l’onglet commandes les ID :
- Activer ;
- Désactiver ;
- Statut.
Il faut pour cela cliquer sur l’engrenage et récupérer l’ID. Profitez-en pour voir que vous avez accès à toutes les statistiques de PIHOLE en direct, pratique !
On ajoute un interrupteur par Domowidget (relire l’article) avec les ID en question : Etat, On, Off. Bien pratique pour désactiver rapidement la publicité !
Mais à tous les coups, on va oublier ! (ou madame va oublier ce qui est bien normal car quand on désactive le temps d’un cashback ou une recherche internet avec publicité, ça sort de la tête !).
Pour cela :
- ajouter un scénario (sans déclencheur) qui va réactiver pihole si vous ne l’avez pas réactiver 1h après :
- ajoutez quelques commandes après l’action Désactiver dans votre objet Pihole en cliquant sur l’engrenage ; Configuration :
- faire de même alors pour l’activation pour confirmer :
Et vous voilà avec un filtrage de publicité piloté depuis Jeedom et Android.
Note : interdiction de “snapshot” en VM avec pihole qui casse totalement le pilotage par plugin. Cela a été remonté sur le forum mais semble être plus un problème propre à pihole et à sa virtualisation et les commandes API.
Bonus : ne plus avoir à se souvenir d’IP mais de “petits noms” pour son réseau local
Comme nous l’avons fait pour le sous-domaine / domaine, nous pouvons mettre en place un masque DNS pour le réseau local (dnsmasq). Bien plus pratique de taper router.home que 192.168.2.1 (et encore là c’est le routeur c’est facile !).
Pour cela, après avoir ouvert votre client SSH sur la machine virtuelle PIHOLE :
echo “addn-hosts=/etc/pihole/lan.list” | sudo tee /etc/dnsmasq.d/02-lan.conf
Editez alors votre fichier avec le formalisme suivant :
sudo nano /etc/pihole/lan.list
IP sousdomaine.domaine sousdomaine puis à la ligne
ce qui donne :
192.168.2.1 router.home router
192.168.2.80 proxmox.home proxmox
192.168.2.239 qnap.home qnap
192.168.2.90 jeedom.home jeedom
etc !
Il faut ensuite relancer le service par :
sudo pihole restartdns
Possible aussi depuis l’interface web de pihole dans l’onglet Settings
Testez dans votre navigateur préféré ! http://router.home par exemple :-).
De même, vous pouvez entre dans tous les fichiers que vous utilisez : client SSH, fichiers de configuration Apache etc.
Profitez-en pour mettre à jour votre Excel de suivi de réseau si vous êtes un adepte ! (relire l’article).
Pensez à la sauvegarder de nouveau le cas échéant après l’avoir éteint.
Voilà, article qui peut paraître éloigné de Jeedom mais on comprend vite l’intérêt ! La notification et le pilotage d’un filtrage de publicités, trackers pour tout le monde dans la maison.
La conclusion de cet article !
Si vous avez aimé cet article, faites-le savoir, partagez-le ! Et n’hésitez pas à me supporter 🙂
Merci à vous !
C est juste parfait ! Merci encore
Merci encore pour ce tuto, j attaque ça ce week end si tt va bien
Salut Benjamin,
J’ai réussi avec succès la partie vm apache et connection https 🙂
j’aimerai bien mettre ne place pi-Hole mais je tâtonne encore.
Est-il conseillé d’installer pi-Hole sur la VM apache?
J’ai mis 512 de ram est ce assez pour apache et pi-Hole?
Merci
@++
Regarde la page résumé de ta VM, tu verras sur le graphique le rapport de la mémoire utilisée et totale.
Avoir pihole en accès extérieur, cela rapporte quoi ?
Je me suis mal exprimé lol 🙂
Pour le moment j’ai pas installé pi-Hole j’ai juste installé la vm Apache et mis en place les certificats et nom de domaine pour jeedom et d’autre besoin perso.
Du coup je me renseigne pour pi-Hole mais j’avoue pas bien saisir ( c’est tout nouveau lol)
Enfaite pi-Hole se place entre la vm apache pour les certificats et les navigateurs de la maison ?
Du coup c’est mieux sur une vm indépendante ?
Merci 🙂
Euh l’article explique très bien ce que ça fait et OUI, c’est un VM indépendante. C’est tout l’intérêt de diviser tes services en cas de pépin ! 😉
En gros avant tu avais adblock sur chaque navigateur ? Là c’est partout dans la maison… (pour résumer car pihole ne fait que du nettoyage de page html…).
sa marche merci je vais relire attentivement 🙂
Salut j’ai mis en place le tout comme indiqué avec mon dns fournisseur et meme le dns Quad9 mais je n’arrie jamais a accèder à internet quand je met le l’ip de pihole dans mon routeur .. il ne trouve pas le dns on dirait… y a t’il une astuce?
bon ben je m’auto répond, je testais avec facebook mais il est bloqué lol
Bizarre… facebook n’est pas bloqué chez moi.
Update du 24/12 : ajout de l’update filtres + pihole !
super merci pour cette article qui apporte pas mal de complement qui me manquait pour bien utiliser PiHole.
De rien !
Article génial, comme les autres.
Maintenant faut que je trouve comment modifier la NB6 de SFR car pas possible de l’outrepasser au niveau du DNS…
Salut,
article au top et mis en place pour le moment sur un RPI combiné avec une antenne BLEA pour le moment en attendant d’avoir mon hystou et routeur pour envisager le meme type d’architecture que la tienne.
J’ai cependant une question, depuis la mise en place du service les ‘stats’ on été remise par 2x à 0. Le nombre de domain total lui n’a pas changer mais le ‘total queries’ oui. Idem pour le reste du coup (percentage etc…)
y’a t’il une RaZ des infos faite automatiquement? je n’ai fait attention a cela en fouinant sur la partir admin. Du coup sa fausse pour moi le nombre de requetes bloquées etc.. Depuis sa mise en place.
Merci d’avance pour ta/tes réponses.
Ton blog est u’e veritable source d’inspi sur une mise en place de l’environnement chez soit. Bon courage pour la suite.
Cordialement
Bonsoir,
Bizarre, je n’ai jamais fait attention à cela et je n’en ai pas l’impression sur ma VM.
Par exemple dans le menu Long term data :
https://i.imgur.com/bcbGvrI.png
Mais de rien pour le reste. Je n’ai pas fouillé dans le menu et je pense que le forum pihole peut être aussi une source de réponse.
Installer depuis hier grâce a cette procédure claire et précise.
Le pihole voit bien le trafic mais je n’ai aucun blocage. J’ai mal réglé quelque chose (j’ai mis tous les blocages et toutes les listes blanches) ?
Que disent les logs ?
Tout est accepté car tout passe en a.root.server
J’ai tout supprimer et recommencé et ça fonctionne super !
Des fois c’est le plus simple à faire 😀
Bonjour à tous.
Suite à la reception de mon hystou moi aussi j’ai enfin pu migrer Pi-Hole de mon Pi2 vers une VM.
Ayant fais une simple installation mais n’ayant pas ajouter la résolution de nom comme indiquer en fin d’article, J’ai tester la mise en place de celui-ci or problème cela n’a pas fonctionner.
Voici donc ce qui à fonctionner pour moi.
sudo nano /etc/pihole/local.list
et dans son contenu:
192.168.0.30 VM-DEB9-PiHole
2a01:e35:39d4:2b30:e025:a8ff:fe30:83a1 VM-DEB9-PiHole
192.168.0.30 pi.hole
2a01:e35:39d4:2b30:e025:a8ff:fe30:83a1 pi.hole
192.168.0.41 nas.home nas
192.168.0.49 skyline.home skyline
Suivi d’un:
sudo pihole restartdns
Dans mon cas je n’ai ajouter que mon nas pour le moment et cela fonctionne bien.
Salut,
Article au top comme toujours, un grand merci.
Pour ceux qui cherche à installer Pi-Hole sous Android il n’est plus sur le Google Store mais ici:
https://f-droid.org/en/packages/friimaind.piholedroid/
Bravo et merci !
Perso, je préfère le plugin Jeedom du même nom que je pilote par Domowidget !
Pensez à faire vos updates de filtrage… de temps à autre !