AdGuard Home et DNS over HTTPS avec OPNsense : filtrage DNS et vie privée
Déployez AdGuard Home sur Proxmox, activez le DNS over HTTPS avec OPNsense et forcez tous vos VLANs à utiliser un résolveur DNS filtré. Guide complet avec blocklists et prévention du contournement DNS.
Le DNS est l'annuaire d'Internet. Chaque fois que vous tapez une adresse dans votre navigateur, votre réseau effectue une requête DNS pour traduire ce nom en adresse IP. Ce processus, invisible pour la plupart des utilisateurs, est pourtant l'un des vecteurs d'attaque les plus exploités et les moins protégés dans les réseaux domestiques et d'entreprise. Dans ce huitième billet de notre série OPNsense, je vous montre comment déployer AdGuard Home, configurer le DNS over HTTPS (DoH) et forcer tous vos VLANs à utiliser un résolveur DNS privé et filtré.

Pourquoi le DNS est le maillon faible
Par défaut, les requêtes DNS sont envoyées en clair sur le port 53. Cela signifie que :
- Votre FAI voit chaque domaine que vous visitez, même si la connexion HTTPS est chiffrée. Le nom du domaine est résolu avant que la session TLS ne s'établisse.
- Les annonceurs et traceurs utilisent des sous-domaines dédiés (pixel.tracking.com, cdn.analytics.io) que votre résolveur DNS résout sans filtrage.
- Les malwares utilisent souvent le DNS pour communiquer avec leurs serveurs de commande (C2) via des requêtes DNS normales ou même via DoH pour contourner les pare-feu.
- Le DNS hijacking est une technique classique : un FAI ou un attaquant redirige vos requêtes vers ses propres serveurs pour injecter de la publicité ou surveiller votre activité.
La solution : un résolveur DNS local qui filtre les domaines indésirables avant qu'ils ne soient résolus, et qui chiffre les requêtes sortantes via DNS over HTTPS.
AdGuard Home vs Pi-hole — Comparatif honnête

Les deux outils sont des résolveurs DNS locaux avec filtrage par listes de blocage. Voici les différences clés :
- DNS over HTTPS : AdGuard Home l'intègre nativement — pas besoin d'installer dnscrypt-proxy en parallèle comme avec Pi-hole.
- Interface web : AdGuard Home offre un dashboard moderne avec statistiques détaillées par client, timeline des requêtes et gestion des listes en temps réel.
- Statistiques par appareil : AdGuard Home identifie chaque client par nom et IP, et affiche ses requêtes individuellement.
- Réécritures DNS : Les deux supportent les DNS rewrites, mais AdGuard le fait via l'interface graphique sans éditer de fichiers.
- Communauté : Pi-hole a une communauté plus ancienne et plus large. AdGuard Home est maintenu activement par AdGuard (entreprise spécialisée en sécurité DNS).
Mon choix pour les nouveaux déploiements : AdGuard Home, principalement pour le support DoH natif et les statistiques par client plus détaillées.
Installer AdGuard Home sur Proxmox
Deux options selon votre infrastructure : Docker sur une VM existante, ou un conteneur LXC dédié.
Option A — Docker Compose (recommandée)
mkdir -p /opt/adguardhome/{work,conf}
cat > /opt/adguardhome/docker-compose.yml << 'EOF'
version: '3.8'
services:
adguardhome:
image: adguard/adguardhome:latest
container_name: adguardhome
restart: unless-stopped
network_mode: host
volumes:
- ./work:/opt/adguardhome/work
- ./conf:/opt/adguardhome/conf
EOF
cd /opt/adguardhome
docker compose up -d
# Wizard d'installation : http://IP-VM:3000
L'option network_mode: host est importante : elle permet à AdGuard Home d'écouter directement sur l'interface réseau de la VM, sans NAT Docker.
Option B — LXC Proxmox (installation native)
curl -fsSL https://static.adguard.com/adguardhome/release/AdGuardHome_linux_amd64.tar.gz | tar -xz -C /opt/
cd /opt/AdGuardHome
./AdGuardHome -s install
systemctl status AdGuardHome
# http://IP-LXC:3000
Étape critique : assignez une IP fixe à votre VM/LXC AdGuard Home dans les baux DHCP statiques d'OPNsense (Services > DHCPv4 > Leases).
Configurer OPNsense pour rediriger le DNS

