Installing An Ubuntu Hardy 8.04 LTS DNS Server With BIND - Page 4

10 Install the DNS Server

Run

apt-get install bind9

For security reasons we want to run BIND chrooted so we have to do the following steps:

/etc/init.d/bind9 stop

Edit the file /etc/default/bind9 so that the daemon will run as the unprivileged user bind, chrooted to /var/lib/named. Modify the line: OPTIONS="-u bind" so that it reads OPTIONS="-u bind -t /var/lib/named":

vi /etc/default/bind9
OPTIONS="-u bind -t /var/lib/named"
# Set RESOLVCONF=no to not run resolvconf
RESOLVCONF=yes

Create the necessary directories under /var/lib:

mkdir -p /var/lib/named/etc
mkdir /var/lib/named/dev
mkdir -p /var/lib/named/var/cache/bind
mkdir -p /var/lib/named/var/run/bind/run

Then move the config directory from /etc to /var/lib/named/etc:

mv /etc/bind /var/lib/named/etc

Create a symlink to the new config directory from the old location (to avoid problems when bind gets updated in the future):

ln -s /var/lib/named/etc/bind /etc/bind

Make null and random devices, and fix permissions of the directories:

mknod /var/lib/named/dev/null c 1 3
mknod /var/lib/named/dev/random c 1 8
chmod 666 /var/lib/named/dev/null /var/lib/named/dev/random
chown -R bind:bind /var/lib/named/var/*
chown -R bind:bind /var/lib/named/etc/bind

We need to modify /etc/default/syslogd so that we can still get important messages logged to the system logs. Modify the line: SYSLOGD="" so that it reads: SYSLOGD="-a /var/lib/named/dev/log":

vi /etc/default/syslogd
#
# Top configuration file for syslogd
#

#
# Full documentation of possible arguments are found in the manpage
# syslogd(8).
#

#
# For remote UDP logging use SYSLOGD="-r"
#
SYSLOGD="-a /var/lib/named/dev/log"

Restart the logging daemon:

/etc/init.d/sysklogd restart

Start up BIND, and check /var/log/syslog for errors:

/etc/init.d/bind9 start

 

11 Configure BIND

Now the main configuration file in BIND is named.conf, however named.conf.local is already included in named.conf and its there for customized configuration, so we will edit named.conf.local and we will add our zones, here I added a zone camed tm.local as well as a reverse zone for 192.168.0.0:

vi /etc/bind/named.conf.local
zone "tm.local" {
        type master;
        file "/etc/bind/zones/tm.local.db";
        };


zone "3.13.10.in-addr.arpa" {
     type master;
     file "/etc/bind/zones/rev.0.168.192.in-addr.arpa";
};

Please note that if you want to add a comment in named.conf or named.conf.local use //, also you can see above the zone file for tm.local is called tm.local.db and is located in /etc/bind/zone, the most important thing that the zone file uses as the prefix for a comment and not //, as I saw confusions in a lot of forums so I thought to add it here - (same for the reverse zone).

 

12 Configure the Zones

We will start with the zone tm.local

mkdir /etc/bind/zones
vi /etc/bind/zones/tm.local.db
$TTL 1500
@  IN SOA server1.tm.local. root (
                             2007062703        ;serial
                             28800             ;refresh
                             3600              ;retry
                             604800            ;expire
                             38400 )           ;minimum 25 minutes
tm.local.      IN      NS      server1.tm.local.
server1        IN      A       192.168.0.100
webserver1     IN      A       192.168.0.103
webserver2     IN      A       192.168.0.104
loadb1         IN      A       192.168.0.101
loadb2         IN      A       192.168.0.102
tm.local.      IN      MX      10    server1.tm.local.

Feel free to replace the above zone name (tm.local) or your dns server name (server1) as needed,  just note the DOT after the zone name.

Now let's go ahead with the reverse zone.

vi /etc/bind/zones/rev.3.13.10.in-addr.arpa
$TTL 1500
@  IN SOA server1.tm.local. root (
                             2007062703        ;serial
                             28800             ;refresh
                             3600              ;retry
                             604800            ;expire
                             38400 )           ;minimum 25 minutes

                     IN    NS     server1.tm.local.
100                  IN    PTR    server1.tm.local.
103                  IN    PTR    webserver1.tm.local.
104                  IN    PTR    webserver2.tm.local.
101                  IN    PTR    load1.tm.local.
102                  IN    PTR    load2.tm.local.

Now configure the server to forward any requests to your ISP server so it case resolve external IPs.

vi /etc/bind/named.conf.options

Uncomment the forwarder section to look like this:

forwarders {
      # Replace the address below with the address of your ISP DNS server
      123.123.123.123;
};

 

13 Configure the server to use itself as DNS

vi /etc/resolv.conf
search tm.local
nameserver 192.168.0.100

 

14 References and Sources

Share this page:

8 Comment(s)