lab-8-report.txt

Yu Cheng (Jade)
ICS 351
Lab Report 8
November 23, 2008

[Exercise 1A]
We connected the ethernet interfaces of the PCs and the routers.  We used the
following commands to configure the interfaces of the PCs:

    on PC1: `ifconfig eth0 10.0.1.11/24`
    on PC1: `ifconfig eth1 10.0.2.12/24`
    on PC2: `ifconfig eth0 10.0.2.21/24`
    on PC2: `ifconfig eth1 10.0.2.22/24`
    on PC3: `ifconfig eth1 10.0.3.31/24`
    on PC3: `ifconfig eth1 10.0.3.32/24`
    on PC4: `ifconfig eth1 10.0.4.41/24`
    on PC4: `ifconfig eth1 10.0.4.42/24`

We also configured the routers using the following commands:

Router1
    yourname# config t
    yourname(config)# no ip routing
    yourname(config)# ip routing
    yourname(config)# interface fa0/0
    yourname(config-if)# no shutdown
    yourname(config-if)# ip address 10.0.1.111 255.255.255.0
    yourname(config-if)# end

Router2
    yourname# config t
    yourname(config)# no ip routing
    yourname(config)# ip routing
    yourname(config)# interface fa0/0
    yourname(config-if)# no shutdown
    yourname(config-if)# ip address 10.0.1.121 255.255.255.0
    yourname(config-if)# end

Router3
    yourname# config t
    yourname(config)# no ip routing
    yourname(config)# ip routing
    yourname(config)# interface fa0/0
    yourname(config-if)# no shutdown
    yourname(config-if)# ip address 10.0.1.131 255.255.255.0
    yourname(config-if)# end

Router4
    yourname# config t
    yourname(config)# no ip routing
    yourname(config)# ip routing
    yourname(config)# interface fa0/0
    yourname(config-if)# no shutdown
    yourname(config-if)# ip address 10.0.1.141 255.255.255.0
    yourname(config-if)# end

We then issued some ping commands between the PCs and the routers.  The commands
were all successful.


[Exercise 1B]
We used command `gedit /etc/resolv.conf` to display the contents of this file on
each PC.  They are empty.  We then issued command `pkill named` on all four PCs
 to make sure that no named process is running.

We prepared the configuration files in prelab section.  We copied the files for
each PC into its /root/namedpacage directory.  We issued the following commands
to change the file permission and started the script to install the
configuartion on each PC.

    on PC#: cd /root/namedpackage
    on PC#: chmod 755 named-installPC1
    on PC#: ./named-installPC1

We went into the cooresponding directories to verify the files.  They were
copied successfully.


[Exercise 2]
We used command `gedit /etc/hosts` to display the contents of this directory on
PC1.  We kept the localhost entry and added several other entries indicating
PC2, PC3, and PC4.  The new entries are shown as below:

    10.0.1.21 myPC2.tcpip-lab.net PC2
    10.0.1.31 PC3+++
    10.0.1.32 PC3--
    10.0.1.41 PC4..tcpip-lab..net

We issued some ping commands to verify the symbolic names were associated with
cooresponding IP addresses.

    on PC1: ping -c 3 10.0.1.21
    on PC1: ping -c 3 PC2
    on PC1: ping -c 3 myPC2.tcpip-lab.net
    on PC1: ping -c 3 PC3+++
    on PC1: ping -c 3 PC3--
    on PC1: ping -c 3 PC4..tcpip-lab..net

The first five commands were successful.  The last one failed.  It looks like
the formate of the last entry was not acceptable.  We then tried to add a
duplicate entry with the same symbolic name associated with two different IP
addresses.  The first entry was used.  We also tried to ping after deleting all
of the entires in the /etc/hosts file.  The ping commands could not go througeh.

