Pihole est un service de cache DNS avec un blocage natif des domaines publicitaires.
Originaire du raspberry pi, un tuto en installation normale est dispo avec des détails.
Le backend utilisé est DNSmasq qui gère les DNS et peut également faire serveur DHCP ou relay.
Il est possible de surclasser une résolution dns vers une IP ou CNAME. Pratique pour un serveur à la maison et ne pas passer par la boucle locale du routeur. Et encore mieux quand la box du FAI n’en a même pas…
Une alternative évoquée de manière plus professionnelle est dnsadblock qui est une solution payante mais sans avoir de gestion à faire, juste des dns et DoH dispo.
Il existe aussi quad9 qui block des domaines malicieux gratuitement.
Configuration docker-compose Pihole
Configuration pihole simple
Fichier docker compose de base (sans dhcp) en écoute sur port 2080 en http :
version: '3.7'
services:
pihole:
image: pihole/pihole:latest
container_name: pihole
ports:
- "53:53/tcp"
- "53:53/udp"
#- "67:67/udp"
- "2080:80/tcp"
#- "2443:443/tcp"
volumes:
- '/var/lib/docker/data/pihole/etc-pihole/:/etc/pihole/'
- '/var/lib/docker/data/pihole/etc-dnsmasq.d/:/etc/dnsmasq.d/'
environment:
TZ: 'Europe/Paris'
ADMIN_EMAIL: 'YOUR_EMAIL'
WEBPASSWORD: 'TEMP_ADMIN_PASSWORD'
VIRTUAL_HOST: pihole.domain.tld
restart: unless-stopped
Après le premier démarrage et configuration on peut changer le mot de passe admin avec cette commande pour ne pas le laisser traîner dans le fichier de configuration : docker exec -it pihole pihole -a -p
Configuration Pihole avec Traefik
Fichier docker avec configuration de traefik devant l’interface web et les dns cloudflare de choisi :
version: '3.7'
networks:
proxy-net:
external: true
services:
pihole:
image: pihole/pihole:latest
container_name: pihole
ports:
- "53:53/tcp"
- "53:53/udp"
volumes:
- '/var/lib/docker/data/pihole/etc-pihole/:/etc/pihole/'
- '/var/lib/docker/data/pihole/etc-dnsmasq.d/:/etc/dnsmasq.d/'
environment:
TZ: 'Europe/Paris'
ADMIN_EMAIL: 'YOUR_EMAIL'
WEBPASSWORD: 'tttttt'
DNS1: '1.1.1.1'
DNS2: '1.0.0.1'
VIRTUAL_HOST: 'pihole.domain.tld'
networks:
- proxy-net
restart: unless-stopped
labels:
- traefik.http.services.pihole.loadbalancer.server.port=80
- traefik.http.routers.pihole.entrypoints=websecure
- traefik.http.routers.pihole.tls.certresolver=le
- "traefik.http.routers.pihole.rule=Host(`pihole.domain.tld`)"
- "traefik.http.routers.pihole.middlewares=home-whitelist@file"
Configuration de PiHole via l’interface web
DNS forwarder
Si ce n’est déjà fait via les variables docker, on change les DNS utilisés, car ceux par défaut sont ceux de Google… Pour quelque chose évitant la pub, c’est un peu contradictoire…
Aller dans Settings > onglet DNS
Il est possible de prendre Google, OpenDNS, Level3, Comodo, DNS.WATCH, quad9, cloudflare ou bien des serveurs dns customisés.
Voici une liste des serveurs et leurs qualités, tel que la vie privée :
Pour plus d’info, un bon article décrivant les qualités de chacun de ces fournisseurs de DNS gratuits.
Les DNS customisés sont pratiques si vous voulez chainer avec un bind9 ou powerDNS et beaucoup de dns internes.
Pour une utilisation domestique, tout est prévu dans l’interface pour le faire directement.
résolution dns locaux
C’est une partie qui va remplacer mon serveur bind9 interne, que j’utilisais pour résoudre des services « cloud » maison via leur IP locale quand on est à la maison et l’ip publique quand on est à l’extérieur.
gestion de listes supplémentaires
Il est possible d’ajouter des listes d’hosts à blacklisté autres que la pub, comme les fakenews, réseaux sociaux, porno, etc.
Il est possible de bloquer certaines catégories uniquement pour un certain group d’host.
De base, lorsqu’une url est ajoutée, elle s’applique à tous les clients, qui sont par défaut dans le gorupe « default ».
Une liste des catégories disponibles par la communauté se trouvent sur le github de StevenBlack.
Le site firebog regroupe des listes par catégories dangeureux, publicitaire, tracking
- J’ajoute donc la liste
https://raw.githubusercontent.com/StevenBlack/hosts/master/extensions/fakenews/hosts
dans Group Management > Adlists - Ensuite on fait un update manuel pour avoir la nouvelle liste
- un test avant/après :
Gestion des groupes
- Création d’un groupe « restricted »
- On met un client dans ce groupe: en sélectionnant un client connu du serveur dns et en l’associant au groupe « restricted » uniquement. Attention à bien valider
- On ajouter la liste gambling et on sélectionne uniquement pour le groupe « restricted », et on ajoute les 2 autres listes au groupe « restricted » également
- On fait une mise à jour de Gravity
- Les clients de base ont une blackliste adware+walware+fakenews et le client « domopi » adware+walware+fakenews+gamebling
Application Android Pi-hole Connect
Une application Android Pi-hole Connect est également disponible afin de gérer facilement une mise en pause du blocage, ajouter un domaine à la whitelist ou actualiser les filtres par exemple.
Laisser un commentaire