DHCP Server

Omdat ik zelf graag de controle heb over hoe mijn IP adressen toegedeeld worden en daarnaast mijn huidige provider (Ziggo) mij beperkt in de instellingen, heb ik ervoor gekozen om zelf een eigen DHCP Server in te richten. Wat kan je hier beter voor gebruiken dan een Raspberry Pi? Onderstaande is een beschrijving van de installatie op een Raspberry Pi met Raspbian.

Installatie van de software

De eerste stap is het installeren van de software:

sudo apt-get install isc-dhcp-server

De volgende stap is ervoor zorgen dat je Raspberry Pi een statisch IP adres heeft. Een werkinstructie is hier te vinden.

Configureren van de DHCP Server

De volgende stap is het configureren van de DHCP Server. Hiervoor bewerken we het volgende bestand

sudo nano /etc/default/isc-dhcp-server

Zoek in dit bestand naar het volgende onderdeel (staat waarschijnlijk onderaan in het bestand)

# On what interfaces should the DHCP server (dhcpd) serve DHCP requests?Separate multiple interfaces with spaces, e.g. "eth0 eth1".
INTERFACES="eth0"

De Raspberry Pi zal als DHCP ser ver in mijn thuis LAN Netwerk gaan draaien. Hiervoor hetb ik onderstaande  commentaar weggehaald bij de “authoritative” regel.

# If this DHCP server is the official DHCP server for the local
# network, the authoritative directive should be un-commented.
authoritative;

Vaste IP Adressen toewijzen 

Om vaste ip adressen te definiëren, gaan we verder naar beneden in het configuratie bestand. Daar vind je een stuk vergelijkbaar aan dit voorbeeld.

#host disney {
#  hardware ethernet 08:00:07:26:c0:a5;
#  fixed-address 130.211.198.204;
#}

Je kunt aan de hand van dit voorbeeld, zoveel vaste ip adressen definiëren als dat je zelf nodig hebt.

Wanneer er een apparaat zich aanbiedt met het gedefinieerde MAC adres, dan wordt automatisch het ingestelde vaste ip adres aan dit apparaat uitgedeeld.
Deze ip adressen komen uit een reeks die ge-exclude zijn uit de gedefinieerde reeksen op de DHCP Server in bovenstaande configuratie.

DNS Server configuratie

Om ervoor te zorgen dat de ip adressen worden vertaald naar namen, maken we gebruik van DNS. De DNS Servers worden aangeboden vanuit het bestand “/etc/resolv.conf”. Aangezien dit bestand automatisch wordt aangemaakt, gaan alle wijzigingen die in dit bestand worden gemaakt verloren, wanneer de DHCP Server opnieuw wordt gestart. De instellingen moeten daarom gemaakt worden in “/etc/resolvconf.conf”

sudo nano /etc/resolvconf.conf

Wijzig dit bestand en vul hier de primaire en secundaire DNS server in. In mijn voorbeeld zijn dit de servers van Ziggo.

# Configuration for resolvconf(8)
# See resolvconf.conf(5) for details

resolv_conf=/etc/resolv.conf
# If you run a local name server, you should uncomment the below line and
# configure your subscribers configuration files below.
#name_servers=127.0.0.1

# Primary DNS Server
name_servers=62.179.104.196

# Secondary DNS Server
name_servers_append=213.46.228.196

# Mirror the Debian package defaults for the below resolvers
# so that resolvconf integrates seemlessly.
dnsmasq_resolv=/var/run/dnsmasq/resolv.conf
pdnsd_conf=/etc/pdnsd.conf
unbound_conf=/var/cache/unbound/resolvconf_resolvers.conf

Automatisch starten DHCP Server

Nu moeten we nog zorgen dat de DHCP Server automatisch start na het opstarten van de Raspberry Pi. Hiervoor voeren we onderstaande commando uit:

sudo update-rc.d isc-dhcp-server start

Voer nu onderstaand commando handmatig uit, om te testen of alles goed is ingesteld:

sudo service isc-dhcp-server start

Wanneer je geen foutmeldingen krijgt en weer netjes op de prompt terug komt, is alles goed. Het kan ook zijn dat er een foutmelding komt, zoals onderstaande:

Job for isc-dhcp-server.service failed. See 'systemctl status isc-dhcp-server.service' and 'journalctl -xn' for details.