[Exercise 3A]
PC4 was set up as a DNS server.  PC1, PC2, and PC3 were used as regular hosts.
This configuration was verified by going through the zone data files.  The host
PCs had two zone data files, db.127.0.0 and db.cache.

PC4 had five zone data files.  db.mylab.com file defined the DNS zone mylab.com
and maped the hosts names in the zone to their IP addresses.
-------------
db.mylab.com
--------------------------------------------------------------------------------
$TTL 86400
mylab.com.    IN    SOA    PC4.mylab.com.    hostmaster.mylab.com. (
            1 ; serial
            28800 ; refresh
            7200 ; retry
            604800 ; expire
            86400 ; ttl
            )

;
mylab.com.    IN    NS    PC4.mylab.com.
;
localhost    A    127.0.0.1
PC4.mylab.com.    A    10.0.1.41
PC3.mylab.com.    A    10.0.1.31
PC2.mylab.com.    A    10.0.1.21
PC1.mylab.com.    A    10.0.1.11
--------------------------------------------------------------------------------

The db.10.0.1 file was used for inverse lookup mapping.
----------
db.10.0.1
--------------------------------------------------------------------------------
$TTL 86400
1.0.10.in-addr.arpa.    IN    SOA    PC4.mylab.com.    hostmaster.mylab.com. (
            1 ; serial
            28800 ; refresh
            7200 ; retry
            604800 ; expire
            86400 ; ttl
            )


1.0.10.in-addr.arpa.    IN    NS     PC4.mylab.com.

11    IN    PTR    PC1.mylab.com.
21    IN    PTR    PC2.mylab.com.
31    IN    PTR    PC3.mylab.com.
41    IN    PTR    PC4.mylab.com.
--------------------------------------------------------------------------------

The db.localhost and db.127.0.0 files were used to map the loopback address of
PC4 and the host name of PC4 and vice versa.
-----------
db.127.0.0
--------------------------------------------------------------------------------
$TTL 86400
0.0.127.in-addr.arpa.    IN    SOA    PC4.mylab.com.    hostmaster.mylab.com. (
            1 ; serial
            28800 ; refresh
            7200 ; retry
            604800 ; expire
            86400 ; ttl
            )

0.0.127.in-addr.arpa.   IN     NS   PC4.mylab.com.


1    IN    PTR    localhost.
--------------------------------------------------------------------------------
-------------
db.localhost
--------------------------------------------------------------------------------
$TTL 86400
localhost.    IN    SOA    localhost  root.localhost (
            1 ; serial
            28800 ; refresh
            7200 ; retry
            604800 ; expire
            86400 ; ttl
            )


localhost.    IN    NS    PC4.mylab.com.


localhost.    IN    A    127.0.0.1
--------------------------------------------------------------------------------

Question
The "$TTL 86400" in the db.mylab.com file meant how long the DNS sever, PC4 can
cache the information.  It was 24hr.


[Exercise 3B]
We configured the DNS resolver in the host PCs by checking and modifying three
files.  The /etc/nsswitch.conf files needed to contain "hosts: dns files" and
they did contain this line.  The /etc/resolv.conf files needed to contain
"nameserver 10.0.1.41".  The files were initially empty.  We added that line for
all three host PCs.  The /etc/hosts files needed to contain "127.0.0.1
localhost.localdomain localhost" and they did.   We then restarted the network
using command `on PC#: /etc/rc.d/init.d/network restart`.


[Exercise 3C]
We copied the configuration files on PC4 into the correct location and started
the named DNS server.

    on PC4: `cp /etc/named-part3.conf /etc/named.conf`
    on PC4: `/etc/rc.d/init.d/named start`

We issued the following commands to find out the IP addresses of the given
domain name and also the domain names for the given IP addresses.

    on PC4: `host -v PC3.mylab.com`
    on PC4: `host -v 10.0.1.21`
    on PC4: `host -v localhost`
    on PC4: `host -v tcpip-lab.net`

