@panja You can't use Unbound on Pfsense on all interfaces if you want to avoid DNS leaks, the reason is that it's the firewall which is performing the DNS forwarding to upstream DNS - not your client. In this instance the requests will exit the firewall on any of the external interfaces unbound sends out on. Your client being part of a VPN is irrelevant.
I have tackled this myself though and my setup is set to use DNS on 853 for non-vpn connections using Unbound, but then for VPN clients I have a Port Forward rule at the top of the interfaces which intercepts DNS traffic and redirects it away from Unbound and towards Cloudflare (that rule it's self has the VPN Gateway as it's gateway).
Here is an example Port Fwd I set up:
Source - ALIAS Group for my VPN Clients.
Destination - XXXX_Address (Address of the firewall interface in question)
Redirect Target IP - Single host, but an alias group is added. This Alias group contains the CloudFlare IP's.
Destination and Redirect Ports are DNS.
Create a filter rule association and it'll add a rule to the interface in question. Edit that rule to make sure it uses your VPN as the Gateway and away you go. By doing this you are forcing your client as part of the VPN to forward DNS over the tunnel as opposed to Unbound, so DNS queries will always remain in the tunnel.
Obviously you don't need to use an Alias group if you want all traffic to be subjected to this, you could just change the source to the net of the interface you are working on, which is what I've done on my Captive Portal VLAN for Guests. I personally prefer to use Alias groups on my main VLAN's though as it provides a bit more flexibility.
Express VPN on their UK and US tunnels report no DNS leaks with this method as it comes out of the tunnel using their DNS, but some of the smaller VPN's in Europe and Asia still report leaks as it's seeing CloudFlare DNS, but you'll notice that even in this scenario the CloudFlare IP is the nearest host to the tunnel endpoint in question, rather than your own WAN - so that's still not a leak.
For completeness I also used the Tagging method within pfsense to create a kill switch as such, so on both my main 'VPN' Any Rule and the DNS intercept rule I have a Tag called VPN_ONLY.
As a floating rule I've then created a block on both my WAN Circuits should traffic arrive with the VPN_ONLY tag. It avoids the situation of leakage if the VPN goes down and the clients try using another gateway on the next rule etc.