COMPUTER AND NETWORK SYSTEM ADMINISTRATION Summer 1996 - Lesson 15 Introduction to DNS A. Introduction - The Domain Name Service (DNS) 1. host name to IP number mapping was originally done by downloading a static file 2. the UNIX version of this file is /etc/hosts 3. the central file was maintained by the Stanford Research Institute Network Information Center (SRI-NIC) 4. as the Internet grew this scheme became unworkable - the size of the file became too large - the load on SRI-NIC site became too heavy - the file was always inconsistent with reality - hostname collisions became frequent (anyone could name their machine "whitehouse.gov" if they wanted to) ** Figure 1.1 A. Overview 1. In 1984 Paulk Mockapetris of USC designed the architecture of DNS 2. the Domain Name Service is essentially a distributed database managed by InterNIC. 3. Features - local control: each segment is updated locally - global access: each segment is available (almost) immediately to the rest of the world upon update - robustness: achieved through replication - adequate performance: is achieved through caching 4. software - servers: called name servers, contain information about some segment of the network and make it available to clients ("BIND" = "Berkely Internet Name Daemon", includes "named", libraries, "nslookup", "dig", "host") - client: resolvers, a set of library routines that resolve names by accessing a server (originally a separate library, like libresolv.a, now usually part of libc.a) C. Domain structure ** Figure 1.2 - similar to the structure of a hierarchical file system - the root's name is the null label " " but is written as a single dot "." - each node represents a 'domain' - every domain is named - the full domain name is the sequence of labels from the domain to the root, separated by periods - unlike a file system pathname the name is read from leaf to root (right to left rather than left to right) delta.cs.fsu.edu ** Figure 1.3 D. Domain management - each domain may be managed by a different organization - the organization may divide itself into subdomains - then delegate responsbility for maintaining them - NIC manages the top-level domains - example: NIC delegates the "fsu.edu" domain to ACNS ** Figure 1.4 E. Host names 1. each host on a network has a domain 2. the domain points to information about the host 3. this may include: - an IP address - mail routing information (different than for other services) - aliases which point to the real ("canonical") host name ** Figure 1.5 F. Name collisions 1. the possibility for name collisions is now greatly reduced ** Figure 2.1 G. The domain name space - there may be any number of branches at a node - BINDs implementation limits the tree's depth to 127 "davidsun.kuncicky.faculty.cs.fsu.edu.us.northamerica.earth.solarsystem.milky way....." - each name may contain up to 63 characters - the suggested length is < 12 - a domain name that is written relative to the root is called a 'fully-qualified domain name' - FQDN - names without trailing dots ("leading dots") are sometimes interpreted as relative to some domain other than root ** Figure 2.2 - sibling nodes must have unique names ** Figure 2.3, 2.4 - the name of a domain is the domain name of the node at the top of the domain (example purdue.edu) - again, similar to a file system ** Figure 2.5 - a node is in multiple domains - so, a domain is just a subtree of the domain name space ("subdomain") H. Hosts - where are the hosts? - a domain name is just an index into the DNS database - the 'hosts' are domain names that point to individual machine information - the hosts are realated 'logically' usually by geography or organization - they are NOT necessarily related by network or IP address or hardware type - you could have 10 different hosts on 10 different networks in ten different countries all in the same domain (hp.com) - nodes at the leaves of the tree usually represent individual hosts ** Figure 2.6 - interior nodes may point to both: > host information > subdomain information - for example, "hp.com" is both the name of a domain and the name of a machine that routes mail I. The Domain name space 1. terms: top-level domain: a child of root (edu) first-level domain: a child of root (edu) second-level domain: a child of 1st level domain (fsu.edu) 2. naming rules - there are not many rules imposed on the naming of domains - there are some traditions at the top-level - the original 7 top-level domains are: com - commerical organizations edu - educational organizations gov - government bodies mil - military organizations net - networking organizations (nsf.net) org - non-commercial organizations int - international organizations - what about the rest of the world? - the Internet began as ARPANET, funded by Defense Advanced Research Projects (the military) - later was funded by the National Science Foundation - no one anticipated the international success of the Internet 3. international names - 2-letter designations are reserved for each country - ex: DE - Germany DK - Denmark - each country may organize its domain space however it wishes ex: Australia uses: edu.au and com.au ex: Britain uses: co.uk - corporations ac.uk - academic community ex: USA uses states: fl.us then cities: tlh.fl.us J. Name servers 1. zones - a program that stores information about the domain name space is called a Domain Name Server - a name server generally has complete information about some part of the domain name space - the subspace is called a 'zone' - the server is said to have 'authority' for one or more zones - what is the difference between a zone and a domain? [ A domain may be composed of one or more zones, but not vice versa ] ** Figure 2.7 ** Figure 2.8 ** Figure 2.9 2. types of name servers - primary master > gets the data for its zones from flat data (text) files - secondary master > gets the data for its zone from another server > it periodically updates its local data by copying the primary master's files > this is called a 'zone transfer' - generally keep more than one name server for any given zone > redundancy: fault tolerance > load: localize it as much as possible K. Resolvers 1. name service clients - these are the clients that access name servers - in BIND these are a set of library routines - these are compiled into telnet, ftp, etc. so that these programs will use DNS to resolve names ("gethostbyname()" and others) 2. duties of a simple resolver: - this is called a 'stub resolver' - querying a name server - interpreting the response - resend a response - returning a reply to the program that it is servicing (ftp) L. Resolution 1. how does the name server resolve names - if the name is in the name server's zone then it can give the resolver an immediate 'authoritative' response - if not, then the name server must search the domain name space for an answer - it only needs one piece of information to get started: the location of a root-level server 2. root name servers - the root name servers are authoritative for the top-level domains (edu, org, us, dk, etc.) - they can point you to the name servers for each of the top-level domains - they, in turn can point you to their subdomains, etc. until the name is resolved - this scheme puts a lot of importance on the root-level servers ** Figure 2.10 - example of name resolution via "nslookup" nslookup > set debug > ftp.es.net Server: dns.scri.fsu.edu Address: 144.174.128.17 ------------ Got answer: HEADER: opcode = QUERY, id = 3, rcode = NXDOMAIN header flags: response, authentic answer, want recursion, recursion available questions = 1, answers = 0, authority records = 1, additional = 0 QUESTIONS: ftp.es.net.scri.fsu.edu, type = A, class = IN AUTHORITY RECORDS: -> scri.fsu.edu ttl = 86400 (1 day) origin = dns.scri.fsu.edu mail address = hays.mailer.scri.fsu.edu serial = 1996061302 refresh = 3600 (1 hour) retry = 900 (15 mins) expire = 3600000 (41 days 16 hours) minimum ttl = 86400 (1 day) ------------ ------------ Got answer: HEADER: opcode = QUERY, id = 4, rcode = NOERROR header flags: response, want recursion, recursion available questions = 1, answers = 2, authority records = 4, additional = 6 QUESTIONS: ftp.es.net, type = A, class = IN ANSWERS: -> ftp.es.net canonical name = nic3.es.net ttl = 3556 (59 mins 16 secs) -> nic3.es.net internet address = 198.128.3.83 ttl = 3600 (1 hour) AUTHORITY RECORDS: -> ES.net nameserver = NS1.es.net ttl = 168588 (1 day 22 hours 49 mins 48 secs) -> ES.net nameserver = DNS-EAST.es.net ttl = 168588 (1 day 22 hours 49 mins 48 secs) -> ES.net nameserver = DNS-WEST.NERSC.GOV ttl = 168588 (1 day 22 hours 49 mins 48 secs) -> ES.net nameserver = IGW.NERSC.GOV ttl = 168588 (1 day 22 hours 49 mins 48 secs) ADDITIONAL RECORDS: -> NS1.es.net internet address = 198.128.2.10 ttl = 168588 (1 day 22 hours 49 mins 48 secs) -> DNS-EAST.es.net internet address = 134.55.6.130 ttl = 168588 (1 day 22 hours 49 mins 48 secs) -> DNS-WEST.NERSC.GOV internet address = 128.55.128.191 ttl = 168588 (1 day 22 hours 49 mins 48 secs) -> DNS-WEST.NERSC.GOV internet address = 128.55.32.12 ttl = 168588 (1 day 22 hours 49 mins 48 secs) -> IGW.NERSC.GOV internet address = 128.55.32.9 ttl = 3600 (1 hour) -> IGW.NERSC.GOV internet address = 128.55.128.151 ttl = 3600 (1 hour) ------------ Non-authoritative answer: Name: nic3.es.net Address: 198.128.3.83 Aliases: ftp.es.net 3. recursion - note that the first name server made multiple requests - the others simply referred the first server to another machine - the local server was responding to a 'recursive query' - this is because the local 'dumb' resolver is not smart enough to follow any referrals - a recursive query places most of the work on a single name server - when a recusive query is made the name server is obliged to go find the answer or return an error message 4. iteration - iterative resolution is the method used when a name server receives an 'iterative query' - in this case, if the server does not have the authoritative answer it returns: > a cached answer (we'll talk about this in a minute) > the names and addresses of several servers that are closer to the answer ** Figure 2.11 nslookup > server ns1.es.net > ftp.es.net Server: ns1.es.net Address: 198.128.2.10 Name: nic3.es.net Address: 198.128.3.83 Aliases: ftp.es.net M. Mapping addresses to names 1. what if you have an IP number and want to find the host name? - this is usefule to make output more readable - used for some security checks 2. this was easy with the old /etc/hosts tables 3. the DNS data is indexed by name - could do an exhuastive search 4. the clever solution - create a part of the domain name space that uses addresses as names - this is: in-addr.arpa ** Figure 2.12 - for example type: nslookup >set type=any >10.121.186.128.in-addr.arpa returns: nu.cs.fsu.edu As we saw earlier, though, newer "nslookup" versions will automatically build the reverse name lookup (like on Linux): nslookup > 128.186.121.10 Server: dns.scri.fsu.edu Address: 144.174.128.17 Name: nu.cs.fsu.edu Address: 128.186.121.10 N. Caching 1. each time a local name server processes a recursive query it learns a lot of information 2. this is cached which speeds up successive queries ** Figure 2.14 3. example: - say our server has already looked up the address of eecs.berkeley.edu - this means it has cached the name servers for both: eecs.berkeley.edu berkeley.edu - if we now make a query for baobab.cs.berkeley.edu the local server can skip the root-level query and go right to berkeley.edu 4. time to live (TTL) - TTL is the amount of time that information is cached before it is discarded - the trade-off is between consistency and performance