Ubuntu 11.04 SBS (Small Business Server) Setup: Part 1 – DHCP and DNS

This is part of a guide to setting up Ubuntu Server Edition 11.04 for a small/medium business. The server will provide DHCP, DNS, NTP, LDAP, Kerberos and NFS services such that users can login to any machine on the network and all their files and settings will be the same across the entire network.

The first thing to get your server to do is act as a DHCP and DNS server. This will allow you to map hostnames to IP addresses (and vice versa!) automatically. This means all network clients will know that neo.danbishop.org and 192.168.0.2 are one and the same. This is ESSENTIAL if you plan to use Kerberos later on.

Make sure you have disabled DHCP on your router and set a static IP address for the server. This is done by editing /etc/network/interfaces like so:

# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
auto eth0
iface eth0 inet static
        address 192.168.0.2
        netmask 255.255.255.0
        network 192.168.0.0
        broadcast 192.168.0.255
        gateway 192.168.0.1

It’s time to configure resolv.conf so that your server (and soon clients) can query name servers other than your own. This way, when a client looks up an address outside of danbishop.org (google.co.uk for example) dnsmasq (the software we’ll be using for DHCP and DNS) will query the name servers in resolv.conf. Dnsmasq will then cache the IP for subsequent requests from any client speeding up DNS across your network 🙂

In this case we’re going to use our own DNS server as the primary DNS, followed by Google’s public DNS servers. You can of course substitute Google’s servers for your own ISP’s, or any other DNS server.

So time to edit /etc/resolv.conf:

domain danbishop.org 
search danbishop.org 
nameserver 192.168.0.2 
nameserver 8.8.8.8 
nameserver 8.8.4.4

Now it’s time to install Dnsmasq:

sudo apt-get install dnsmasq

Dnsmasq will take care of both DNS and DHCP for your network. We will configure it so that as it allocates IP addresses to clients on the network, it also adds them into its DNS server. This way both forward and reverse lookups will work on any machine, as required by Kerberos 🙂

The configuration file for Dnsmasq (/etc/dnsmasq.conf) is HUGE. However it is VERY well commented making it very easy to play around. The important things for this guide are:

domain=danbishop.org				#sets the domain name you're going to use
dhcp-range=192.168.0.50,192.168.0.150,12h	#sets the range from which to allocate IP addresses to clients and the lease time
dhcp-option=option:router,192.168.0.1		#sets the IP address of the router (gateway address) to be given to clients
dhcp-option=option:ntp-server,192.168.0.2 #sets the NTP server to 192.168.0.2
dhcp-authoritative				#makes this the authoritative (in this case ONLY) DHCP server on the network

# Server DNS settings... this is required as the server itself will
# not be obtaining it's IP address via DHCP and therefore would 
# not be automatically added to the DNS records for forward/reverse
# DNS queries as required by Kerberos
ptr-record=2.0.168.192.in-addr.arpa.,"neo.danbishop.org" 
address=/neo.danbishop.org/192.168.0.2 

# Kerberos and LDAP automatic stuff...
# This maps kerberos.danbishop.org and
# ldap.danbishop.org to the server and also makes all
# dhcp clients aware of the kerberos realm... magic 😀
address=/kerberos.danbishop.org/192.168.0.2 
address=/ldap.danbishop.org/192.168.0.2 
 
txt-record=_kerberos.danbishop.org,"DANBISHOP.ORG"
srv-host=_kerberos._udp.danbishop.org,"kerberos.danbishop.org",88
srv-host=_kerberos._tcp.danbishop.org,"kerberos.danbishop.org",88
srv-host=_kerberos-master._udp.danbishop.org,"kerberos.danbishop.org",88
srv-host=_kerberos-adm._tcp.danbishop.org,"kerberos.danbishop.org",749
srv-host=_kpasswd._udp.danbishop.org,"kerberos.danbishop.org",464

srv-host=_ldap._tcp.danbishop.org,ldap.danbishop.org,389

It is well worth reading through the entire configuration file though as there is a lot to be learnt from the excellent comments!

Dnsmasq is now configured to act as your network’s DHCP server and clients are told to use your server for DNS queries. Now you’re all set to get DNS and DHCP up and running. Simply restart the service to load the new configuration:

sudo service dnsmasq restart

References

https://help.ubuntu.com/community/Dnsmasq

  • Brian

    Awesome HOW-TO! A seriously sweet contribution to the community. Thanks!

    Question: I’d like use DHCP to assign hostnames to a bunch of identical rack-mounted machines. AFAIK, this is not hard to set up. But will it break the LDAP/Kerberos install you’ve described? Much of it appears, albeit naively, to depend on fixed client hostnames.

    Cheers!
    ~br

    • Dan Bishop

      Kerberos is heavily dependent on hostnames, however, I think only the NFS side of things in this guide would break with what you’ve described… I can’t be certain though! :S

  • Kh. Rashedul Arefin

    I need to run a offline office network. I am not connected to any ISP. In that case, how do I get the domain name? Do I need to use bind and configure the primary DNS?

    Regards
    Arefin

  • exestr

    I have not yet followed this guide, but this looks like a spectacular piece of work that had I known about it would have saved me many painful hours. So, CD in hand, gparted ready, time to start again and see how it goes…

  • vmil

    Four line from the end of dnsmasq.conf file you type
    srv-host=_kerberos-master._udp.danbishop.org,kerberos.”danbishop.org”,88
    is it intended that the double quotes do not include kerberos or should it be
    srv-host=_kerberos-master._udp.danbishop.org,”kerberos.danbishop.org”,88
    like the rest?

    • Dan Bishop

      Great catch, thanks! I’ve updated the article 🙂

  • Esteban

    excelent guide… just a question…
    i have read that in ubuntu 11.04 the directory for dhcp config is /etc/default/isc-server-dhcp
    if i`m wrong sorry…
    i`m trying to share internet for severals computers making a dhcp server and conecting it with Access Points
    sorry for the bad english

  • Adrien

    After painful and unproductive hours of work, I eventually come to your guide. I wish I found it earlier… It’s squeaky clean and well explained

  • rslaqui

    Just what I needed, thanks.

  • Pingback: 1. DHCP et DNS - Blog A Cyril()

  • Mike Robinson

    Thank you, Dan, most sincerely, for taking the time to put these posts together. The time you spent, first researching these issues and then so carefully writing a detailed explanation, is tremendously helpful to more people (like me) than you know. Thank you.