How is DNS lookup configured for OSX Mountain Lion?

Solution 1:

The host tool does not simply resolve names (as in, using the system name resolver) but actually queries dns servers (as in, sending packets to udp/53 and possibly tcp/53): it doesn't know nor use the local hosts file.

If you want to test the operating system's resolver (as in, gethostbyname() and similar libc functions) you can try to ping the name you added to /etc/hosts and it will honor what you put in that file.

Also, as you already found out DNS lookup on Mac OSX does not use /etc/resolv.conf, and the correct way to configure which DNS servers are queried is in the Network Settings gui and/or networksetup commandline tool. I honestly don't know if you can configure the order in which sources are tried, but the standard behavior is to try /etc/hosts first and dns servers after that.

Solution 2:

DNS resolvers can be added in OS X via the networksetup command:

sudo networksetup -setdnsservers Wi-Fi 8.8.8.8 8.8.4.4

Insert name of network connection as appropriate. These resolvers will appear in resolv.conf as it is automatically generated, but direct edits to resolv.conf will not result in those resolvers being used. I assume the resolvers are stored in a plist somewhere; I will search and report back.

Edited to add: It looks like the XML plist file storing the DNS servers is /Library/Preferences/SystemConfiguration/preferences.plist.

The host file in /private/etc/hosts should work to force resolution for particular names (/etc is a symlink to /private/etc). Can you verify your syntax and that you are editing the correct file?