Warning: preg_match(): Delimiter must not be alphanumeric, backslash, or NUL in /var/www/html/activities/books/networking/labbook/exp/emulab/exp18.1.php on line 2

Warning: preg_match(): Delimiter must not be alphanumeric, backslash, or NUL in /var/www/html/activities/books/networking/labbook/exp/emulab/exp18.1.php on line 2

Warning: preg_match(): Delimiter must not be alphanumeric, backslash, or NUL in /var/www/html/activities/books/networking/labbook/exp/emulab/exp18.1.php on line 3

Warning: preg_match(): Delimiter must not be alphanumeric, backslash, or NUL in /var/www/html/activities/books/networking/labbook/exp/emulab/exp18.1.php on line 4

Warning: preg_match(): Delimiter must not be alphanumeric, backslash, or NUL in /var/www/html/activities/books/networking/labbook/exp/emulab/exp18.1.php on line 5

Warning: preg_match(): Delimiter must not be alphanumeric, backslash, or NUL in /var/www/html/activities/books/networking/labbook/exp/emulab/exp18.1.php on line 8

Warning: include(net.top.html): Failed to open stream: No such file or directory in /var/www/html/activities/books/networking/labbook/exp/emulab/exp18.1.php on line 12

Warning: include(): Failed opening 'net.top.html' for inclusion (include_path='.:/usr/local/lib/php') in /var/www/html/activities/books/networking/labbook/exp/emulab/exp18.1.php on line 12
Hands-On Networking: Experiment 18.1 (An Emulab Approach) Home > Student > Experiments > Emulab > 18.1

Chapter 18: Experiment 18.1 - Configure A DNS Server

Here is the script that sets up the network:

  
#generated by Netbuild 1.03
set ns [new Simulator]
source tb_compat.tcl

set node6 [$ns node]
set node7 [$ns node]
set node8 [$ns node]
set node9 [$ns node]
set node10 [$ns node]
set node11 [$ns node]

set link5 [$ns duplex-link $node6 $node8 100Mb 0ms DropTail]
set link6 [$ns duplex-link $node7 $node8 100Mb 0ms DropTail]
set link7 [$ns duplex-link $node9 $node10 100Mb 0ms DropTail]
set link8 [$ns duplex-link $node11 $node10 100Mb 0ms DropTail]
set link9 [$ns duplex-link $node8 $node9 100Mb 0ms DropTail]

$ns rtproto Static
$ns run
#netbuild-generated ns file ends.

Please do not ask why the nodes are numbered from 5 through 11 and please do not ask why I decided to make node10 the DNS server.

On node10 under /etc/namedb you need to put a file like this called db.star.db:

$TTL 1d
star.	IN SOA node10.dnsexp.is333.emulab.calvin.edu. lave.calvin.edu.		(
	2007061202 ; Serial (date, 2 digits version of day)
	1d  ; refresh
	2h	; retry
	100d ; expire
	1h ) ; negative cache expiry
	in ns node10.dnsexp.is333.emulab.calvin.edu.
;
node10.dnsexp.is333.emulab.calvin.edu. IN A 10.1.3.3

localhost	IN A	127.0.0.1
twinkle.little	IN A	10.1.1.3
little		IN A	10.1.1.2

	IN NS	ns


	IN NS	star.

In the same directory put a file called star.rev:

$TTL 1d
@ IN SOA	node10.dnsexp.is333.emulab.calvin.edu. lave.calvin.edu	(
	2007061201 ; Serial (date, 2 digits version of day)
	1d  ; refresh
	2h	; retry
	100d ; expire
	1h ) ; negative cache expiry
	in ns node10.dnsexp.is333.emulab.calvin.edu.
;
node10.dnsexp.is333.emulab.calvin.edu. IN A 10.1.3.3


localhost IN A 127.0.0.1
twinkle.little	IN A 10.1.1.3
little	IN A 10.1.1.2


	IN NS	boss.emulab.calvin.edu

1	IN PTR	star.
2	IN PTR	name.
3	IN PTR	dot.

Now you need to modify named.conf in the same directory so that it looks something like this:

