CNT4603 - 2012 Summer
Group Assignment 5
Journals Due Wednesday, July 11th, at the beginning of class.

Assignment: DNS

Note: If you have installed and configured DNS before, this assignment should be no more than moderately challenging. If you have not done so before, however, you may want to allot some time for this one.

The assignment is to install and configure DNS on your Centos 6 virtual machine, and reconfigure both your Debian machine and your CentOS virtual machine to use your CentOS machine as a nameserver.

Please choose a nameserver from DNSMASQ, DJBDNS, BIND, or MaraDNS. DJBDNS can be found at; BIND, DNSMASQ and MaraDNS should be in your repositories.

There are tradeoffs associated with each of these packages. Please examine each of them before installing anything, and write out your initial reasoning as to your initial installation decisions.

Some are some major considerations that I would suggest:

  1. DJBDNS: (a) DJBDNS is not in any repository, and must be installed from source (or an RPM, if you can find one that you trust), so it is clearly more challenging as an installation project. (b) Documentation for DJBDNS is fairly scarce except for the CR.YP.TO website. (c) DJBDNS is considered by most sysadmins to be very easy to configure, and maintenance is usually a breeze.
  2. BIND: (a) BIND is by far the most common DNS package and is trivial to install. (b) It is heavily documented, and there are numerous books available on the sole subject of configuring this daemon. (c) Hand maintenance of BIND files is historically a troublesome and tedious task. (d) There are GUI interfaces available to configure DNS, such as webmin.
  3. MaraDNS: (a) MaraDNS can be found in your software repositories. (b) Like DJBDNS, documentation is quite scarce except for the documentation at the website. (c) MaraDNS is also considered by most of its users to be quite simple to configure and maintain, with the nice ability to synthesize certain tedious but necessary records.
  4. DNSMASQ: (a) DNSMASQ can be found in your software repositories. (b) Like DJBDNS, documentation is quite scarce. (c) DNSMASQ is quite popular for its easy configuration and for its strong DHCP integration.

For this exercise, your CentOS machine will be the primary, authoritative nameservers for your group's DNS domain. The name of each group's domain is cslabNN.internal; i.e. for group #2, the DNS domain is cslab02.internal; for group #9, it is cslab09.internal; and for group #19, it is cslab19.internal.


Your nameserver should answer anyone's UDP requests on the standard DNS port 53.

Your nameserver should provide general recursive caching DNS for all machines in the lab. Any machine in the lab should be able to resolve "", "", and "" using your nameserver.

Your nameserver should also provide at least the following DNS records:

Type Name Value
A s1.cslabNN.internal 192.168.10.(N*10)
A s2.cslabNN.internal 192.168.10.(N*10+1)
A mail.cslabNN.internal 192.168.10.(N*10+1)
A imap.cslabNN.internal 192.168.10.(N*10+1)
A webmail.cslabNN.internal 192.168.10.(N*10)
MX cslabNN.internal mail.cslabNN.internal

Please also make sure that reverse records for the A records are available.

For bonus credit, you can set up both of your servers to do internal resolution of names via{8,9}. Normally, your nameservers would serve up outside numbers for these names; however, all four of these packages afford a method to consult specified servers for specific domains. If you are feeling very ambitious, feel free to set up your nameserver to consult other teams' nameserver for their domains also!

Please extensively test your server from your Debian box. The programs dig, host, and nslookup are the most useful tools for doing this testing. On Wednesday, July 11, we will spend a portion of class testing your nameserver so that everyone can view your handiwork.

A journal is due for this assignment. Make sure that you document in your journal all of the steps that you went through, following the guidelines on the class home page.

Please turn in a printed copy of this assignment at the beginning of class on Wednesday, July 11th.