We saved the output as ex3c-2.txt.  Copied below is the contents of the first
and the second commands.
--------------------------------------------------------------------------------
[root@PC4 part3]# host -v PC3.mylab.com
Trying "PC3.mylab.com"
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 6586
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 1, ADDITIONAL: 2

;; QUESTION SECTION:
;PC3.mylab.com.            IN    A

;; ANSWER SECTION:
PC3.mylab.com.        86400    IN    A    10.0.2.32
PC3.mylab.com.        86400    IN    A    10.0.1.31

;; AUTHORITY SECTION:
mylab.com.        86400    IN    NS    PC4.mylab.com.

;; ADDITIONAL SECTION:
PC4.mylab.com.        86400    IN    A    10.0.2.42
PC4.mylab.com.        86400    IN    A    10.0.1.41

Received 113 bytes from 127.0.0.1#53 in 48 ms
Trying "PC3.mylab.com"
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 56060
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 1, ADDITIONAL: 0

;; QUESTION SECTION:
;PC3.mylab.com.            IN    AAAA

;; AUTHORITY SECTION:
mylab.com.        86400    IN    SOA    PC4.mylab.com. hostmaster.mylab.com. 1 28800 7200 604800 86400

Received 82 bytes from 127.0.0.1#53 in 26 ms
Trying "PC3.mylab.com"
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 33380
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 1, ADDITIONAL: 0

;; QUESTION SECTION:
;PC3.mylab.com.            IN    MX

;; AUTHORITY SECTION:
mylab.com.        86400    IN    SOA    PC4.mylab.com. hostmaster.mylab.com. 1 28800 7200 604800 86400

Received 82 bytes from 127.0.0.1#53 in 1 ms
--------------------------------------------------------------------------------
[root@PC4 part3]# host -v 10.0.1.21
Trying "21.1.0.10.in-addr.arpa"
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 45107
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 2

;; QUESTION SECTION:
;21.1.0.10.in-addr.arpa.        IN    PTR

;; ANSWER SECTION:
21.1.0.10.in-addr.arpa.    86400    IN    PTR    PC2.mylab.com.

;; AUTHORITY SECTION:
1.0.10.in-addr.arpa.    86400    IN    NS    PC4.mylab.com.

;; ADDITIONAL SECTION:
PC4.mylab.com.        86400    IN    A    10.0.1.41
PC4.mylab.com.        86400    IN    A    10.0.2.42

Received 117 bytes from 127.0.0.1#53 in 2 ms
--------------------------------------------------------------------------------

The host command is used to find the ipaddress of the given domain name and also
prints the domain name for the given ip.  The output "ANSWER SECTION" printed
out the IP addresses or symbolic names that were associated with the input.  The
output "AUTHORITY SECTION" printed out the DNS server's name.  The output
"ADDITIONAL SECTION" printed out the IP addresses that were associated with this
DNS sever.


[Exercise 3D]
We added new zone data files on PC4 to directory /var/named/parts.  The
directory was where other zone data files were.  We used command `gedit
db.lab8.net` and `gedit db.10.0.2` to create and edit the two new zone data
files.

-------------
db.lab8.net
--------------------------------------------------------------------------------
$TTL 86400
lab8.net.    IN    SOA    PC4.lab8.net.    hostmaster.lab8.net. (
            1 ; serial
            28800 ; refresh
            7200 ; retry
            604800 ; expire
            86400 ; ttl
            )

;
lab8.net.    IN    NS    PC4.lab8.net.
;
localhost    A    127.0.0.1
PC4.lab8.net.    A    10.0.2.41
PC3.lab8.net.    A    10.0.2.31
PC2.lab8.net.    A    10.0.2.21
PC1.lab8.net.    A    10.0.2.11
--------------------------------------------------------------------------------
----------
db.10.0.2
--------------------------------------------------------------------------------
$TTL 86400
2.0.10.in-addr.arpa.    IN    SOA    PC4.lab8.net.    hostmaster.lab8.net. (
            1 ; serial
            28800 ; refresh
            7200 ; retry
            604800 ; expire
            86400 ; ttl
            )


