Difference between revisions of "OPS335 DNS Lab"

From CDOT Wiki
Jump to: navigation, search
Line 3: Line 3:
 
===Purpose===
 
===Purpose===
  
In this lab you will configure a Linux machine to be a DNS server for the rest of the machines in your intranet. You'll use your Seneca-ID as your domain with IP addresses in the range 192.168.X.1 - 192.168.X.254. The server will handle all queries for names in the <seneca-id>.org domain and all reverse lookups for addresses in the given range of local IP numbers. The server will pass DNS queries for other names and addresses out to the Internet (i.e. to Seneca's DNS server).
+
In this lab you will configure a Linux machine to be a DNS server for the rest of the machines in your intranet. You'll '''use <u>your</u> Seneca-ID as your domain with IP addresses in the range 192.168.X.1 - 192.168.X.254'''. The server will handle all queries for names in the '''seneca-id.org''' domain and all reverse lookups for addresses in the given range of local IP numbers. The server will pass DNS queries for other names and addresses out to the Internet (i.e. to Seneca's DNS server).
  
  
Line 20: Line 20:
  
 
  Fully Qualified Domain Name  IP Address
 
  Fully Qualified Domain Name  IP Address
  host.<seneca-id>.org          192.168.X.1
+
  host.'''seneca-id'''.org          192.168.X.1
  vm1.<seneca-ed>.org          192.168.X.2
+
  vm1.'''seneca-id'''.org          192.168.X.2
  vm2.<seneca-id>.org          192.168.X.3
+
  vm2.'''seneca-id'''.org          192.168.X.3
  vm3.<seneca-id>.org          192.168.X.4
+
  vm3.'''seneca-id'''.org          192.168.X.4
  
 
<br />
 
<br />
Line 42: Line 42:
 
#Ensure you are connected to the Internet. Use Firefox to authenticate yourself so you can surf the web outside of the Seneca domain.
 
#Ensure you are connected to the Internet. Use Firefox to authenticate yourself so you can surf the web outside of the Seneca domain.
 
#Use yum to update your system if necessary:<br><pre>yum update</pre>
 
#Use yum to update your system if necessary:<br><pre>yum update</pre>
#If you have not already done so, permanently set the host name of the 'host' machine to "'''host.seneca-id.org'''" (without the < and >, they are just there to tell you put your seneca-id there instead of the literal word seneca-id).
+
#If you have not already done so, permanently set the host name of the 'host' machine to "'''host.seneca-id.org'''" (without the < and >, they are just there to tell you put '''your seneca-id''' there instead of the literal word ''seneca-id'')!
  
  
Line 67: Line 67:
 
   notify NO;
 
   notify NO;
 
   };
 
   };
   zone "<seneca-id>.org" {
+
   zone "'''seneca-id'''.org" {
 
   type master;
 
   type master;
   file "mydb-for-<seneca-id>-org";
+
   file "mydb-for-'''seneca-id'''-org";
 
   notify NO;
 
   notify NO;
 
   };
 
   };
  
<ol><li value="2">Set the filesystem permissions for the above file to 644</li><li>Now edit '''/var/named/mydb-for-<seneca-id>-org''' and enter the following: But use your own X value where applicable.  Note: if you copy-paste this code, there should be NO leading spaces before the first column of text (and [http://www.zytrax.com/books/dns/ch8/ here's a bit of documentation] to explain what the contents of this file are).</li></ol>
+
<ol><li value="2">Set the filesystem permissions for the above file to 644</li><li>Now edit '''/var/named/mydb-for-'''seneca-id'''-org''' and enter the following: But use your own X value where applicable.  Note: if you copy-paste this code, there should be NO leading spaces before the first column of text (and [http://www.zytrax.com/books/dns/ch8/ here's a bit of documentation] to explain what the contents of this file are).</li></ol>
  
 
   $TTL 3D
 
   $TTL 3D
   @ IN SOA vm1.<seneca-id>.org. webmaster.<seneca-id>.org.(
+
   @ IN SOA vm1.'''seneca-id'''.org. webmaster.'''seneca-id'''.org.(
 
   1 ; Serial
 
   1 ; Serial
 
   8H ; Refresh
 
   8H ; Refresh
Line 83: Line 83:
 
   1D ; Negative Cache TTL
 
   1D ; Negative Cache TTL
 
   );
 
   );
   @ IN NS vm1.<seneca-id>.org.
+
   @ IN NS vm1.'''seneca-id'''.org.
 
   vm1 IN A 192.168.X.2
 
   vm1 IN A 192.168.X.2
  
Line 89: Line 89:
  
 
   $TTL 3D
 
   $TTL 3D
   @ IN SOA vm1.<seneca-id>.org. webmaster.<seneda-id>.org. (  
+
   @ IN SOA vm1.'''seneca-id'''.org. webmaster.<seneda-id>.org. (  
 
   1 ; Serial
 
   1 ; Serial
 
   8H ; Refresh
 
   8H ; Refresh
Line 96: Line 96:
 
   1D ; Negative Cache TTL
 
   1D ; Negative Cache TTL
 
   );
 
   );
   @ IN NS vm1.<seneca-id>.org.
+
   @ IN NS vm1.'''seneca-id'''.org.
 
   2 IN PTR vm1.<seneda-id>.org.
 
   2 IN PTR vm1.<seneda-id>.org.
  
Line 102: Line 102:
  
 
  nameserver 192.168.X.2
 
  nameserver 192.168.X.2
  search <seneca-id>.org
+
  search '''seneca-id'''.org
  
 
<ol><li value="6">Note that this is only temporary, and will go away when the machine reboots.  There is another step later that will make this change permanently.</li><li>Start your DNS server with the command:<br><pre>systemctl start named.service</pre></li><li>Check that your name server is running:<br><pre>ps ax | grep named</pre>  or  <pre>systemctl status named.service</pre></li><li>Set the service to start automatically when this virtual machine boots.</li><li>When starting or restarting your name server view the log file (/var/log/messages) to ensure it started without error.</li><li>Try a few lookups:</li></ol>
 
<ol><li value="6">Note that this is only temporary, and will go away when the machine reboots.  There is another step later that will make this change permanently.</li><li>Start your DNS server with the command:<br><pre>systemctl start named.service</pre></li><li>Check that your name server is running:<br><pre>ps ax | grep named</pre>  or  <pre>systemctl status named.service</pre></li><li>Set the service to start automatically when this virtual machine boots.</li><li>When starting or restarting your name server view the log file (/var/log/messages) to ensure it started without error.</li><li>Try a few lookups:</li></ol>
  
   host host.<seneca-id>.org
+
   host host.'''seneca-id'''.org
   host vm1.<seneca-id>.org
+
   host vm1.'''seneca-id'''.org
   host vm2.<seneca-id>.org
+
   host vm2.'''seneca-id'''.org
   host vm3.<seneda-id>.org
+
   host vm3.'''seneca-id'''.org
 
   host cbc.ca
 
   host cbc.ca
 
<ol><li value="12">Now try a few reverse lookups:</li></ol>
 
<ol><li value="12">Now try a few reverse lookups:</li></ol>
Line 133: Line 133:
 
#Edit the /etc/resolv.conf file and enter the following:
 
#Edit the /etc/resolv.conf file and enter the following:
 
   nameserver 192.168.X.2
 
   nameserver 192.168.X.2
   domain <seneca-id>.org
+
   domain '''seneca-id'''.org
 
<ol><li value="3">Now try the commands:</li></ol>
 
<ol><li value="3">Now try the commands:</li></ol>
   host host.<seneca-id>.org
+
   host host.'''seneca-id'''.org
   host vm1.<seneca-id>.org
+
   host vm1.'''seneca-id'''.org
   host vm2.<seneca-id>.org
+
   host vm2.'''seneca-id'''.org
   host vm3.<seneca-id>.org
+
   host vm3.'''seneca-id'''.org
 
   host yahoo.ca
 
   host yahoo.ca
  

Revision as of 12:34, 30 January 2016

DOMAIN NAME SYSTEM (DNS)

Purpose

In this lab you will configure a Linux machine to be a DNS server for the rest of the machines in your intranet. You'll use your Seneca-ID as your domain with IP addresses in the range 192.168.X.1 - 192.168.X.254. The server will handle all queries for names in the seneca-id.org domain and all reverse lookups for addresses in the given range of local IP numbers. The server will pass DNS queries for other names and addresses out to the Internet (i.e. to Seneca's DNS server).


DNS Resources


PREPARATION FOR DNS LAB

Prior to beginning this lab ensure that the firewall rules you created for your machines in lab 2a are loading when they boot. If they are not, REPAIR them now.
You will be building on those rules for the rest of the course.

You are going to populate your server with the following records (correct the static addresses in the /etc/hosts file for all machines - host and vms if necessary):

Fully Qualified Domain Name  IP Address
host.seneca-id.org           192.168.X.1
vm1.seneca-id.org           192.168.X.2
vm2.seneca-id.org           192.168.X.3
vm3.seneca-id.org           192.168.X.4


Here's what your network will look like:
Lab03.png


Record steps, commands, and your observations from this section in your OPS335 lab log-book


INVESTIGATION 1: CONFIGURING DNS (SERVER-SIDE)

--- insert purpose here ---


Perform these steps on your gateway/firewall

  1. Start up your host machine, open a terminal window and "su -" to root. This PC will be named "host". It will be your gateway/firewall.
  2. Ensure you are connected to the Internet. Use Firefox to authenticate yourself so you can surf the web outside of the Seneca domain.
  3. Use yum to update your system if necessary:
    yum update
  4. If you have not already done so, permanently set the host name of the 'host' machine to "host.seneca-id.org" (without the < and >, they are just there to tell you put your seneca-id there instead of the literal word seneca-id)!


Perform these steps on your VM1

  1. Start your VM 1. This machine will be the domain name server for your intranet.
  2. On the VM, Use yum to update your system if necessary:
    yum update
  3. Use yum to install the DNS server:
    yum install bind

Edit /etc/named.conf

  1. Still on the virtual machine create a back up of the existing '/etc/named.conf', delete the existing contents and add the following, but use your own X value where applicable. (Here is documentation for all the available options in named.conf, look up the ones that you're using so that you know exactly what they do.
 options {
 	directory "/var/named/";
	allow-query {127.0.0.1; 192.168.X.0/24;};
	forwarders { 142.204.33.54;};
 };
 zone "localhost" {
 	type master;
 	file "named.localhost";
 	notify NO;
 };
 zone "X.168.192.in-addr.arpa" {
 	type master;
 	file "mydb-for-192-168-X";
 	notify NO;
 };
 zone "seneca-id.org" {
 	type master;
 	file "mydb-for-seneca-id-org";
 	notify NO;
 };
  1. Set the filesystem permissions for the above file to 644
  2. Now edit /var/named/mydb-for-seneca-id-org and enter the following: But use your own X value where applicable. Note: if you copy-paste this code, there should be NO leading spaces before the first column of text (and here's a bit of documentation to explain what the contents of this file are).
 $TTL	3D
 @	IN	SOA	vm1.seneca-id.org.	webmaster.seneca-id.org.(
 			1	; Serial
 			8H	; Refresh
 			2H	; Retry
 			1W	; Expire
 			1D	; Negative Cache TTL
 );
 @	IN	NS	vm1.seneca-id.org.
 vm1	IN	A	192.168.X.2
  1. Next, edit /var/named/mydb-for-192-168-X and enter the following:
 $TTL	3D
 @	IN	SOA	vm1.seneca-id.org.	webmaster.<seneda-id>.org. ( 
 			1	; Serial
 			8H	; Refresh
 			2H	; Retry
 			1W	; Expire
 			1D	; Negative Cache TTL
 );
 @	IN	NS	vm1.seneca-id.org.
 2	IN	PTR	vm1.<seneda-id>.org.
  1. Now set up your resolver to point to itself. Edit /etc/resolv.conf, delete what's there and enter this data instead. Remember to use your value for X:
nameserver 192.168.X.2
search seneca-id.org
  1. Note that this is only temporary, and will go away when the machine reboots. There is another step later that will make this change permanently.
  2. Start your DNS server with the command:
    systemctl start named.service
  3. Check that your name server is running:
    ps ax | grep named
    or
    systemctl status named.service
  4. Set the service to start automatically when this virtual machine boots.
  5. When starting or restarting your name server view the log file (/var/log/messages) to ensure it started without error.
  6. Try a few lookups:
 host host.seneca-id.org
 host vm1.seneca-id.org
 host vm2.seneca-id.org
 host vm3.seneca-id.org
 host cbc.ca
  1. Now try a few reverse lookups:
 host 192.168.X.1
 host 192.168.X.2
 host 192.168.X.3
 host 192.168.X.4
  1. You'll notice that only the queries for vm1 worked. That's because you only have the resource records for vm1. Go back to the zone files and add the appropriate records for your other machines.
  2. Once you have done so, restart the service and try querying for those records again
  3. Modify your firewall to allow the other machines to query your new DNS server.


Record troubleshooting checklist for INVESTIGATION 1 in your OPS335 lab log-book


INVESTIGATION 2: CONFIGURING DNS (CLIENT SIDE)

--- insert purpose here ---


Perform the following steps on your Centos host:

  1. Edit the /etc/resolv.conf file and enter the following:
 nameserver 192.168.X.2
 domain seneca-id.org
  1. Now try the commands:
 host host.seneca-id.org
 host vm1.seneca-id.org
 host vm2.seneca-id.org
 host vm3.seneca-id.org
 host yahoo.ca


 host 192.168.X.1
 host 192.168.X.2
 host 192.168.X.3
 host 192.168.X.4
  1. Now configure your other virtual machines to also use VM 1 as their DNS server.
  2. Also on the VMs use a text browser such as lynx to access the Web.

    (NOTE: you do not need to authenticate yourself through SeneNet on this machine, as they connects through the host which is already authenticated)
  3. On all machines in your network, experiment with the following commands. Be sure to use several different command options to learn and understand how they work:
 host
 dig
 nslookup


Important.png
This final step is important.
Failure to complete this will cause problems with future labs.
  1. Finally, ensure each machine is using the static IP address and hostname that matches what the DNS server now claims they use. Double check that this address, and the ability to search using your DNS server, persist after reboot.
  2. On each machine add the entry to your interface configuration file that will cause it to permanently use your VM 1 as its primary DNS server.
  3. If you have made any changes to the /etc/hosts file, undo them. Your machines must be relying on your DNS server.
  4. Ensure that your machines can ping and SSH to each other by IP address and by name (hostname only, and hostname with domain).
  5. Modify the ifcfg file on your host so that it will still get a DHCP address, but ignore the DNS information given to it by the DHCP server in favour of the domain and DNS information you provide it.


Record troubleshooting checklist for INVESTIGATION 2 in your OPS335 lab log-book


COMPLETING THE LAB

Students should be prepared with all required commands (system information) displayed in a terminal (or multiple terminals) prior to calling the instructor for signoff.

Upon completion of this lab you have a DNS server in your network and every machine is using it to resolve internal and external hostnames and ip addresses.

You have now gained experience with some common configuration settings for named, as well as common resource records.

Note: Due to the changes made in this lab, you will now need your VM 1 running in order for you host to be able to contact any other machines.

Arrange evidence (command output) for each of these items on your screen, then ask your instructor to review them and sign off on the lab's completion:

x.


EXPLORATION QUESTIONS

  1. What iptables rules apply to DNS?
  2. Under what circumstances does DNS use TCP vs UDP?
  3. What is a zone file and what is it used for?
  4. Name the zone files used in this lab, and their purpose.
  5. What file did you edit to set a static IP address?
  6. What parameter did you set in that file to tell the machine to refer to your own DNS server?
  7. What is the purpose of /etc/resolv.conf?
  8. What is meant by the term "negative cache"?
  9. What are MX records used for?
  10. What security features are available for DNS?