Perhaps you could start with posting the content of some of your configuration files?
To mind come the following;
Do you use a local caching DNS server? Then, also post:
/var/named/caching-example/named.ca (I assume you're using this default file)
That last file could contain IP addresses for the root servers that are no longer in use, and if your own caching DNS server picks the wrong server for its query, it will find the door closed... to check out the list of current root servers, try running this command:
dig @a.root-servers.net . ns
and then compare the IP addresses of these current
rootservers with the IP addresses of the rootservers in your local file (likely /var/named/caching-example/named.ca). You will probably notice that for some of the servers, the IP addresses has indeed changed over time.
Rather than using a caching DNS server that starts resolving process by querying one of the root servers (which can lead to long delays) it is often faster to rely on your local network or ISP's DNS server. If your computer uses DHCP to get an IP address, the DHCP server will also send the IP address(es) of nearby DNS servers, and this information is then written into /etc/resolv.conf.
Now, this is an answer that might not even apply to your problem (we'll see that when you post your config files) but I thought it would be good to show that relying on the Internet's root servers is not by definition a good idea (unless you keep your local list of root servers current... I do that by running this script
as a cron job once a month).