2.0.10.in-addr.arpa.    IN    NS     PC4.lab8.net.

11    IN    PTR    PC1.lab8.net.
21    IN    PTR    PC2.lab8.net.
31    IN    PTR    PC3.lab8.net.
41    IN    PTR    PC4.lab8.net.
--------------------------------------------------------------------------------

We also added cooresponding statements to the configuration file /etc/named.conf
for the domain lab8.net and 2.0.10.in addr.arpa.  The file is copied below.  We
added the last two entries and saved the file.
-------------------------
modified /etc/named.conf
--------------------------------------------------------------------------------
## named.conf - configuration for bind
#
# Generated automatically by bindconf, alchemist et al.

options {
    directory "/var/named/";
};

zone  "." {
    type hint;
    file  "part3/db.cache";
};

zone  "0.0.127.in-addr.arpa" {
    type master;
    file  "part3/db.127.0.0";
};

zone  "localhost" {
    type master;
    file  "part3/db.localhost";
};

zone  "mylab.com" {
    type master;
    file  "part3/db.mylab.com";
};

zone  "1.0.10.in-addr.arpa" {
    type master;
    file  "part3/db.10.0.1";
};

# new entry that we added.
zone  "lab8.net" {
    type master;
    file  "part3/db.lab8.net";
};

# new entry that we added.
zone  "2.0.10.in-addr.arpa" {
    type master;
    file  "part3/db.10.0.2";
};
--------------------------------------------------------------------------------

We issued the following commands to kill the named process and restarted it.

    on PC4: `pkill named`
    on PC4: `/etc/rc.d/init.d/named start`

We save the output of the command `host -v PC3.lab8.net` on PC4 as ex3d3.txt.  I
also attached it as below.  I realized later that we were supposed to issued
this command on PC1.  But the output below also shows the successful
configuration of adding the domain lab8.net.
--------------------------------------------------------------------------------
Trying "PC3.lab8.net"
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 16502
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 1

;; QUESTION SECTION:
;PC3.lab8.net.            IN    A

;; ANSWER SECTION:
PC3.lab8.net.        86400    IN    A    10.0.2.32

;; AUTHORITY SECTION:
lab8.net.        86400    IN    NS    PC4.lab8.net.

;; ADDITIONAL SECTION:
PC4.lab8.net.        86400    IN    A    10.0.2.42

Received 80 bytes from 127.0.0.1#53 in 2 ms
Trying "PC3.lab8.net"
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 60987
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 1, ADDITIONAL: 0

;; QUESTION SECTION:
;PC3.lab8.net.            IN    AAAA

;; AUTHORITY SECTION:
lab8.net.        86400    IN    SOA    PC4.lab8.net. hostmaster.lab8.net. 1 28800 7200 604800 86400

Received 81 bytes from 127.0.0.1#53 in 1 ms
Trying "PC3.lab8.net"
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 48611
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 1, ADDITIONAL: 0

;; QUESTION SECTION:
;PC3.lab8.net.            IN    MX

;; AUTHORITY SECTION:
lab8.net.        86400    IN    SOA    PC4.lab8.net. hostmaster.lab8.net. 1 28800 7200 604800 86400

Received 81 bytes from 127.0.0.1#53 in 1 ms
--------------------------------------------------------------------------------


[Exercise 3E]
In this exercise we assignment more than one name to an IP address.  We modified
the db.mylab.com file and db.10.0.2 file in directory /etc/named/part3 to create
duplicated sybolic names of a series of IP addresses.
----------------------
modified db.mylab.com
--------------------------------------------------------------------------------
$TTL 86400
mylab.com.    IN    SOA    PC4.mylab.com.    hostmaster.mylab.com. (
            1 ; serial
            28800 ; refresh
            7200 ; retry
            604800 ; expire
            86400 ; ttl
            )

