MacOS – Periodic problem with DNS resolution

dnsmacos

Since a few days, the DNS resolution stops working for random amounts of time, a few seconds to a few hours (I logged it with a simple script). It sometimes goes back to normal without any intervention, but comes back to normal after a reboot – not the cleanest way to solve this… My other machines on the same network don't have any problems.

How can I trace the problem ?

Here is what happens when the problem occurs:

ping www.google.com
ping: cannot resolve www.google.com: Unknown host

whois orange.fr
whois: fr.whois-servers.net: nodename nor servname provided, or not known

I searched my logs and found a lot of instances of this error message:

Jan 21 00:30:03 shiny.home helpd[66064]: dnssd_clientstub read_all(9) failed 0/4 0 
Jan 21 00:30:03 shiny.home configd[17]: dnssd_clientstub read_all(27) failed 0/4 0 
Jan 21 00:30:03 shiny.home mDNSResponder[40]:  17: ERROR: read_msg errno 40 (Message too long)

It think it may be related to a program I was evaluating recently (Daylite)

The DNS are the ones provided by my ISP, and the ethernet interface is setup via DHCP.

Best Answer

This Apple support article, Non-responsive DNS server or invalid DNS configuration can cause long delay before webpages load, may help:

DNS configuration

This may indicate a non-responsive DNS server or an invalid DNS configuration. A DNS server converts a name to a numerical IP address, "www.apple.com" to "17.149.160.49", for example. You can connect to an IP address without any delay, because the need for DNS resolution is avoided. Here are four scenarios in which the symptom may occur:

  • You have specified two or more DNS servers in the Network preference pane (possibly at the direction of a network administrator or your ISP), but the first server on the list has become non-responsive, or was entered incorrectly. The delay occurs while Mac OS X waits for the first server to respond, then it goes to the next server in your list. Make sure the addresses are entered correctly. Changing the order of DNS addresses may improve performance. If your network administrator prefers that the primary server be used, you may wish to change back to the original order after the issue is resolved with the primary server.
  • Your network may be configured to provide automatic discovery of DNS service, without needing to manually type the DNS server addresses at your computer. If you have manually typed a DNS address that is incorrect or out of date, your computer may wait for the incorrect address to respond (a "timeout") before succeeding at automatic discovery.
  • You have not specified a DNS server, and automatic discovery of the service is not provided on your network. In this scenario, you can only connect via an IP address. Web pages do not load at all via a DNS name, such as is described in this article.

How to resolve

Check with your network administrator or Internet Service Provider (ISP) to make sure your DNS information is correct. If your ISP only provides you with one DNS address, consider requesting a second one for use in the event that the first becomes unavailable.

Once you have the address(es), you can use these steps to change your DNS information. Note: After using these steps, some Internet applications may need to be quit and reopened to return to normal behavior.

Mac OS X v10.5 or later:

  1. From the Apple menu, choose System Preferences.
  2. From the View menu, choose Network.
  3. Click the interface you use to connect to the Internet, such as AirPort or Built-in Ethernet.
  4. If you use Built-in Ethernet: Type your DNS address(es) in the DNS Server field. If you have more than one, separate them with a comma.
  5. If you use AirPort, click Advanced, then click the DNS tab. For each server, click the "+" button under DNS Servers and enter the address provided by your ISP or network admin. Click OK when done. Click Apply.