Désactiver Unbound DNS ou le pointer vers AdGuard
- Désactiver Unbound et utiliser AdGuard Home directement : Services > Unbound DNS > General > décocher Enable.
- Chaîner Unbound → AdGuard : configurer Unbound pour utiliser AdGuard Home comme serveur en amont (recommandé pour les résolutions locales).
Règle NAT — Forcer tout le DNS vers AdGuard
# Firewall > NAT > Port Forward > Add
# Répéter pour chaque VLAN
Interface : LAN (puis VLAN_IOT, VLAN_GUEST, etc.)
Protocol : TCP/UDP
Destination : ! 192.168.1.x (Invert — tout sauf AdGuard)
Dest. port : 53
Redirect IP : 192.168.1.x (IP AdGuard Home)
Redirect port : 53
Description : Force DNS vers AdGuard Home
Le "!" devant l'IP est essentiel : il signifie "toute destination SAUF AdGuard Home". Sans ça, vous créeriez une boucle de redirection infinie.
Activer DNS over HTTPS (DoH)
Dans l'interface AdGuard Home : Settings > DNS Settings > Upstream DNS servers
# Cloudflare DoH (rapide, fiable)
https://cloudflare-dns.com/dns-query
# NextDNS (personnalisable, logs optionnels)
https://dns.nextdns.io/VOTRE-ID
# Quad9 (focus sécurité)
https://dns.quad9.net/dns-query
# Mullvad DNS (sans log)
https://base.dns.mullvad.net/dns-query
Mode parallèle pour la performance
# Settings > DNS Settings
# Load-balancing strategy : Parallel requests
Activez également DNSSEC dans Settings > DNS Settings pour valider les signatures cryptographiques des réponses DNS.
Listes de blocage recommandées
Dans Filters > DNS blocklists, ajoutez selon vos besoins :
- AdGuard DNS filter — Liste principale, publicités + malware. Maintenue quotidiennement.
- OISD Big — 150 000+ domaines : publicités, tracking, malware. Très complète.
- Hagezi Pro — Spécialisée tracking agressif. Recommandée en entreprise.
- Steven Black Hosts — Très stable, bonne base. Combinaison publicités + malware.
- Malware Domain List — Domaines malveillants actifs, mis à jour fréquemment.
- IoT Blocklist — Bloque la télémétrie des appareils connectés.
Commencez avec 2-3 listes. Un taux de blocage de 15-30% est normal.
Forcer le DNS sur tous les VLANs

# Pour VLAN IoT
Interface : VLAN_IOT
Protocol : TCP/UDP
Source : VLAN_IOT net
Destination : ! 192.168.x.x
Dest. port : 53
Redirect IP : 192.168.x.x
Redirect port : 53
# Répéter pour VLAN_GUEST, VLAN_DMZ
Bloquer également le DoH direct
# Alias DNS_Publics : 1.1.1.1, 8.8.8.8, 9.9.9.9
# Rule: Block TCP port 443 to DNS_Publics on IoT/Guest VLANs
Monitoring et dashboard

- DNS Queries today : Volume total avec graphique horaire.
- Blocked by filters : Pourcentage des requêtes bloquées.
- Top clients : Appareils les plus actifs.
- Top blocked domains : Révèle des applications problématiques.
- Query log : Journal en temps réel avec statut et temps de réponse.
Export vers Grafana (aperçu Billet 9)
docker run -d --name adguard-exporter -e ADGUARD_HOSTNAME=192.168.1.x -e ADGUARD_USERNAME=admin -e ADGUARD_PASSWORD=motdepasse -p 9617:9617 ebrianne/adguard-exporter
Résumé
- Blocage des publicités, traceurs et malwares au niveau DNS pour tous les appareils
- Chiffrement des requêtes DNS sortantes via DoH
- Tous les VLANs forcés à utiliser le résolveur filtré
- Statistiques détaillées par appareil et par domaine
Téléchargez ce guide en PDF pour le consulter hors ligne.
⬇ Télécharger le guide (PDF)🚀 Aller plus loin avec BOTUM
Ce guide couvre les bases. En production, chaque environnement a ses spécificités. Les équipes BOTUM accompagnent les organisations dans le déploiement, la configuration avancée et la sécurisation de leur infrastructure. Si vous avez un projet, parlons-en.
Discuter de votre projet →