;
mylab.com.    IN    NS    PC4.mylab.com.
;
localhost    A    127.0.0.1
PC4.mylab.com.    A    10.0.1.41
PC3.mylab.com.    A    10.0.1.31
PC2.mylab.com.    A    10.0.1.21
PC1.mylab.com.    A    10.0.1.11
PC4.mylab.com.    A    10.0.2.41
PC3.mylab.com.    A    10.0.2.31
PC2.mylab.com.    A    10.0.2.21
PC1.mylab.com.    A    10.0.2.11
--------------------------------------------------------------------------------
--------------------
modified db.10.0.2
--------------------------------------------------------------------------------
$TTL 86400
2.0.10.in-addr.arpa.    IN    SOA    PC4.lab8.net.    hostmaster.lab8.net. (
            1 ; serial
            28800 ; refresh
            7200 ; retry
            604800 ; expire
            86400 ; ttl
            )


2.0.10.in-addr.arpa.    IN    NS     PC4.lab8.net.

11    IN    PTR    PC1.lab8.net.
21    IN    PTR    PC2.lab8.net.
31    IN    PTR    PC3.lab8.net.
41    IN    PTR    PC4.lab8.net.
11    IN    PTR    PC1.mylab.com.
21    IN    PTR    PC2.mylab.com.
31    IN    PTR    PC3.mylab.com.
41    IN    PTR    PC4.mylab.com.
--------------------------------------------------------------------------------

We issued commands `host -v PC3.lab8.net` and `host -v PC3.mylab.com`.  Attached
below is the output of the second command.  We obsered both mapping entries.
DNS name server maps entries arbitrarily.  We can used the same name for
different IP addresses.
--------------------------------------------------------------------------------
[root@PC4 part3]# host -v PC3.mylab.com
Trying "PC3.mylab.com"
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 36653
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 1, ADDITIONAL: 2

;; QUESTION SECTION:
;PC3.mylab.com.            IN    A

;; ANSWER SECTION:
PC3.mylab.com.        86400    IN    A    10.0.2.32
PC3.mylab.com.        86400    IN    A    10.0.1.31

;; AUTHORITY SECTION:
mylab.com.        86400    IN    NS    PC4.mylab.com.

;; ADDITIONAL SECTION:
PC4.mylab.com.        86400    IN    A    10.0.2.42
PC4.mylab.com.        86400    IN    A    10.0.1.41

Received 113 bytes from 127.0.0.1#53 in 2 ms
Trying "PC3.mylab.com"
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 41896
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 1, ADDITIONAL: 0

;; QUESTION SECTION:
;PC3.mylab.com.            IN    AAAA

;; AUTHORITY SECTION:
mylab.com.        86400    IN    SOA    PC4.mylab.com. hostmaster.mylab.com. 1 28800 7200 604800 86400

Received 82 bytes from 127.0.0.1#53 in 1 ms
Trying "PC3.mylab.com"
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 31728
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 1, ADDITIONAL: 0

;; QUESTION SECTION:
;PC3.mylab.com.            IN    MX

;; AUTHORITY SECTION:
mylab.com.        86400    IN    SOA    PC4.mylab.com. hostmaster.mylab.com. 1 28800 7200 604800 86400

Received 82 bytes from 127.0.0.1#53 in 2 ms
--------------------------------------------------------------------------------

[Exercise 4]
We started wireshark on PC1 interface 0 and interface 1.  There were no DNS
traffic when there were no requests.  We then issued some ping commands:

    on PC1: `ping -c 3 PC3.mylab.com`
    on PC1: `ping -c 3 localhost`
    on PC1: `ping -c 3 tcpip-lab.net`

Question 5-a
Yes, all commands generated DNS messages no matter it was a successful ping or
not.  The first two commands went through, while the third command failed.

