DHCP and PXE server

The Dynamic Host Configuration Protocol (DHCP) [1] server centralizes the management of the local network configuration for any device connected to it. When a computer (or a device such as a printer, smartphone, etc.) connects to the local network, it can ask the network configuration parameters by means of the DHCP protocol. The DHCP server replies, providing the IP, DNS, and other relevant network parameters.


In most cases, the devices are already configured to use DHCP protocol on start up.

The Preboot eXecution Environment (PXE) [3] specification allows a network device to retrieve the operating system from a centralized network location while starting up, through the DHCP and TFTP protocols. See Boot from network configuration for an example about configuring a such case.

DHCP configuration

The DHCP server can be enabled on all green and blue interfaces (see Network). NethServer will assign a free IP address within the configured DHCP range in DHCP > DHCP server page.

The DHCP range must be defined within the network of the associated interface. For instance, if the green interface has IP/netmask the range must be -

Host IP reservation

The DHCP server leases an IP address to a device for a limited period of time. If a device requires to always have the same IP address, it can be granted an IP reservation associated to its MAC address.

The page DHCP > IP reservation lists the currently assigned IP addresses:

  • a line with IP reservation button identifies an host with a temporary lease (gray color);
  • a line with Edit button identifies an host with a reserved IP (black color). A small two arrows icon near the host name says the DHCP lease is expired: this is a normal condition for hosts with static IP configuration, as they never contact the DHCP server.

Boot from network configuration

To allow clients to boot from network, the following components are required:

  • the DHCP server, as we have seen in the previous sections,
  • the TFTP server [2],
  • the software for the client, served through TFTP.

TFTP is a very simple file transfer protocol and usually it is used for automated transfer of configuration and boot files.

In NethServer the TFTP implementation comes with the DHCP module and is enabled by default. To allow accessing a file through TFTP, simply put it in /var/lib/tftpboot directory.


To disable TFTP type the following commands in a root’s console:

config setprop dhcp tftp-status disabled
signal-event nethserver-dnsmasq-save

For instance, we now configure a client to boot CentOS from the network. In NethServer, type at root’s console:

yum install syslinux
cp /usr/share/syslinux/{pxelinux.0,menu.c32,memdisk,mboot.c32,chain.c32} /var/lib/tftpboot/
config setprop dnsmasq dhcp-boot pxelinux.0
signal-event nethserver-dnsmasq-save
mkdir /var/lib/tftpboot/pxelinux.cfg

Then create the file /var/lib/tftpboot/pxelinux.cfg/default with the following content:

default menu.c32
prompt 0
timeout 300


  kernel CentOS/vmlinuz
  append initrd=CentOS/initrd.img

Create a CentOS directory:

mkdir /var/lib/tftpboot/CentOS

Copy inside the directory vmlinuz and initrd.img files. These files are public, and can be found in the ISO image, in /images/pxeboot directory or downloaded from a CentOS mirror.

Finally, power on the client host, selecting PXE boot (or boot from network) from the start up screen.


[1]Dynamic Host Configuration Protocol (DHCP) http://en.wikipedia.org/wiki/Dynamic_Host_Configuration_Protocol
[2]Trivial File Transfer Protocol https://en.wikipedia.org/wiki/Tftp
[3]Preboot eXecution Environment http://en.wikipedia.org/wiki/Preboot_Execution_Environment