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
sudo nano /etc/resolv.conf(to set the DNS server address – 18.104.22.168 will do if you don’t have one):
sudo 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)
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):
- Optionally, add some static entries for fixed IP items on the network with
sudo nano /etc/hosts:
sudo nano /etc/resolv.conf(set the DNS server address again – to use the local server):
sudo service dnsmasq start(start the Dnsmasq service)
- View client leases with
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…)