Question 5-b
We observed that when the name appeared for the first time, DNS encode the full
name.  When the same name or part of the same name appeared later, DNS used a
pointer instead of encoding the entire name.

For example, I randomly picked a DNS packet.  It used "03 50 43 33 05 6d 79 6c
61 62 03 63 6f 6d 00" to encode "PC3.mylab.com" for the first time.  The second
and third time DNS used "c0 0c" to encode a pointer ".." for the same name.

Question 5-c
The last ping command `ping -c 3 tcpip-lab.net` failed.  We observed that there
were four DNS request queries "Standard query A tcpip-lab.net" sent and four DNS
response received "Standard query fresponse, server failure".  It seemed like
after the third retransmission, it gave up.

Question 5-d
We tried to send out two same queries one after the other.  We observed that PC1
did not cache the previous response, instead it sent out requests every time.

Question 5-e
The queries were recursive queries.  The client sent out message requesting
recursive type of queries if possible.  The server sent back message agreed with it.
--------------------------------------------------------------------------------
  Domain Name System (query)
  :
  Flags: 0x0100 (Standard query)
    :
    .... ...1 .... .... = Recursion desired: Do query recursively
    :
--------------------------------------------------------------------------------
  Domain Name System (response)
  :
  Flags: 0x8580 (Standard query response, No error)
    :
    .... ...1 .... .... = Recursion desired: Do query recursively
    :
--------------------------------------------------------------------------------


[Exercise 5]
In this exercise we ran the caching-only DNS server.  We started the wireshark
on PC1 both interface 0 and interface 1.  The /etc/named.conf and db.cache file
on PC2 were set up using the files prepared in the prelab section.  They were
attached as below.
-------------------------
/etc/named.conf on PC2
--------------------------------------------------------------------------------
## named.conf - configuration for bind
#
# Generated automatically by bindconf, alchemist et al.

options {
    directory "/var/named/";
};

zone  "." {
    type hint;
    file  "part3/db.cache";
#        type forward;
#        forward only;
#        forwarders { 10.0.1.41; };
};

zone  "0.0.127.in-addr.arpa" {
    type master;
    file  "part3/db.127.0.0";
};

--------------------------------------------------------------------------------
----------------
db.cache on PC2
--------------------------------------------------------------------------------
; The rest of the contents were all commented out.
:
.                        3600000  IN  NS    A.ROOT-SERVERS.EDU.
A.ROOT-SERVERS.EDU.      3600000      A     10.0.1.41
:
--------------------------------------------------------------------------------

We also deleted the single entry "nameserver 10.0.1.41" from file
/etc/resolv.conf.  We then started a DNS sever on PC2 using command
`/etc/rc.d/init.d/named start`  We issued some ping commands

    on PC2 `ping -c 3 PC3.mylab.com`
    on PC2 `ping -c 3 PC3.mylab.com`
    on PC2 `ping -c 3 localhost`

Question 5-a
We observed that only the first ping command generated DNS traffic.

Question 5-b
Yes,  a "Standard query A PC3.mylab.com" request query and a "Standard query
response A 10.0.2.32 A 10.0.1.31" were generated.

Question 5-c
The difference was the DNS sever that ran caching-only did not send out query
every time.  Instead it used the cached information.  In the previous exercise
we observed request query packets for all commands.

Question 5-d
We observed that the retransmission happend 7 times here.  There were 8
"Standard query A tcpip-lab.net" requests sent and 8 DNS response received
"Standard query fresponse, server failure".  In the previous exercise the number
was 4.


[Exercise 6A]
We used another set of configuration file prepared in the prelab section for
this exercise.  We first cleaned up the /etc/hosts and /etc/resolv.conf files on
all four PCs.  We commented out all the name mapping entries and deleted the
single entry "nameserver 10.0.1.41" in the second file.  We used the following
commands to copy the correct configuration files into the right place.

    on PC#: `cp /etc/named-part6.conf /etc/named.conf`
    on PC#: `pkill named`
    on PC#: `/etc/rc.d/init.d.named start`

