Apple has released a knowledgebase article (reprinted here) that covers details regarding DNS server handling in 10.6 and the 10.6.3 update. In Mac OS X v10.6 and later, the search order of DNS servers specificed in Network preferences is dynamic, so that servers that don't respond are moved to the end of the search order. This provides performance and reliability improvements over previous Mac OS X versions, but it can lead to unexpected results where a strict search order is required in Mac OS X v10.6.
With Mac OS X v10.6.3 and later, DNS servers can be searched in a strict order by making a change to the mDNSResponder plist as an administrator. Learn how in this advanced article.
To search DNS servers in a strict order in Mac OS X v10.6.3 or later
Note: Making this change will result in DNS servers being tried in the specified search order for all queries, even if a server is not responsive. This may affect performance and reliability.
Log in as an administrator if you aren't already.
Back up the mDNSResponder.plist file if you haven't. To do this:
Open Terminal (in /Applications/Utilities)
Execute this command on a single line:
sudo mv /System/Library/LaunchDaemons/com.apple.mDNSResponder.plist /System/Library/com.apple.mDNSResponder.plist_previous_LaunchDaemon
(NOTE: Apple's article says to use "mv," but you should use "cp" in this command. Alternatively, just go to the mentioned folder via the Finder and copy the file to an alternate location.)
Open the com.apple.mDNSResponder.plist file in a text editor (the file is located in /System/Library/LaunchDaemons/ ).
Locate the following key in the file:
Between the last <true/> and </dict>, add the following lines:
Save the file.
Restart mDNSResponder using these two commands:
sudo launchctl unload /System/Library/LaunchDaemons/com.apple.mDNSResponder.plist
sudo launchctl load /System/Library/LaunchDaemons/com.apple.mDNSResponder.plist
In Mac OS X v10.6, the default DNS server searching behavior is that when a server does not return a result (returning SERV_FAIL for a query), and other servers are available to query, the server is temporarily disabled in the search order for about thirty seconds. If there is more than one server for the query and all of them have returned SERV_FAIL, the servers will be queried in the order that they were disabled (that is, the server that has been disabled the longest will be used first).
Original article: http://support.apple.com/kb/HT4030