Ubuntu 12.04 Ultimate Server Guide

This guide will help you configure Ubuntu Server Edition 12.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. This will be one unified setup, supporting Ubuntu, Windows and OS X clients… let the fun begin!

The Installation

When installing Ubuntu server, after selecting your country/keyboard you will be asked for a hostname. It will make life much easier later on, if you enter the FQDN (fully qualified domain name) for your server. So, if you’d like to call your server neo, and use the domain danbishop.org… then enter neo.danbishop.org

When asked to create a user, it’s best to chose a username you don’t want to use for your everyday account, for example adminlocal, rather than dan.

Part 1: DHCP and DNS

The first thing to get your server to do is act as a DHCP and DNS server for the network. 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 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 (if enabled) 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

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:

#Use dnsmasq specific hosts file
#DNS Settings
# adapted for a typical dnsmasq installation where the host running
# dnsmasq is also the host running samba.
# you may want to uncomment some or all of them if you use
# Windows clients and Samba.
dhcp-option=19,0           # option ip-forwarding off
dhcp-option=44,     # set netbios-over-TCP/IP nameserver(s) aka WINS ser$
dhcp-option=45,     # netbios datagram distribution server
dhcp-option=46,8           # netbios node type
domain=danbishop.org				#sets the domain name you're going to use
dhcp-range=,,12h	#sets the range from which to allocate IP addresses to clients and the lease time
dhcp-option=option:router,		#sets the IP address of the router (gateway address) to be given to clients
dhcp-option=option:ntp-server, #sets the NTP server to
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
# 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 :D

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

By default, dnsmasq would have read host information from /etc/hosts but Ubuntu (and other Debian derivatives) have an entry here that maps to your hostname. This entry will ensure services such as OpenLDAP are configured for the proper domain later in this guide, but it would also result in failed dns lookups for “neo” on your network. Consequently, we’ve told dnsmasq to use its own /etc/hosts.dnsmasq file for any static host information you want served up to clients. We now need to create this file:

sudo touch /etc/hosts.dnsmasq

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