We configured the Routers to enable a specific DNS, 10.0.1.41.  We also cleared
up the cached DNS information.

Router#
    yourname# config t
    yourname(config)# ip name-sever 10.0.1.41 255.255.255.0
    yourname(config-if)# end
    yourname# show hosts
    yourname# clear host *

[Exercise 6B]
Question 1
Attached below were the db.cache files on the PCs for this exercise.  PC1 as the
root server had theinformation of all other PCs.  Other PCs had infermation
about the root server, 10.0.1.11.  In the previous exercise, the contents of the
cache file were basically commented out.
----------------
db.cache on PC1
--------------------------------------------------------------------------------
$TTL 86400
.    IN      SOA     PC1.mylab.com.    hostmaster.mylab.com. (
            1 ; serial
            28800 ; refresh
            7200 ; retry
            604800 ; expire
            86400 ; ttl
            )

;
.        IN      NS      PC1.mylab.com.
;
PC1.mylab.com.          IN  A     10.0.1.11
;
net.                IN  NS    PC3.mylab.com.
PC3.mylab.com.          IN  A     10.0.1.31
;
com.                    IN  NS    PC2.mylab.com.
PC2.mylab.com.          IN  A     10.0.1.21
;
1.0.10.in-addr.arpa.    IN  NS    PC2.mylab.com.
;
2.0.10.in-addr.arpa.    IN  NS    PC3.mylab.com.
--------------------------------------------------------------------------------
----------------
db.cache on PC2
--------------------------------------------------------------------------------
.                        3600000  IN  NS    A.ROOT-SERVERS.EDU.
A.ROOT-SERVERS.EDU.      3600000      A     10.0.1.11
--------------------------------------------------------------------------------
----------------
db.cache on PC3
--------------------------------------------------------------------------------
.                        3600000  IN  NS    A.ROOT-SERVERS.EDU.
A.ROOT-SERVERS.EDU.      3600000      A     10.0.1.11
--------------------------------------------------------------------------------
----------------
db.cache on PC4
--------------------------------------------------------------------------------
.                        3600000  IN  NS    A.ROOT-SERVERS.EDU.
A.ROOT-SERVERS.EDU.      3600000      A     10.0.1.11
--------------------------------------------------------------------------------

Question 2
The zone "." entry was different between PC1 and other PCs.  The type was
"master" on PC1 and was "hint" on other PCs.
-------
on PC1
--------------------------------------------------------------------------------
zone  "." {
    type master;
    file  "part6/db.cache";
};
--------------------------------------------------------------------------------
------------
on other PCs
--------------------------------------------------------------------------------
zone  "." {
    type hint;
    file  "part6/db.cache";
};
--------------------------------------------------------------------------------

Question 3
Attached below are the glue records for PC1, PC2, and PC3.  PC4 didn't have any
glue record because it was on the bottom of the lab DNS sever hierarchy.
--------------------
Glue records on PC1
--------------------------------------------------------------------------------
net.                IN  NS    PC3.mylab.com.
PC3.mylab.com.          IN  A     10.0.1.31
;
com.                    IN  NS    PC2.mylab.com.
PC2.mylab.com.          IN  A     10.0.1.21
--------------------------------------------------------------------------------
--------------------
Glue records on PC2
--------------------------------------------------------------------------------
mylab.com.          IN  NS    PC4.mylab.com.
PC4.mylab.com.          IN  A     10.0.1.41
--------------------------------------------------------------------------------
--------------------
Glue records on PC3
--------------------------------------------------------------------------------
lab8.net.           IN  NS    PC3.mylab.com.
PC3.mylab.com.          IN  A     10.0.1.31
--------------------------------------------------------------------------------
Valid HTML 4.01 Valid CSS