Local / domain-specific DNS resolvers on Mac OS X

Got VMs? Have local servers at home? Connecting to a VPN? Want to do ALL at the same time and still be able to use typical DNS name resolution to reach the local domain hosts and your VMs? Doing this from a Mac?

To solve the problem of having different, local-only DNS/resolver lookups on Mac, e.g. for a set of local VMs for experimentation, you could encode the hosts into the /etc/hosts file, but you could also run a local instance of dnsmasq. But then how do you tell your Mac to get addresses from that local server or any other (local network) server.

An answer I discovered a while ago (and just today discovered) lies in a StackExchange post, but boils down to adding files in /etc/resolver/ of the form:

$ cat /etc/resolver/mydomain
nameserver 192.168.50.1
search_order 500
$ ping -q -c 1 somelocalhostname.mydomain
PING somelocalhostname.mydomain (192.168.50.10): 56 data bytes
1 packets transmitted, 1 packets received, 0.0% packet loss
round-trip min/avg/max/stddev = 4.169/4.169/4.169/0.000 ms

HOWEVER, just because the resolver libraries are doing the right thing, some applications, notably dig, nslookup, host, etc, will not query anything but the FIRST resolver, and therefore will not respond with a useful answer.

, January 17, 2017. Category: admin, dns, macOS. Tagged: , .