|
Companion Topics
|
Chapter 18: Experiment 18.1 - Configure A DNS ServerHere 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. This site is maintained by W. David Laverell of the Computer Science Department at Calvin College. For assistance or corrections, please contact him at lave@calvin.edu. |