Une des fonctions du portail captif est d'ouvrir des règles de FW une fois que l'utilisateur est passé par le portail et a exécuté une action (validation ou authentification par exemple).
Comme il s'agit de règle de FW, il s'agit d'adresse IP ;)
Si l'utilisateur passe d'abord par un proxy (fusse t-il transparent) l'IP source qui va accéder au portail captif sera celle du proxy.
Si en plus le proxy est sur la même machine que le portail captif (ici pfSense) l'IP qui va être autorisée par le portail captif si celui-ci change des règles du FW va probablement être 127.0.0.1
C'est pour cela qu'il faut que ton portail intervienne avant le proxy (*).
La difficulté avec le portail captif et le proxy sur pfSense, c'est que :
en mode proxy explicite, celui-ci est configuré au niveau du browser et donc le browser accède le proxy sur un port spécifique qui n'est normalement pas celui que le portail captif intercepte. Il faut dans tous les cas gérer une exception et forcer l'accès à une page intercepté par le portail.
en mode proxy transparent, il faut regarder dans quel ordre interviennent les règles d'interception. Portail captif et proxy transparent sont basés sur un mécanisme analogue (et donc potentiellement conflictuel) d'interception et de redirection. Dans l'absolu, il est possible que ça fonctionne si la première interception est celle du portail…
Une solution plus "simple" :
un portail captif suivi d'un proxy.
proxy en mode transparent si cela correspond à ton besoin, et donc si tu notes bien que celui-ci :
n'intercepte que HTTP, pas HTTPS (sauf si SSL-Bump = MITM)
ne connaît que l'IP source, pas l'utilisateur
proxy en mode explicite (configuré à la main ou via WPAD) :
il faut gérer une option "no proxy for..." (ou un DIRECT dans le proxy.pac) pour que l'accès au portail captif se fasse directement en non pas en tentant d'y accéder au travers du proxy.
Je ne suis pas certain que pfSense soit la meilleure solution si utilisé uniquement pour cet usage ;)
As-tu regardé des produits dédié au portal captif comme Chilispot, wifidog etc ?
(*) Squid (je ne sais pas ce qu'il en est du package Squid de pfSense) permet de faire des choses un peu plus fines que ce que je décris au dessus qui correspond au fonctionnement "basique". pas exemple avec des redirecteurs et/ou des splash pages.