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 :

Conditional Forwarding sur Pi-hole

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.

pfSense – Configuration générale

DHCP

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

pfSense – Serveur DHCP -> Champ DNS

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.

pfSense – DNS Resolver

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).