Because DNS depends on records in multiple places matching up, its common for things to be off, which in the worst cases will lead to the domain not being able to resolve.

The two tools I use when troubleshooting why a domain are not resolving are dig and whois. 'whois' is a command you can use to find the information the domain's registrar has for the domain. This will, among other things tell you the nameservers that the registrar is sending people to when they get requests about the domain. This can help make sure the registrar's records are what they should be.

Once you're certain the registrar's records are correct, dig is the tool to make sure that the records on the nameserver are correct. The 'dig' command has a number of options and different ways it can be invoked, but for basic DNS troubleshooting the two you'll find most useful are '+trace' and '@namserver'. The '+trace' option shows you each step the DNS search takes. This makes it much easier to determine which step in the lookup is failing. So to see each nameserver that is searched when looking up, I would use the command 'dig +trace'. The '@nameserver' will specify the nameserver that you want dig to contact when asking about the DNS records. You can use either a domain name or an IP address, however I usually use an IP address to specify a nameserver (unless querying localhost) as the whole point of testing DNS is that something isn't working as it should. So to see what address will be returned for by the nameserver on the same computer I'm running dig from, I'd use "dig @localhost". If I wanted to see what was returned by the nameserver at I'd use "dig @".

Dig has a number of other options that you can use to determine other information regarding a domain's DNS records. To get all the details take a look at the man page for dig(1), or if you're not familiar with using the man pages, doing a Google search for "dig man" will bring up a number of online versions of dig's man page.