Voici comment utiliser la solution Pi-hole (bloqueur de pub via DNS) avec pfSense (firewall).
On pourra donc proposer les avantages de Pi-hole aux clients de notre réseau tout en gardant la possibilité de résoudre les noms locaux.
Configuration Pi-hole
Dans mon cas, j’utilise Pi-hole uniquement pour son rôle de DNS, il sera l’unique DNS de mon réseau.
Je n’utilise donc pas les fonctions DHCP sur le Pi-hole, mais bien sur le pfSense.
La première étape est donc d’installer Pi-hole sur son réseau local (sur un Raspberry Pi, image Docker, VM,…), je ne m’y attarde pas.
Nous pouvons ensuite nous connecter sur l’interface Web. La seule chose à configurer est le conditional forwarding pour permettre de résoudre les noms des clients locaux.
En gros, on va dire : « pour résoudre les IPs qui sont dans tel réseau, va plutôt interroger ce serveur DNS spécifique » (ce sera notre pfSense). Pour cela, on va utiliser l’option conditional forwarder :

Ici, j’ai configuré cette option de façon qu’il interroge mon firewall (pfSense – 192.168.1.1) pour résoudre les IPs dans le réseau 192.168.1.0/24.
NB : Si vous voulez mettre plusieurs entrées (si vous avez plusieurs réseaux locaux par exemple), il est possible d’en ajouter mais en modifiant le fichier de config de Pi-hole en ligne de commande.
Configuration pfSense
DNS Settings
On va configurer pfSense pour qu’il utilise Pi-hole. (Tout le monde à la même enseigne ^^)
Dans Configuration générale, on renseigne l’IP de notre Pi-hole et on lui dit de ne pas contacter le serveur DNS en local.

DHCP
Sous Services -> Serveur DHCP, vous pouvez modifier pour chaque réseau le champ DNS et renseigner l’IP du serveur Pi-hole.

Ainsi, on indique aux clients de notre LAN d’utiliser Pi-hole comme DNS.
DNS
Le service DNS Forwarder n’est plus utile donc on peut le désactiver sur le pfSense.
Le service DNS Resolver quant à lui va nous permettre de résoudre les noms des périphériques connectés sur le LAN (il ne servira à rien d’autre). Il faut donc l’activer et cocher les 3 cases pour résoudre les IPs de nos clients qui ont contacté le DHCP.

Règle
Au niveau des règles, je vous conseille de bloquer les clients à contacter d’autres DNS que notre Pi-hole (mais quand même laisser Pi-hole contacter le port 53/UDP vers Internet).
Si vous avez plusieurs réseaux LAN sur votre pfSense, pensez à autoriser les clients à contacter Pi-hole.
À savoir
Si vous n’aimez pas Pi-hole, il est aussi possible d’intégrer directement cette fonctionnalité avec un package dans pfSense (PfBlockerNG). Ça fait le même boulot, mais l’UI de Pi-hole est plus sympathique et flexible. Cela nous permet également de mettre en place d’autres fonctions (comme DNSCrypt).