How to setup a locally authoritative DNS server on a LAN with Ubuntu 9.10. These instructions should work almost entirely on Ubuntu 10.x without modification.
# File: HOWTO Setup a DNS Server on Ubuntu 9.10.notes
# Date: 2010/03/25
# Refs: https://help.ubuntu.com/8.04/serverguide/C/dns-installation.html
# https://help.ubuntu.com/community/BIND9ServerHowto
# Desc: Setting up a locally authoritative DNS server on a LAN with Ubuntu 9.10
# Install bind9 (the actual DNS server) and the dnsutils package
# (useful for testing and troubleshooting DNS issues). We
# also install resolvconf so that we can manage the static
# IP DNS settings in /etc/network/interfaces since NetworkManager
# will stomp on any changes we make to /etc/resolv.conf
sudo apt-get install bind9 dnsutils resolvconf
# Establish a static IP for the nameserver by editing
# /etc/network/interfaces. In our setup, we have a multihomed
# machine with eth0 static on the trusted LAN and eth1 DHCP
# to the internet
auto eth0
iface eth0 inet static
address 192.168.72.1
netmask 255.255.255.0
network 192.168.72.0
gateway 192.168.72.254
broadcast 192.168.72.255
# dns-options are implemented by the resolvconf package
dns-nameservers 192.168.72.1
dns-search test.com
# Make the static IP changes take affect
# NOTE: You should be able to use
# ifconfig <interface> down/up, but I found rebooting to be
# the only reliable way. Also, when these changes take effect,
# you'll have NO internet DNS yet, so beware.
sudo shutdown -r now
# For our setup here, I want to be an authoritative nameserver
# on the local LAN, so I need at least 1 Forward Zone and
# 1 Reverse Zone for it. Our domain is test.com and our
# subnet is 192.168.72.0. First we add the zones to
# /etc/bind/named.conf.local
zone "test.com" {
type master;
file "/etc/bind/db.test.com";
};
zone "72.168.192.in-addr.arpa" {
type master
notify no;
file "/etc/bind/db.192";
};
# Use an existing zone file as a template
sudo cp /etc/bind/db.local /etc/bind/db.test.com
# Edit the /etc/bind/db.test.com file to fit our zone requirements
;
; BIND data file for test.com
;
$TTL 604800
@ IN SOA ns.test.com. root.test.com. (
20100325 ; Serial (YYYYMMDD)
604800 ; Refresh
86400 ; Retry
2419200 ; Expire
604800 ) ; Negative Cache TTL
;
@ IN NS ns.test.com.
@ IN A 192.168.72.1
ns IN A 192.168.72.1
; Hostname entries
hydrogen IN A 192.168.72.1
helium IN A 192.168.72.2
lithium IN A 192.168.72.3
beryllium IN A 192.168.72.4
boron IN A 192.168.72.5
# Use an existing reverse zone file as a template
sudo cp /etc/bind/db.127 /etc/bind/db.192
# Edit the Reverse Zone file for our reqs
;
; BIND reverse data file for test.com
;
$TTL 604800
@ IN SOA ns.test.com. root.test.com. (
20100325 ; Serial (YYYYMMDD)
604800 ; Refresh
86400 ; Retry
2419200 ; Expire
604800 ) ; Negative Cache TTL
;
@ IN NS ns.
1 IN PTR ns.test.com.
; Hostname RNL pointers
2 IN PTR helium.test.com.
3 IN PTR lithium.test.com.
4 IN PTR beryllium.test.com.
5 IN PTR boron.test.com.
# Start the bind9 daemon
sudo /etc/init.d/bind9 start
# Check the status of the server. You should get a big
# printout from the local nameserver
dig @localhost