MES TUTOS
VEILLE
Chargement de la veille...
HOMELAB / RÉSEAU

Pi-hole + Unbound : Le Bloqueur de Pub Ultime et Souverain

Installer un bloqueur de pub sur son navigateur (uBlock Origin), c'est bien. Mais cela ne protège pas votre Smart TV, votre téléphone mobile ou vos applications. Pi-hole agit au niveau du réseau : il intercepte les requêtes DNS. Couplé à Unbound, il vous permet de devenir votre propre fournisseur DNS, garantissant une confidentialité totale vis-à-vis de votre FAI et de Google.

1. Le concept : DNS Sinkhole & Récursivité

Avant de taper les commandes, comprenons l'architecture que nous allons déployer :


2. Préparation du Système (Ubuntu/Debian)

Le service DNS utilise les ports 53 (TCP et UDP). Sur les systèmes modernes (Ubuntu 20.04+), un service appelé systemd-resolved occupe déjà ce port. Il faut le désactiver pour laisser la place à Pi-hole.

# Désactiver le résolveur système par défaut
sudo systemctl disable --now systemd-resolved.service
sudo rm /etc/resolv.conf
echo "nameserver 1.1.1.1" | sudo tee /etc/resolv.conf

3. Déploiement via Docker Compose

Nous allons déployer les deux services (Pi-hole et Unbound) dans une même stack réseau pour qu'ils communiquent facilement.

A. Structure des dossiers

mkdir -p pihole-unbound/unbound
cd pihole-unbound

B. Configuration d'Unbound

Créez le fichier de configuration optimisé pour Unbound : nano unbound/unbound.conf

server:
    verbosity: 0
    interface: 0.0.0.0
    port: 5335
    do-ip4: yes
    do-udp: yes
    do-tcp: yes
    do-ip6: no
    prefer-ip6: no
    
    # Sécurité & Privacy
    harden-glue: yes
    harden-dnssec-stripped: yes
    use-caps-for-id: no
    edns-buffer-size: 1232
    prefetch: yes
    num-threads: 1
    so-rcvbuf: 1m
    
    # Autoriser le réseau Docker interne (Important !)
    access-control: 10.0.0.0/8 allow
    access-control: 172.16.0.0/12 allow
    access-control: 192.168.0.0/16 allow

C. Le fichier docker-compose.yml

Créez le fichier nano docker-compose.yml :

services:
  unbound:
    image: mvance/unbound:latest
    container_name: unbound
    restart: unless-stopped
    volumes:
      - ./unbound:/opt/unbound/etc/unbound/
    networks:
      private_network:
        ipv4_address: 172.20.0.5

  pihole:
    image: pihole/pihole:latest
    container_name: pihole
    restart: unless-stopped
    ports:
      - "53:53/tcp"
      - "53:53/udp"
      - "80:80/tcp" # Attention si vous avez déjà un serveur web !
    environment:
      TZ: 'Europe/Paris'
      WEBPASSWORD: 'VotreMotDePasseAdmin'
      # On dit à Pi-hole d'utiliser Unbound comme DNS
      PIHOLE_DNS_: '172.20.0.5#5335' 
      DNSSEC: 'true'
    volumes:
      - './etc-pihole:/etc/pihole'
      - './etc-dnsmasq.d:/etc/dnsmasq.d'
    depends_on:
      - unbound
    networks:
      private_network:
        ipv4_address: 172.20.0.6

networks:
  private_network:
    ipam:
      driver: default
      config:
        - subnet: 172.20.0.0/24

Lancez la stack :

docker compose up -d

4. Configuration Post-Installation

Rendez-vous sur http://IP_DE_VOTRE_SERVEUR/admin.

Vérifier la récursivité

Allez dans Settings > DNS. Vous devriez voir dans "Upstream DNS Servers" uniquement une entrée personnalisée : 172.20.0.5#5335 (L'adresse de notre conteneur Unbound).

Décochez toutes les cases Google, OpenDNS, etc. Nous sommes désormais indépendants !


5. Mise en place sur le Réseau (Le point critique)

Pour que vos appareils utilisent Pi-hole, vous avez deux méthodes :

Méthode A : Changer le DNS dans la Box (Facile)

Allez dans l'interface de votre Box Internet (Livebox, Freebox...). Cherchez les paramètres DHCP/DNS et mettez l'IP de votre serveur Pi-hole comme DNS Primaire.

Méthode B : Pi-hole comme serveur DHCP (Expert)

Si votre Box ne permet pas de changer les DNS (coucou Orange), vous devez :

  1. Désactiver le DHCP sur votre Box.
  2. Activer le DHCP dans l'interface de Pi-hole (Settings > DHCP).

C'est la méthode la plus fiable, car elle permet à Pi-hole de voir le nom de chaque machine (ex: "iPhone-de-Leo") au lieu de voir uniquement l'IP du routeur.


6. Maintenance et Whitelisting

Un bloqueur trop agressif peut casser certains sites (ex: liens sponsorisés Google Shopping, pistage de redirection par email).

Le "Wife Factor" (Facteur d'acceptation)

Si Netflix ou Facebook ne marche plus, vous allez avoir des problèmes à la maison. Apprenez à utiliser le Query Log :

  1. Allez dans "Query Log".
  2. Filtrez par "Blocked".
  3. Cherchez le domaine rouge qui a été bloqué juste au moment où le site a planté.
  4. Cliquez sur "Whitelist".

Les RegEx (Blocage avancé)

Pour bloquer TikTok ou la télémétrie Windows, les listes simples ne suffisent pas. On utilise des expressions régulières (RegEx). Exemple pour bloquer tout TikTok :

^(.+[-_.])??tiktok[-_.]com$

Conclusion

Avec cette installation, vous avez non seulement supprimé 90% des publicités de votre réseau (économisant de la bande passante), mais vous avez aussi repris le contrôle de vos données DNS grâce à Unbound. C'est un premier pas essentiel vers la souveraineté numérique.

← Retour à la bibliothèque