From FreeBSDwiki
Jump to: navigation, search



Dynamic Host Configuration Protocol. DHCP allows you to place machines on a network and configure many of their settings (network-wise) via a server that your host machine queries. Usually this is limited to what IP and DNS client information a host uses on the network, and this greatly increases an administrator's ability to configure a large number of hosts to use a network with minimal effort (as opposed to configuring each host individually.)

The service daemon on most *nix platforms is called dhcpd, the client application (if your *nix box is set up to use DHCP,) is usually dhclient.


The most common unix implementation of the DHCP service is the ISC's DHCP; Microsoft has their own implementation, as does Sun Microsystems.

Configuring DHCP, like BIND, is not horribly difficult but it can be a pain; consider using Webmin to help configure the software.

There are a few other configuration UIs for ISC's DHCP, see







The /etc/dhcpd.conf (or /usr/local/etc/dhcpd.conf) file sets the configuration that will be handed to your clients. Things you need to know: - the interface that will be receiving the DHCP requests must also be on the same network that it will be handing out. If you're handing out addresses on your hme0 interface, your hme0 interface must have an address in that /24 network. - any general statements / config options can be made globally and limited to a specific network; the network-specific options will trump the general options usually.

You will need to define the following sections:

general config



- pools


from the FAQ:

# Sample /etc/dhcpd.conf
# (add your comments here) 
default-lease-time 600;
max-lease-time 7200;
option subnet-mask;
option broadcast-address;
option routers;
option domain-name-servers,;
option domain-name "";

subnet netmask {

This will result in DHCP server giving a client an IP address from the range or It will lease an IP address for 600 seconds if the client doesn't ask for specific time frame. Otherwise the maximum (allowed) lease will be 7200 seconds. The server will also "advise" the client that it should use as its subnet mask, as its broadcast address, as the router/gateway and and as its DNS servers.

If you need to specify a WINS server for your Windows clients you will need to include the netbios-name-servers option e.g.

option netbios-name-servers;

You can also assign specific IP addresses based on clients ethernet address e.g.

host haagen {
   hardware ethernet 08:00:2b:4c:59:23;


install through package:

# pkg_add -r isc-dhcp3-server

or ports:

# cd /usr/ports/nets/isc-dhcp3-server && make install clean


copy /usr/local/etc/dhcpd.conf.sample to /usr/local/etc/dhcpd.conf

edit /usr/local/etc/dhcpd.conf as apropriate:.

# dhcpd.conf
# Sample configuration file for ISC dhcpd

# option definitions common to all supported networks...
#option domain-name "";
#option domain-name-servers,;
# lease times are measured in seconds: 
default-lease-time 3600;
max-lease-time 86400;

# If this DHCP server is the official DHCP server for the local
# network, the authoritative directive should be uncommented.

# ad-hoc DNS update scheme - set to "none" to disable dynamic DNS updates.
ddns-update-style none;

# Use this to send dhcp log messages to a different log file (you also
# have to hack syslog.conf to complete the redirection).
log-facility local7;

# No service will be given on this subnet, but declaring it helps the
# DHCP server to understand the network topology.

# This is a very basic subnet declaration.

subnet netmask {

Create the leases file

# touch /var/db/dhcpd.leases

Restart the daemon

# killall dhcpd
# dhcpd

Setup to run on reboot

Add to /etc/rc.conf


Problems starting dhcpd

Errors when trying to start

NOTE: This problem was found on this architecture, but may apply to others.

dhcp-1# uname -a
FreeBSD 6.0-RELEASE FreeBSD 6.0-RELEASE #0: Thu Nov  3 09:36:13 UTC 2005   
root@x64.samsco.home:/usr/obj/usr/src/sys/GENERIC  i386
dhcp-1# /usr/local/etc/rc.d/ start
chown: dhcpd: Invalid argument
/usr/local/etc/rc.d/ WARNING: unable to change permissions of /var/run/dhcpd
/usr/local/etc/rc.d/ WARNING: safe_run: chown dhcpd:dhcpd /var/db/dhcpd
/usr/local/etc/rc.d/ WARNING: unable to change permissions of /var/db/dhcpd
chown: dhcpd: Invalid argument
/usr/local/etc/rc.d/ WARNING: unable to change permissions of /var/db/dhcpd/dhcpd.leases
Starting dhcpd.

Find out if dhcpd is running

dhcp-1# ps -auwx | grep dhcp
root     94818  0.0  0.6  2188  1536  ??  Is   15Jan07   0:00.05 /usr/local/sbin/dhcpd
root     24289  0.0  1.1  3892  2612  p0  RV    6:22AM   0:00.00 grep dhcp (csh)

Stop dhcpd (if running)

dhcp-1# kill -9 94818

Verify that dhcpd has been stopped

dhcp-1# ps -auwx | grep dhcp
root     24293  0.0  0.1   348   208  p0  R+    6:22AM   0:00.00 grep dhcp

Fix the problem

dhcp-1# /usr/local/etc/rc.d/ install
Added group "dhcpd".
Added user "dhcpd".

Start dhcpd normally

dhcp-1# /usr/local/etc/rc.d/ start
Starting dhcpd.

See Also

The DHCP service can be configured to supply hosts with the network addresses of local WINS service servers, which are used to resolve NetBIOS names to IP addresses.

Personal tools