#DNS Basics Domain names are a core feature of the internet. It is simply a mechanism to give a friendly name to remove the need to use ip addresses directly. It also has a number of advantages, such as:
- It allows you to have more than one domain name pointing at the same ip address (ie same website).
- It allows you to host more than one website on a specific ip address (ie shared hosting, the website shown in the one associated with the domain name)
|A Record||Translates machine names into IPV4 addresses|
|AAAA Record||Translates machine names into IPV6 addresses|
|MX Record||Specifies the names of the mail servers that handle mail for a specified domain|
|NS Record||These records specify the name servers for a specified domain|
|PTR Record||These are mainly used for reverse lookups - translating IP addresses to machine names|
|CNAME Record||These simply redirect to another machine name, like an alias|
##Client Side DNS
When you look for a domain name your system will consult
/etc/nsswitch.conf. This file details the order in which locations will be check to help resolve the domain name.
# /etc/nsswitch.conf # # Example configuration of GNU Name Service Switch functionality. # If you have the `glibc-doc-reference' and `info' packages installed, try: # `info libc "Name Service Switch"' for information about this file. passwd: compat group: compat shadow: compat hosts: files mdns4_minimal [NOTFOUND=return] dns mdns4 networks: files protocols: db files services: db files ethers: db files rpc: db files netgroup: nis
From this file you can see the order in which it checks to resolve the host.
hosts: files mdns4_minimal [NOTFOUND=return] dns mdns4
This indicates that it should consult the host file first and the check the dns if an entry is not found.
The client host file is located in
/etc/hosts (in Windows it is in
c:\windows\system32\drivers\etc\hosts. This file is the first place that is checked for the domain name lookup. If it is not found here then it will proceed to check with the domain name server (DNS).
127.0.0.1 localhost 188.8.131.52 api.nodenx.com # The following lines are desirable for IPv6 capable hosts ::1 ip6-localhost ip6-loopback fe00::0 ip6-localnet ff00::0 ip6-mcastprefix ff02::1 ip6-allnodes ff02::2 ip6-allrouters
The location of the DNS servers to consult is stored in the
# Dynamic resolv.conf(5) file for glibc resolver(3) generated by resolvconf(8) # DO NOT EDIT THIS FILE BY HAND -- YOUR CHANGES WILL BE OVERWRITTEN nameserver 127.0.1.1 # OpenDNS Fallback (configured by Linux Mint in /etc/resolvconf/resolv.conf.d/tail). nameserver 184.108.40.206 nameserver 220.127.116.11
###Domain Name Lookup To lookup the entry associated with a name you can use nslookup.
nslookup www.microsoft.com Server: 127.0.1.1 Address: 127.0.1.1#53 Non-authoritative answer: www.microsoft.com canonical name = toggle.www.ms.akadns.net. toggle.www.ms.akadns.net canonical name = g.www.ms.akadns.net. g.www.ms.akadns.net canonical name = lb1.www.ms.akadns.net. Name: lb1.www.ms.akadns.net Address: 18.104.22.168
You can get a list of the name servers using
dig. For example to get the list of root name servers you can do the following:
dig ns . ; <<>> DiG 9.9.2-P1 <<>> ns . ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 36321 ;; flags: qr rd ra; QUERY: 1, ANSWER: 13, AUTHORITY: 0, ADDITIONAL: 0 ;; QUESTION SECTION: ;. IN NS ;; ANSWER SECTION: . 85901 IN NS g.root-servers.net. . 85901 IN NS h.root-servers.net. . 85901 IN NS e.root-servers.net. . 85901 IN NS j.root-servers.net. . 85901 IN NS b.root-servers.net. . 85901 IN NS f.root-servers.net. . 85901 IN NS c.root-servers.net. . 85901 IN NS k.root-servers.net. . 85901 IN NS a.root-servers.net. . 85901 IN NS m.root-servers.net. . 85901 IN NS i.root-servers.net. . 85901 IN NS d.root-servers.net. . 85901 IN NS l.root-servers.net. ;; Query time: 12 msec ;; SERVER: 127.0.1.1#53(127.0.1.1) ;; WHEN: Sun Jul 14 21:18:27 2013 ;; MSG SIZE rcvd: 241
This shows that there are 13 name servers named a to m. In reality, there are more than 13 physical servers. Each of these domain servers may consist of many load balanced servers.
DNS Simple Load Balancing It is possible to have more than one entry for a domain name. Thus you could have two A Records:
www.mysite.com 22.214.171.124 www.mysite.com 126.96.36.199
In this situation, one of the ip addesses at random will be used when someone request the domain name www.mysite.com. This is a simple way to spread the load over two or more servers.