In bijna alle gevallen heb je ergens een typefout gemaakt. Controleer vooral het onderdeel met de vaste ip adressen en kijk of je hier geen typefouten heb gemaakt, of bijvoorbeeld een ; bent vergeten.

Als de DHCP Server zonder foutmeldingen start starten we de Raspberry Pi opnieuw op, om te controleren of het automatisch opstarten van de DHCP Server ook goed werkt. Nadat de Raspberry Pi opnieuw is opgestart, controleren we dit met het commando:

sudo service isc-dhcp-server status

Wanneer alles goed is, krijg je iets zoals onderstaand resultaat:

isc-dhcp-server.service - LSB: DHCP server
 Loaded: loaded (/etc/init.d/isc-dhcp-server)
 Active: active (running) since Tue 2017-10-31 09:50:38 CET; 5s ago
 Process: 4045 ExecStop=/etc/init.d/isc-dhcp-server stop (code=exited, status=0/SUCCESS)
 Process: 4222 ExecStart=/etc/init.d/isc-dhcp-server start (code=exited, status=0/SUCCESS)
 CGroup: /system.slice/isc-dhcp-server.service
 └─4228 /usr/sbin/dhcpd -q -cf /etc/dhcp/dhcpd.conf -pf /var/run/dhcpd.pid eth0

Oct 31 09:50:36 raspberrypi dhcpd[4227]: Internet Systems Consortium DHCP Server 4.3.1
 Oct 31 09:50:36 raspberrypi dhcpd[4227]: Copyright 2004-2014 Internet Systems Consortium.
 Oct 31 09:50:36 raspberrypi dhcpd[4227]: All rights reserved.
 Oct 31 09:50:36 raspberrypi dhcpd[4227]: For info, please visit https://www.isc.org/software/dhcp/
 Oct 31 09:50:36 raspberrypi dhcpd[4227]: Wrote 0 deleted host decls to leases file.
 Oct 31 09:50:36 raspberrypi dhcpd[4227]: Wrote 0 new dynamic host decls to leases file.
 Oct 31 09:50:36 raspberrypi dhcpd[4227]: Wrote 0 leases to leases file.
 Oct 31 09:50:36 raspberrypi dhcpd[4228]: Server starting service.
 Oct 31 09:50:38 raspberrypi isc-dhcp-server[4222]: Starting ISC DHCP server: dhcpd.
 Oct 31 09:50:38 raspberrypi systemd[1]: Started LSB: DHCP server.

Controleren uitgegeven leases

Om te controleren of en welke ip adressen er worden uitgedeeld, kan je onderstaande commando geven

sudo cat /var/lib/dhcp/dhcpd.leases

Je krijgt nu een overzicht van welke ip adressen er zijn uitgedeeld, zoals in onderstaand voorbeeld:

# The format of this file is documented in the dhcpd.leases(5) manual page.
# This lease file was written by isc-dhcp-4.3.1

server-duid "\000\001\000\001!\212\365\334\270'\3537l\245";

lease 192.168.0.64 {
 starts 2 2017/10/31 08:54:58;
 ends 2 2017/10/31 10:54:58;
 cltt 2 2017/10/31 08:54:58;
 binding state active;
 next binding state free;
 rewind binding state free;
 hardware ethernet 5c:96:56:2b:56:a3;
 uid "\001\\\226V+V\243";
}
lease 192.168.0.68 {
 starts 2 2017/10/31 08:58:31;
 ends 2 2017/10/31 10:58:31;
 cltt 2 2017/10/31 08:58:31;
 binding state active;
 next binding state free;
 rewind binding state free;
 hardware ethernet 28:18:78:4d:95:4b;
 uid "\001(\030xM\225K";
 client-hostname "Domotica Dashboard";
}
lease 192.168.0.51 {
 starts 2 2017/10/31 08:58:58;
 ends 2 2017/10/31 18:58:58;
 cltt 2 2017/10/31 08:58:58;
 binding state active;
 next binding state free;
 rewind binding state free;
 hardware ethernet 38:c9:86:6f:1f:a3;
 uid "\0018\311\206o\037\243";
 client-hostname "AppleWatch";
}

Als alles goed is gegaan, heb je nu een werkende DHCP Server in je eigen netwerk!

Like
2