Hi,
I am not a dns expert but I think your configuration is wrong.
Your mac seems to have both the controller DNS server and googles default ones.
The mutiple servers are for redundancy not for different servers with different zones.
If DNS server A knows about a domain it will return it. If it doesn't know about the domain it will make a request to it's upstream dns server.
The process continues up the tree until one DNS server is able to provide the example.
When you configured bind on the controller you specified an upstream server. (Either your ISP or 8.8.8.8)
You need your mac to have only the controller DNS server set. If the query is for p1 you will get the local response, otherwise it will go ask it's upstream server.
I think it's working on the controller and not the mac because the controller is trying itself first, but the mac is set to try the controller last. So the mac will only ever ask the controller for DNS lookups if all other dns servers are down.
Robert