DNS: What Can Go Wrong and How You Can Fix It
DNS is vital to system infrastructures. Find out what can go wrong, and how you can avoid it, here.
Join the DZone community and get the full member experience.
Join For FreeDNS is a core component of the Internet. This rather complex system exists to perform the basic function of translating website domain names (ex: Catchpoint.com) into an IP address. It acts as the liaison between the language that users can understand, and the address of the data center or destination in which the site is being hosted.
DNS is what shapes the modern Internet. It enables users of all skill sets and technical knowledge levels to use this incredibly advanced resource on a daily basis. Businesses that exist entirely on the Internet, like online banking and eCommerce companies, have not only emerged into the market but have steadily gained a global presence.
Despite its critical role, DNS isn't impenetrable; even with redundancies and a fast, efficient design, it's still vulnerable to performance issues and failures. When these issues occur, it means that your applications and websites are inaccessible, and users are likely feeling frustrated. Performance degradation can have serious consequences that can affect your revenue and brand reputation, so it's crucial that your DNS is reliable and consistent.
Regardless of where your DNS is hosted (internally vs. third-party, such as OpenDNS, NS1, etc.), reliability should always be a priority. To ensure its reliable, you must use a DNS monitor that allows you to test and analyze the results so you can make improvements. Monitoring also gives you the ability to recognize performance trends and patterns and identify areas of concern.
Let's take a look at some of the real-world concerns that can cause DNS resolution issues.
Not Using a Multiple Name Server Architecture
DNS name servers are very important; they are the primary source that directs to the actual hostnames, which is what a client is looking for. These name servers can go down at times due to an issue (i.e. DDoS attacks, network issues with the server, etc.). This can be cause for serious concern if there is only one name server in place. The DNS resolution will fail, and the end user won't be able to visit the page at all. It's always advisable to have multiple name servers to answer DNS queries so that even if one fails, others can answer the query.
Let's say I have a hostname www.abc.com and I have configured only one name server to handle the DNS query. So when the request reaches abc.com, it gets the following information in the zone file:
abc.com 172,800 IN NS ns1.abc.com
Now, imagine if this name server goes down; the complete DNS query will fail and the client will not be able to reach www.abc.com because there isn't a second name server to handle failure.
Let's look at another example: www.google.com has four name servers, which enable them to handle a name server failure more effectively.
google.com 172,800 IN NS ns1.google.com
google.com 172,800 IN NS ns2.google.com
google.com 172,800 IN NS ns3.google.com
google.com 172,800 IN NS ns4.google.com
In this case, whenever any of the four name servers fails, there are three other name servers that will answer DNS queries, making sure there is not a complete outage of DNS resolution process for www.google.com.
Absence of Glue Records
A glue record is the IP address of the name server that is present in the same zone file. Now, this is a very important resource record considering how the whole DNS resolution works. Let's try to understand this with the help of an example:
Say I have a hostname www.abc.com, and for that, I have three name servers, which will be used in my zone file when a DNS query comes for abc.com.
abc.com 172,800 IN NS ns1.abc.com
abc.com 172,800 IN NS ns2.abc.com
abc.com 172,800 IN NS ns3.abc.com
Now, consider the case in which I do not give information about all three of the name servers in the form of an IP address (or glue records). Next, the DNS resolver will query one of the name servers; say ns1.abc.com is chosen. Now, because the IP address of NS1 is not present in that zone file, our DNS resolver will start resolving from root, then .com, and, after querying abc.com, it will end up with the same three name servers' information as shown above. The DNS resolution process will be stuck in this loop forever until it finally fails. Hence, it is very important to add a glue record while configuring the name server information in the zone file.
abc.com 172,800 IN NS ns1.abc.com
abc.com 172,800 IN NS ns2.abc.com
abc.com 172,800 IN NS ns3.abc.com
ns1.abc.com 800 IN A 1.2.3.4
ns2.abc.com 800 IN A 3.2.4.6
ns3.abc.com 800 IN A 5.4.1.2
DNS Cache Poisoning
To put it simply, DNS cache poisoning means incorrect DNS information. For example, if www.facebook.com starts pointing to a Google IP, that means Facebook will tell its user to search on a Google machine for Facebook content. DNS cache poisoning can occur in multiple ways, like if an attacker (middle man) gets ahold of the zone file of the authoritative name servers, they could change the value of A records and can cause incorrect DNS mapping.
It can also spread because when an ISP caches an incorrect DNS entry, which is obtained from some compromised servers and can virtually spread from one ISP to the other and cause serious poisoning issues.
Insecure Zone Transfer
As explained earlier, having multiple name servers for a domain gives it a better chance of handling any kind of name server failure. It's also very important for all the name servers to have updated information of the zone file, which is why you have to make sure all name servers have the same information when it comes to zone transfers.
An unsecure zone transfer can reveal a lot of critical information about a domain. Although zone transfer takes place over TCP protocol to make sure the transferred information is more reliable, sometimes, improper configuration of a particular name server can allow a zone transfer to a third party (middle man), which means the third party will have all the critical information related to that particular domain. Hence, transferring zone information should happen between the same domain name servers. For example, if there are two name servers for example.com (NS1, NS2), then ns1.example.com should allow zone transfers only to ns2.example.com, and discard all other third-party requests for transfer.
These examples are just a few that demonstrate why monitoring is important for organizations to keep an eye on any anomalies to their DNS service. Stay tuned for a follow-up article that will examine other DNS scenarios, and how to handle the issues that can occur.
Published at DZone with permission of Mehdi Daoudi, DZone MVB. See the original article here.
Opinions expressed by DZone contributors are their own.
Comments