I have a local DNS server set up for my network, which is set up to resolve local machines and forward anything non-local up the chain.
Some of the definitions single depth subdomains, e.g.
time A 192.168.0.1 files A 192.168.0.2 dev A 192.168.0.3
Some are multi-depth or wildcard, e.g.
foo.files CNAME files *.dev.files CNAME files
This works absolutely fine either without forwarders, or if I use my ISP's forwarder. However, we had a need to use OpenDNS servers, and when we made this switch we noticed a weird behaviour.
Single level domains (time, files) would correctly resolve to the local network no problem, however multi level or wildcard domains would be forwarded. This would return with an IP address from their "helpful" "did you mean...?" server.
This is unless I use the FQDN, i.e. with the DNS search path. so foo.files.mydomain.local. My understanding is that local domains should be resolved by the authoritative DNS server, which is the one on the network, however it seems to be bouncing to the upstream forwarder.
What seems to be happening is that something (bind?) is correctly appending the search domain onto the lookup for single level subdomains, but not for wild card or multi-level ones. But only when I use the OpenDNS server as a forwarder (presumably because it gets a "valid" response from OpenDNS for everything)
One approach I guess would be to disable the search domain for my IP from their control panel, but it seems obvious that I've made a misconfiguration somewhere since these domains should be being resolved locally. Perhaps I need to specify something extra in my zones file to make sure that multi-level domains are treated as local?