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.