Difference between revisions of "OPS335 DNS Lab"

From CDOT Wiki
Jump to: navigation, search
m (Added note about permanent changes to DNS server.)
(Updating for Winter 2014 semester. Moved DNS service to VM 1.)
Line 1: Line 1:
 
[[Category:OPS335]][[Category:OPS335 Labs]]
 
[[Category:OPS335]][[Category:OPS335 Labs]]
 
==Domain Name System==
 
==Domain Name System==
In this lab you will configure a Linux host to be a DNS server for the rest of the machines in your intranet. You'll use your learn 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 <learnid>.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).
+
===Objectives===
 +
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 learn 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 <learnid>.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).
 
===Instructions===
 
===Instructions===
Prior to beginning this lab ensure that the iptables rules you created for your virtual machines in lab 2 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, however you may remove the rules that are preventing your host from ssh'ing to your VMs.
+
Prior to beginning this lab ensure that the iptables rules you created for your virtual machines in lab 2 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.  Remove the rules that are preventing your host from using ssh and ping to contact your VMs.
  
 
You're going to populate your server with the following records:
 
You're going to populate your server with the following records:
  
 
  Fully Qualified Domain Name  IP Address
 
  Fully Qualified Domain Name  IP Address
  f17.<learnid>.org           192.168.X.1
+
  host.<learnid>.org           192.168.X.1
 
  vm01.<learnid>.org          192.168.X.2
 
  vm01.<learnid>.org          192.168.X.2
 
  vm02.<learnid>.org          192.168.X.3
 
  vm02.<learnid>.org          192.168.X.3
Line 18: Line 19:
 
===Perform these steps on your gateway/firewall/DNS machine===
 
===Perform these steps on your gateway/firewall/DNS machine===
  
*Start up your host machine, open a terminal window and "su -" to root. This PC will be named "f17". It will be your gateway/firewall as well as the domain name server for your intranet.
+
*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.
 
*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.
 
*Use yum to update your system if necessary.
 
  yum update
 
  yum update
*Use yum to install the DNS server.  
+
*If you have not already done so, permanently set the host name of the 'host' machine to "host.<learnid>.org" (without the < and >, they are just there to tell you put your learnid there instead of the literal word learnid).
 +
 
 +
*Start your VM 1.  This machine will be the domain name server for your intranet.
 +
*On the VM
 +
**Use yum to update your system if necessary.
 +
yum update
 +
**Use yum to install the DNS server.  
 
  yum install bind
 
  yum install bind
*If you have not already done so, permanently set the host name of the 'host' machine to "f17.<learnid>.org" (without the < and >, they are just there to tell you put your learnid there instead of the literal word learnid).
 
 
 
===Edit /etc/named.conf===
 
===Edit /etc/named.conf===
*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.
+
*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.
 
   options {
 
   options {
 
   directory "/var/named/";
 
   directory "/var/named/";
Line 65: Line 70:
  
 
   $TTL 3D
 
   $TTL 3D
   @ IN SOA f17.<learnid>.org. <learnid>.<learnid>.org.(
+
   @ IN SOA host.<learnid>.org. webmaster.<learnid>.org.(
 
   1 ; Serial
 
   1 ; Serial
 
   8H ; Refresh
 
   8H ; Refresh
Line 72: Line 77:
 
   1D ; Negative Cache TTL
 
   1D ; Negative Cache TTL
 
   );
 
   );
   @ IN NS f17.<learnid>.org.
+
   @ IN NS vm01.<learnid>.org.
   f17 IN A 192.168.X.1
+
   host IN A 192.168.X.1
 
   vm01 IN A 192.168.X.2
 
   vm01 IN A 192.168.X.2
 
   vm02 IN A 192.168.X.3
 
   vm02 IN A 192.168.X.3
Line 81: Line 86:
  
 
   $TTL 3D
 
   $TTL 3D
   @ IN SOA f17.<learnid>.org. <learnid>.<learnid>.org. (  
+
   @ IN SOA vm01.<learnid>.org. webmaster.<learnid>.org. (  
 
   1 ; Serial
 
   1 ; Serial
 
   8H ; Refresh
 
   8H ; Refresh
Line 88: Line 93:
 
   1D ; Negative Cache TTL
 
   1D ; Negative Cache TTL
 
   );
 
   );
   @ IN NS f17.<learnid>.org.
+
   @ IN NS vm01.<learnid>.org.
   1 IN PTR f17.<learnid>.org.
+
   1 IN PTR host.<learnid>.org.
 
   2 IN PTR vm01.<learnid>.org.
 
   2 IN PTR vm01.<learnid>.org.
 
   3 IN PTR vm02.<learnid>.org.
 
   3 IN PTR vm02.<learnid>.org.
Line 96: Line 101:
 
*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.
 
*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.1
+
  nameserver 192.168.X.2
 
  search <learnid>.org
 
  search <learnid>.org
  
Line 110: Line 115:
 
*When starting or restarting your name server view the log file (/var/log/messages) to ensure it started without error.
 
*When starting or restarting your name server view the log file (/var/log/messages) to ensure it started without error.
 
*Try a few lookups:
 
*Try a few lookups:
   host f17.<learnid>.org
+
   host host.<learnid>.org
 
   host vm01.<learnid>.org
 
   host vm01.<learnid>.org
 
   host vm02.<learnid>.org
 
   host vm02.<learnid>.org
Line 122: Line 127:
 
   host 192.168.X.4
 
   host 192.168.X.4
  
===Perform these steps on your Intranet machine===
+
*Add rules to your iptables to allow the other machines in your network to query your new DNS server.
Use virt-manager on Fedora 17 and open vm01.
 
  
*On this machine edit the /etc/resolv.conf file and enter the following:
+
===DNS client configuration===
 
+
*Perform the following steps on your Centos host.
   nameserver 192.168.X.1
+
**Edit the /etc/resolv.conf file and enter the following:
 +
   nameserver 192.168.X.2
 
   domain <learnid>.org
 
   domain <learnid>.org
*Now try the commands
+
**Now try the commands
   host f17.<learnid>.org
+
   host host.<learnid>.org
 
   host vm01.<learnid>.org
 
   host vm01.<learnid>.org
 
   host vm02.<learnid>.org
 
   host vm02.<learnid>.org
 
   host vm03.<learnid>.org
 
   host vm03.<learnid>.org
 
   host yahoo.ca
 
   host yahoo.ca
*And the commands
+
**And the commands
 
   host 192.168.X.1
 
   host 192.168.X.1
 
   host 192.168.X.2
 
   host 192.168.X.2
 
   host 192.168.X.3
 
   host 192.168.X.3
 
   host 192.168.X.4
 
   host 192.168.X.4
+
 
*Now, still on the second machine, use a text browser such as lynx to access the Web.
+
*Now configure your other virtual machines to also use VM 1 as their DNS server.
(NOTE: you do not need to authenticate yourself through SeneNet on this machine, as it connects through the f17 host which is authenticated)
+
*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)
  
 
*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.
 
*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
 
   host
 
   dig
 
   dig
Line 152: Line 157:
  
 
{{Admon/important| This final step is important. | Failure to complete this will cause problems with future labs.}}
 
{{Admon/important| This final step is important. | Failure to complete this will cause problems with future labs.}}
*Finally, configure each machine to use a static IP address and hostname that matches what the DNS server now claims it uses.  Double check that this address, and the ability to search using your DNS server, persist after reboot.
+
*Finally, configure each machine to use a 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.
*Add the entry to your interface configuration file that will cause it to permanently use your host as its primary DNS server.
+
*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.
 
*If you have made any changes to the /etc/hosts file, undo them.  Your machines must be relying on your DNS server.
 
*If you have made any changes to the /etc/hosts file, undo them.  Your machines must be relying on your DNS server.
 
*Ensure that your machines can ping and SSH to each other by IP address and by name (hostname only, and hostname with domain).
 
*Ensure that your machines can ping and SSH to each other by IP address and by name (hostname only, and hostname with domain).
Line 159: Line 164:
  
 
==Completing the Lab==
 
==Completing the Lab==
 +
Upon completion of this lab you should have a DNS server in your network.  Ensure that the service starts automatically when the VM boots and that your other machines are able to use it to resolve internal and external hostnames and ip addresses.  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.
 +
 
Answer the following questions in your lab book:
 
Answer the following questions in your lab book:
 
 
#What iptables rules apply to DNS?
 
#What iptables rules apply to DNS?
 
#Under what circumstances does DNS use TCP vs UDP?
 
#Under what circumstances does DNS use TCP vs UDP?
Line 169: Line 175:
 
#What is the purpose of /etc/resolv.conf?
 
#What is the purpose of /etc/resolv.conf?
 
#What is meant by the term "negative cache"?
 
#What is meant by the term "negative cache"?
#What are MX records used for? Add the needed entry to point the MX record to VM02.
+
#What are MX records used for?
 
#What security features are available for DNS?
 
#What security features are available for DNS?

Revision as of 15:16, 30 December 2013

Domain Name System

Objectives

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 learn 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 <learnid>.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).

Instructions

Prior to beginning this lab ensure that the iptables rules you created for your virtual machines in lab 2 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. Remove the rules that are preventing your host from using ssh and ping to contact your VMs.

You're going to populate your server with the following records:

Fully Qualified Domain Name  IP Address
host.<learnid>.org           192.168.X.1
vm01.<learnid>.org           192.168.X.2
vm02.<learnid>.org           192.168.X.3
vm03.<learnid>.org           192.168.X.4


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

Perform these steps on your gateway/firewall/DNS machine

  • 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.
  • 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.
yum update
  • If you have not already done so, permanently set the host name of the 'host' machine to "host.<learnid>.org" (without the < and >, they are just there to tell you put your learnid there instead of the literal word learnid).
  • Start your VM 1. This machine will be the domain name server for your intranet.
  • On the VM
    • Use yum to update your system if necessary.
yum update
    • Use yum to install the DNS server.
yum install bind

Edit /etc/named.conf

  • 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.
 options {
 	directory "/var/named/";
	allow-query {127.0.0.1; 192.168.X.0/24;};
	forwarders { 142.204.1.2; 142.204.43.43;};
 };
 zone "localhost" {
 	type master;
 	file "localhost.zone";
 	notify NO;
 };
 zone "X.168.192.in-addr.arpa" {
 	type master;
 	file "mydb-for-192-168-X";
 	notify NO;
 };
 zone "<learnid>.org" {
 	type master;
 	file "mydb-for-<learnid>-org";
 	notify NO;
 };
  • Set the filesystem permissions for the above file to 644
  • Create the file /var/named/localhost.zone and enter the following (note: if you copy-paste this code, there should be NO leading spaces before the "@" or the "$"):
 $TTL	3D
 @	IN	SOA	f17.<learnid>.org.	<learnid>.<learnid>.org. ( 
 			1	; Serial
 			8H	; Refresh
 			2H	; Retry
 			1W	; Expire
 			1D	; Negative Cache TTL
 ); 
 @	IN	NS	localhost.
	IN	A	127.0.0.1
  • Now edit /var/named/mydb-for-<learnid>-org and enter the following: But use your own X value where applicable.
 $TTL	3D
 @	IN	SOA	host.<learnid>.org.	webmaster.<learnid>.org.(
 			1	; Serial
 			8H	; Refresh
 			2H	; Retry
 			1W	; Expire
 			1D	; Negative Cache TTL
 );
 @	IN	NS	vm01.<learnid>.org.
 host	IN	A	192.168.X.1
 vm01	IN	A	192.168.X.2
 vm02	IN	A	192.168.X.3
 vm03	IN	A	192.168.X.4
  • Next, edit /var/named/mydb-for-192-168-X and enter the following:
 $TTL	3D
 @	IN	SOA	vm01.<learnid>.org.	webmaster.<learnid>.org. ( 
 			1	; Serial
 			8H	; Refresh
 			2H	; Retry
 			1W	; Expire
 			1D	; Negative Cache TTL
 );
 @	IN	NS	vm01.<learnid>.org.
 1	IN	PTR	host.<learnid>.org.
 2	IN	PTR	vm01.<learnid>.org.
 3	IN	PTR	vm02.<learnid>.org.
 4	IN	PTR	vm03.<learnid>.org.
  • 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 <learnid>.org
  • 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.
  • Start your DNS server with the command
systemctl start named.service
  • Check that your name server is running
ps ax | grep named
  • or
systemctl status named.service
  • When starting or restarting your name server view the log file (/var/log/messages) to ensure it started without error.
  • Try a few lookups:
 host host.<learnid>.org
 host vm01.<learnid>.org
 host vm02.<learnid>.org
 host vm03.<learnid>.org
 host cbc.ca
  • 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
  • Add rules to your iptables to allow the other machines in your network to query your new DNS server.

DNS client configuration

  • Perform the following steps on your Centos host.
    • Edit the /etc/resolv.conf file and enter the following:
 nameserver 192.168.X.2
 domain <learnid>.org
    • Now try the commands
 host host.<learnid>.org
 host vm01.<learnid>.org
 host vm02.<learnid>.org
 host vm03.<learnid>.org
 host yahoo.ca
    • And the commands
 host 192.168.X.1
 host 192.168.X.2
 host 192.168.X.3
 host 192.168.X.4
  • Now configure your other virtual machines to also use VM 1 as their DNS server.
  • 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)
  • 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.
  • Finally, configure each machine to use a 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.
  • 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.
  • If you have made any changes to the /etc/hosts file, undo them. Your machines must be relying on your DNS server.
  • Ensure that your machines can ping and SSH to each other by IP address and by name (hostname only, and hostname with domain).
  • Add PEERDNS=no to the ifcfg file on your host. This tells it to ignore the DNS information given to it by the DHCP server, so it will use the domain and DNS information you provide it.

Completing the Lab

Upon completion of this lab you should have a DNS server in your network. Ensure that the service starts automatically when the VM boots and that your other machines are able to use it to resolve internal and external hostnames and ip addresses. 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.

Answer the following questions in your lab book:

  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?