// $FreeBSD: src/etc/namedb/named.conf,v 1.6.2.7 2003/02/13 13:16:51 keramida Exp $
//
// Refer to the named.conf(5) and named(8) man pages for details.  If
// you are ever going to set up a primary server, make sure you
// understand the hairy details of how DNS works.  Even with
// simple mistakes, you can break connectivity for affected parties,
// or cause huge amounts of useless Internet traffic.

options {
	directory "/etc/namedb";

// In addition to the "forwarders" clause, you can force your name
// server to never initiate queries of its own, but always ask its
// forwarders only, by enabling the following line:
//
//      forward only;

// If you've got a DNS server around at your upstream provider, enter
// its IP address here, and enable the line below.  This will make you
// benefit from its cache, thus reduce overall DNS traffic in the Internet.
/*
	forwarders {
		127.0.0.1;
	};
*/
	/*
	 * If there is a firewall between you and nameservers you want
	 * to talk to, you might need to uncomment the query-source
	 * directive below.  Previous versions of BIND always asked
	 * questions using port 53, but BIND 8.1 uses an unprivileged
	 * port by default.
	 */
	// query-source address * port 53;

	/*
	 * If running in a sandbox, you may have to specify a different
	 * location for the dumpfile.
	 */
	// dump-file "s/named_dump.db";
};

// Note: the following will be supported in a future release.
/*
host { any; } {
	topology {
		127.0.0.0/8;
	};
};
*/

// Setting up secondaries is way easier and a rough example for this
// is provided below.
//
// If you enable a local name server, don't forget to enter 127.0.0.1
// first in your /etc/resolv.conf so this server will be queried.
// Also, make sure to enable it in /etc/rc.conf.

zone "." {
	type hint;
	file "named.root";
};

#zone "0.0.127.IN-ADDR.ARPA" {
	#type master;
	#file "localhost.rev";
#};

// RFC 3152
#zone "1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.IP6.ARPA" {
#	type master;
#	file "localhost-v6.rev";
#};

zone "star"	{
	type master;
	file "db.star.db";
};

zone "1.10.in-addr.arpa"	{
	type master;
	file "star.rev";
};
// RFC 1886 -- deprecated
#zone "1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.IP6.INT" {
#	type master;
#	file "localhost-v6.rev";
#};

// NB: Do not use the IP addresses below, they are faked, and only
// serve demonstration/documentation purposes!
//
// Example secondary config entries.  It can be convenient to become
// a secondary at least for the zone your own domain is in.  Ask
// your network administrator for the IP address of the responsible
// primary.
//
// Never forget to include the reverse lookup (IN-ADDR.ARPA) zone!
// (This is named after the first bytes of the IP address, in reverse
// order, with ".IN-ADDR.ARPA" appended.)
//
// Before starting to set up a primary zone, make sure you fully
// understand how DNS and BIND works.  There are sometimes
// non-obvious pitfalls.  Setting up a secondary is simpler.
//
// NB: Don't blindly enable the examples below. :-)  Use actual names
// and addresses instead.
//
// NOTE!!! FreeBSD can run bind in a sandbox (see named_flags in rc.conf).
// The directory containing the secondary zones must be write accessible 
// to bind.  The following sequence is suggested:
//
//	mkdir /etc/namedb/s
//	chown bind:bind /etc/namedb/s
//	chmod 750 /etc/namedb/s

/*
zone "domain.com" {
	type slave;
	file "s/domain.com.bak";
	masters {
		192.168.1.1;
	};
};

zone "0.168.192.in-addr.arpa" {
	type slave;
	file "s/0.168.192.in-addr.arpa.bak";
	masters {
		192.168.1.1;
	};
};
*/

The lines commented out have to do with a version discrepancy in bind.

Now sshto node7 (say), add node10's IP address to your resolv.conf file, and you should be able to ping twinkle.little.star to your heart's content.
Warning: include(net.bottom.html): Failed to open stream: No such file or directory in /var/www/html/activities/books/networking/labbook/exp/emulab/exp18.1.php on line 253

Warning: include(): Failed opening 'net.bottom.html' for inclusion (include_path='.:/usr/local/lib/php') in /var/www/html/activities/books/networking/labbook/exp/emulab/exp18.1.php on line 253