isc-dhcp – ISC Dynamic Host Configuration Protocol server
Last Updated on 2017-07-02 by Sture
Description
ISC’s Dynamic Host Configuration Protocol Distribution provides a freely redistributable reference implementation of all aspects of DHCP, through a suite of DHCP tools
- A DHCP server (this port)
- A DHCP client
- A DHCP relay agent
WWW: http://www.isc.org/products/DHCP/.
Preparation for Installation
Start PuTTY on a Windows PC, Terminal on a Mac or similar terminal application on a Linux PC.
In this example Terminal on a Mac is used.
Open a remote SSH session to the server with:
Mac:~ user$ ssh user@192.168.1.4 [enter]
N.B.: Replace user@192.168.1.4 with User ID and IP Address on Your server!
[user@server ~]$
Enable superuser privileges with:
[user@server ~]$ sudo -s [enter]
Password: <-- passwd [enter]
[root@server /usr/home/user]#
N.B.: Enter user password, not the root password!
Installation
Search for isc-dhcp in the remote package repositories with:
[root@server /usr/home/user]# pkg search isc-dhcp [enter]
isc-dhcp43-client-4.3.5 The ISC Dynamic Host Configuration Protocol client
isc-dhcp43-relay-4.3.5 The ISC Dynamic Host Configuration Protocol relay
isc-dhcp43-server-4.3.5 ISC Dynamic Host Configuration Protocol server
[root@server /usr/home/user]#
In this example, sc-dhcp43-server will be installed.
Install isc-dhcp43-server with;
[root@server /usr/home/user]# pkg install isc-dhcp43-server [enter]
Updating FreeBSD repository catalogue...
FreeBSD repository is up-to-date.
All repositories are up-to-date.
The following 1 package(s) will be affected (of 0 checked):
New packages to be INSTALLED:
isc-dhcp43-server: 4.3.5
Number of packages to be installed: 1
The process will require 4 MiB more space.
989 KiB to be downloaded.
Proceed with this action? [y/N]: y [enter]
Fetching isc-dhcp43-server-4.3.5.txz: 100% 989 KiB 1.0MB/s 00:01
Checking integrity... done (0 conflicting)
[1/1] Installing isc-dhcp43-server-4.3.5...
===> Creating groups.
Creating group 'dhcpd' with gid '136'.
===> Creating users
Creating user 'dhcpd' with uid '136'.
[1/1] Extracting isc-dhcp43-server-4.3.5: 100%
Message from isc-dhcp43-server-4.3.5:
**** To setup dhcpd, please edit /usr/local/etc/dhcpd.conf.
**** This port installs the dhcp daemon, but doesn't invoke dhcpd by default.
If you want to invoke dhcpd at startup, add these lines to /etc/rc.conf:
dhcpd_enable="YES" # dhcpd enabled?
dhcpd_flags="-q" # command option(s)
dhcpd_conf="/usr/local/etc/dhcpd.conf" # configuration file
dhcpd_ifaces="" # ethernet interface(s)
dhcpd_withumask="022" # file creation mask
**** If compiled with paranoia support (the default), the following rc.conf
options are also supported:
dhcpd_chuser_enable="YES" # runs w/o privileges?
dhcpd_withuser="dhcpd" # user name to run as
dhcpd_withgroup="dhcpd" # group name to run as
dhcpd_chroot_enable="YES" # runs chrooted?
dhcpd_devfs_enable="YES" # use devfs if available?
dhcpd_rootdir="/var/db/dhcpd" # directory to run in
dhcpd_includedir="<some_dir>" # directory with config-
files to include
**** WARNING: never edit the chrooted or jailed dhcpd.conf file but
/usr/local/etc/dhcpd.conf instead which is always copied where
needed upon startup.
[root@server /usr/home/user]#
Configuration
List installed services dhcp with:
[root@server /usr/home/user]# service -r | grep dhcp [enter]
/usr/local/etc/rc.d/isc-dhcpd
/usr/local/etc/rc.d/isc-dhcpd6
[root@server /usr/home/user]#
Find the rcvar for /etc/rc.conf:
[root@server /usr/home/user]# /usr/local/etc/rc.d/isc-dhcpd rcvar [enter]
# dhcpd
#
dhcpd_enable="NO"
# (default: "")
[root@server /usr/home/user]#
To start isc-dhcp43-server on system boot, add information to /etc/rc.conf with this commands:
[root@server /usr/home/user]# echo '' >> /etc/rc.conf; echo '# ISC dhcpd' >> /etc/rc.conf; echo 'dhcpd_enable="YES"' >> /etc/rc.conf; echo 'dhcpd_ifaces="em0"' >> /etc/rc.conf [enter]
[root@server /usr/home/user]#
Replace the ’em0′ interface name with the interface (or interfaces, separated by whitespace) that your DHCP server should listen on for DHCP client requests.
Edit /usr/local/etc/dhcpd.conf with:
[root@server /usr/home/user]# ee /usr/local/etc/dhcpd.conf [enter]
N.B.: This is an example with support for client PXE Boot!
#
# dhcpd.conf
#
authoritative;
default-lease-time 3600;
max-lease-time 86400;
ddns-updates on;
ddns-domainname "example.net.";
ddns-rev-domainname "in-addr.arpa.";
ddns-update-style interim;
log-facility local7;
server-name "server.example.net";
server-identifier server.example.net;
allow client-updates;
allow unknown-clients;
do-forward-updates true;
include "/usr/local/etc/namedb/rndc.key";
# example.net
subnet 192.168.1.0 netmask 255.255.255.0 {
range 192.168.1.200 192.168.1.249;
option domain-name-servers 192.168.1.4;
option subnet-mask 255.255.255.0;
option routers 192.168.1.1;
option broadcast-address 192.168.1.255;
option ntp-servers 192.168.1.4;
option domain-name "example.net.";
default-lease-time 3600;
max-lease-time 86400;
next-server 192.168.1.4;
option root-path "192.168.1.4:/tftpboot";
filename "/gpxelinux.0";
}
# Hosts Forward
zone example.net. {
primary 127.0.0.1;
key rndc-key;
}
# Hosts Reverse
zone 1.168.192.in-addr.arpa. {
primary 127.0.0.1;
key rndc-key;
}
Make sure that file /usr/local/etc/dhcpd.conf is not world readable with:
[root@server /usr/home/user]# chmod 640 /usr/local/etc/dhcpd.conf [enter]
[root@server /usr/home/user]#
Start
Manually start isc-dhcp43-server with;
[root@server /usr/home/user]# service isc-dhcpd start [enter]
Starting dhcpd.
Internet Systems Consortium DHCP Server 4.3.5
Copyright 2004-2016 Internet Systems Consortium.
All rights reserved.
For info, please visit https://www.isc.org/software/dhcp/
Config file: /usr/local/etc/dhcpd.conf
Database file: /var/db/dhcpd/dhcpd.leases
PID file: /var/run/dhcpd/dhcpd.pid
Wrote 0 leases to leases file.
Listening on BPF/igb0/00:1b:21:a4:4e:cc/192.168.1.0/24
Sending on BPF/igb0/00:1b:21:a4:4e:cc/192.168.1.0/24
Sending on Socket/fallback/fallback-net
[root@srv /usr/home/stureah]#
[root@server /usr/home/user]#
Display isc-dhcp43-server status with:
[root@server /usr/home/user]# service isc-dhcpd status [enter]
dhcpd is running as pid 31662.
[root@server /usr/home/user]#
View content of dhcpd-leases
[root@server /usr/home/user]# cat /var/db/dhcpd/dhcpd.leases [enter]
# The format of this file is documented in the dhcpd.leases(5) manual page.
# This lease file was written by isc-dhcp-4.3.5
# authoring-byte-order entry is generated, DO NOT DELETE
authoring-byte-order little-endian;
lease 192.168.1.200 {
starts 3 2017/03/01 14:32:06;
ends 3 2017/03/01 15:32:06;
tstp 3 2017/03/01 15:32:06;
cltt 3 2017/03/01 14:32:06;
binding state free;
hardware ethernet e4:a7:a0:73:c4:ea;
uid "\001\344\247\240s\304\352";
set vendor-class-identifier = "MSFT 5.0";
.
.
[root@server /usr/home/user]#