Pi-hole – Unbound

Noyé dans un océan de doutes

Pi-hole – Unbound

Contexte :

  • Pi-hole est installé dans un conteneur LXC (Proxmox VE)

Shéma :

Pi-hole est un serveur DNS qui bloque les publicités et les traqueurs au niveau du réseau, tandis qu’Unbound est un serveur DNS récursif qui permet de résoudre les requêtes DNS de manière récursive et sécurisée. Voici comment ils fonctionnent ensemble :

  1. Pi-hole : Il agit comme un filtre DNS, bloquant les requêtes vers des domaines connus pour héberger des publicités, des traqueurs ou des logiciels malveillants. Il utilise des listes de blocage pour déterminer quels domaines bloquer.
  2. Unbound : C’est un serveur DNS récursif qui résout les requêtes DNS en allant chercher les informations directement auprès des serveurs DNS racine et des serveurs faisant autorité. Cela permet d’améliorer la confidentialité et la sécurité, car les requêtes ne passent pas par des serveurs DNS tiers comme ceux de votre FAI (Fournisseur d’Accès à Internet).

Lorsque vous utilisez Unbound avec Pi-hole, Pi-hole envoie les requêtes DNS non bloquées à Unbound, qui les résout de manière récursive. Cela permet de bénéficier des avantages des deux outils :

  • Confidentialité améliorée : Les requêtes DNS ne sont pas envoyées à des serveurs DNS tiers.
  • Sécurité renforcée : Les réponses DNS sont vérifiées et validées par Unbound.
  • Blocage des publicités : Pi-hole continue de bloquer les publicités et les traqueurs.

En résumé, Unbound améliore la confidentialité et la sécurité de la résolution DNS, tandis que Pi-hole bloque les publicités et les traqueurs. Ensemble, ils offrent une solution complète pour une navigation plus sûre et plus privée.

Concrètement, configurer Unbound avec Pi-hole est une excellente solution pour :

  • Avoir un DNS récursif sécurisé localement (meilleure vie privée).
  • Activer DNSSEC sans conflits pour les domaines .local ou .home.arpa.
  • Gérer des zones locales pour votre homelab (ex. homeassistant.local, proxmox.home.arpa, etc.).

Liens :

Installation d’Unbound

Via le Shell LXC où tourne Pi-hole :

Shell - LXC

    sudo apt update   
            
                    
        
    sudo apt install unbound
   
            
                    
        

Configuration d’Unbound

On va créer un fichier de config optimisé pour Pi-hole en se basant sur ce qui existe déjà et adapter en fonction (notement) de notre choix de service DNS. Sachant que sur ce dernier point, on pourrait faire du 100% local…

Shell - LXC

    sudo nano /etc/unbound/unbound.conf.d/pi-hole.conf
   
            
                    
        
  •     server:
      verbosity: 1
      interface: 127.0.0.1
      port: 5335
      do-ip4: yes
      do-udp: yes
      do-tcp: yes
      access-control: 127.0.0.0/8 allow
      root-hints: "/var/lib/unbound/root.hints"
      hide-identity: yes
      hide-version: yes
      harden-glue: yes
      harden-dnssec-stripped: yes
      use-caps-for-id: yes
      edns-buffer-size: 1232
      prefetch: yes
      qname-minimisation: yes
      harden-referral-path: yes
      cache-min-ttl: 3600
      cache-max-ttl: 86400
      rrset-roundrobin: yes
      module-config: "validator iterator"
      val-clean-additional: yes   
                
                        
            

Télécharger les root hints (serveurs racine)

Shell - LXC

    sudo wget -O /var/lib/unbound/root.hints https://www.internic.net/domain/named.root
   
            
                    
        

Redémarrer Unbound

Shell - LXC

    sudo systemctl restart unbound
   
            
                    
        

Vérifie que le service fonctionne :

Shell - LXC

    sudo systemctl status unbound
   
            
                    
        

Tester Unbound

Vérifie que la résolution DNS via Unbound fonctionne :

Terminal - PowerShell

    dig @127.0.0.1 -p 5335 www.google.com
   
            
                    
        

Vous devriez trouver la mention « status: NOERROR« .

Cette information est noyé dans le message de retour. Voyez ci-après où cela se trouve en ligne 5 :

    ; <<>> DiG 9.18.33-1~deb12u2-Debian <<>> @127.0.0.1 -p 5335 www.google.com
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 12454
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 1232
;; QUESTION SECTION:
;www.google.com.                        IN      A

;; ANSWER SECTION:
www.google.com.         3600    IN      A       172.217.20.196

;; Query time: 316 msec
;; SERVER: 127.0.0.1#5335(127.0.0.1) (UDP)
;; WHEN: Sun Jul 20 01:52:46 CEST 2025
;; MSG SIZE  rcvd: 59   
        

Configurer Pi-hole pour utiliser Unbound

Dans l’interface Web de Pi-hole :

  • Allez dans Settings > DNS
  • Décochez tous les serveurs DNS externes
  • Dans le zone Ajoutez un serveur DNS personnalisé :
    • 127.0.0.1#5335

Activez DNSSEC ici aussi si souhaité.

[Optionnel] Gérer les zones locales

(ex. .home.arpa)

Ajoutez une zone locale à Unbound :

Shell - LXC

    nano /etc/unbound/unbound.conf.d/local-zones.conf
   
            
                    
        

Et ajoutez :

    server:
    local-zone: "home.arpa." static
    local-data: "proxmox.home.arpa. IN A 192.168.0.11"
    local-data: "homeassistant.home.arpa. IN A 192.168.0.100"   
            
                    
        

Puis rechargez Unbound :

Shell - LXC

    sudo systemctl restart unbound
   
            
                    
        

Vérification finale

Test avec dig Sources :

Terminal - PowerShell

    dig proxmox.local @127.0.0.1 -p 5335

   
            
                    
        

Vous devriez recevoir une IP locale (192.168.x.x), sans erreur DNSSEC.

Test avec nslookup :

Terminal - PowerShell

    nslookup google.com

   
            
                    
        

Vous devriez voir apparaître sur la première ligne de la réponse affichée l’information sur votre pi.hole (par défaut).

Test avec ipconfig :

Terminal - PowerShell

    ipconfig /all
   
            
                    
        

Dans le section correspondante à votre connexion, vous devriez trouver la ligne « Serveur DNS » avec l’adresse IP de votre Pi-hole

Désactiver unbound

Si pour X raisons vous souhaitez désactiver unbound vous avez 2 choix :

  1. Désactivation temporaire
  2. Suppression
1/ Désactivation

Le but consiste tout simplement à ne plus utiliser unbound en remplaçant dans Pihole le server DNS par ceux de notre choix parmi l’interface : Pihole > Settings > DNS.

Moi j’utilise ceux de DNS4EU

    86.54.11.13
86.54.11.213
2a13:1001::86:54:11:13
2a13:1001::86:54:11:213   
            
                    
        

Pensez à supprimer l’instruction 127.0.0.1#5335

2/ Suppression

Tags: , ,

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *