A long time ago, I used to run real servers at home – I had a Compaq Prosignia 300 for a while and then a Compaq (or maybe it was an HP) Proliant DL380 running in my garage. Then, a few years back, I stopped running my own mail server and put all of the infrastructure services onto a low-powered PC running Windows Server (working alongside a NetGear ReadyNAS Duo). Recently, I found I didn’t even need Active Directory (I have unmanaged devices and cloud services these days) so I started to switch over onto a Raspberry Pi. Each move made a huge difference to my electricity bill but I’ve had some mishaps too. I accidentally turned off the Pi and corrupted the flash memory (oops), then recommissioned the previous server. Then, I accidentally killed the power on that too and it’s not come back up (could be the PSU, or the motherboard – but whichever it is it’s unlikely to get fixed) so last Saturday night, I found myself bringing the Pi back into service as a DNS, DHCP and TFTP server – partly to improve my Internet access speeds and partly to back up my Windows Phone (that will be the subject of another blog post).
Luckily, I had the notes from last time I did it – but they hadn’t made it into a blog post yet, so I’d better record them in case I need to do this again…
Assuming that the Raspberry Pi is running Raspbian, the following commands should be entered from command line (e.g. LX Terminal):
sudo nano /etc/network/interfaces
(to set up static IP – in this case 192.168.1.10 on a class C network):#iface eth0 inet dhcp
iface eth0 inet staticaddress 192.168.1.10
netmask 255.255.255.0
network 192.168.1.0
broadcast 192.168.1.255
gateway 192.168.1.1
sudo nano /etc/resolv.conf
(to set the DNS server address – 8.8.8.8 will do if you don’t have one):
nameserver 8.8.8.8sudo ifdown eth0
(take down the Ethernet connection).sudo ifup eth0
(bring it back up again).ifconfig
(check new IP settings.)- sudo apt-get install dnsmasq (install the Dnsmasq network infrastructure package for small networks)
- Optionally,
sudo apt-get install dnsutils
(to get utilities like nslookup and dig). Unfortunately, this is resulting in bash: dig: command not found (I’m pretty sure it worked when I did this a year or so ago but, for now, I’m managing without those tools. sudo service dnsmasq stop
(stop the Dnsmasq service)sudo nano /etc/dnsmasq.conf
(edit the Dnsmasq config) – these are the settings I changed (all others were left alone) – the original version of the file includes full details of what each of these mean):domain-needed
bogus-priv
no-resolv
server=212.159.13.49
server=212.159.13.50
server=212.159.6.9
server=208.67.222.222
server=208.67.220.220
server=8.8.8.8
local=/home.markwilson.co.uk/
expand-hosts
domain=home.markwilson.co.uk
dhcp-range=192.168.1.100,192.168.1.199
dhcp-host=00:1d:a2:2f:20:f9,192.168.1.199
dhcp-option=3,192.168.1.1
dhcp-option=6,192.168.1.10
dhcp-option=42,192.168.1.1
dhcp-option=66,192.168.1.10
dhcp-option=66,boot\pxeboot.com
dhcp-option=vendor:MSFT,2,li
enable-tftp
tftp-root=/home/pi/ftp/files
- Optionally, add some static entries for fixed IP items on the network with
sudo nano /etc/hosts
:192.168.1.1 router
192.168.1.10 raspberrypi
sudo nano /etc/resolv.conf
(set the DNS server address again – to use the local server):
nameserver 192.168.1.10sudo service dnsmasq start
(start the Dnsmasq service)- View client leases with
cat /var/lib/misc/dnsmasq.leases
.
A few more notes that might be useful include that pinging short names may need a trailing .
.
Other blog posts that helped me in creating this include:
- Andrew Oberstar’s post on Raspberry Pi as a Server: DNS and DHCP.
- Use your RPI as a DNS server and speed up yo’ net!
- Mohan43u’s Dnsmasq for Home User[s].
(I haven’t actually tested the TFTP functionality – I need it for my Cisco 7940 phone, but need to recover the files from the old server first).
Now, all I need is a UPS for my Pi – and it looks like one is available (but I’m waiting for the new version that can keep the device running a while on battery power too…)
4 thoughts on “Raspberry Pi infrastructure server (DNS, DHCP, TFTP)”