dhcpd

dhcpd is the Internet Systems Consortium DHCP Server. It is useful for instance on a machine acting as a router on a LAN.

Note: dhcpd (DHCP (server) daemon) is not the same as dhcpcd (DHCP client daemon).

Installation

Install the dhcp package.

Usage

dhcpd includes two unit files, dhcpd4.service and dhcpd6.service, which can be used to control the daemon. They start the daemon on all network interfaces for IPv4 and IPv6 respectively. See #Listening on only one interface for an alternative.

Configuration

Assign a static IPv4 address to the interface you want to use (in our examples we will use eth0). The specified subnet should not overlap with that of other interfaces.

# ip link set up dev eth0
# ip addr add 139.96.30.100/24 dev eth0 # arbitrary address
Tip: Usually, one of the next three subnets is used for private networks, which are specially reserved and will not conflict with any host in the Internet:
  • 192.168/16 (subnet 192.168.0.0, netmask 255.255.0.0)
  • 172.16/12 (subnet 172.16.0.0, netmask 255.240.0.0)
  • 10/8 (for large networks; subnet 10.0.0.0, netmask 255.0.0.0)
See also RFC 1918.

To have your static ip assigned at boot, see Network configuration#Static IP address.

The default contains many uncommented examples, so relocate it:

# cp /etc/dhcpd.conf /etc/dhcpd.conf.example

To only listen on the subnet , you may create the following minimal configuration file:

Note that:

  • If eth0 is the only interface on the subnet (as is usually the case), then will only be listening on eth0.
  • If you want to listen on any other interface, modify the configuration file by specifying the subnet of the new interface to listen on.

If you need to provide a fixed IP address for a single specific device, you can define host blocks:

/etc/dhcpd.conf
option domain-name-servers 8.8.8.8, 8.8.4.4;
option subnet-mask 255.255.255.0;
option routers 139.96.30.100;
subnet 139.96.30.0 netmask 255.255.255.0 {
  range 139.96.30.150 139.96.30.250;
}
host macbookpro {
  hardware ethernet 70:56:81:22:33:44;
  fixed-address 139.96.30.199;
}

domain-name-servers option contains addresses of DNS servers which are supplied to clients. In our example we are using Google's public DNS servers. If you know a local DNS server (for example, provided by your ISP), you should consider using it. If you have configured your own DNS on a local machine, then use its address in your subnet (e. g. in our example).

and  defines a subnet mask and a list of available routers on the subnet. In most cases for small networks you can use  as a mask and specify an IP address of the machine on which you are configuring DHCP server as a router.
blocks defines options for separate subnets, which are mapped to the network interfaces on which dhcpd is running. In our example this is one subnet  for single interface eth0, for which we defined the range of available IP addresses. Addresses from this range will be assigned to the connecting clients.

Listening on only one interface

If your computer is already part of one or several networks, it could be a problem if your computer starts giving ip addresses to machines from the other networks. It can be done by either configuring dhcpd or starting it as a daemon with systemctl.

Configuring dhcpd

In order to exclude an interface, you must create an empty declaration for the subnet that will be configured on that interface.

This is done by editing the configuration file (for example):

Service file

The default service file provided by dhcpd does not specify an interface. Use a drop-in unit file for the dhcpd4.service as follows:

/etc/systemd/system/dhcpd4.service.d/override.conf
[Service]
ExecStart=
ExecStart=/usr/bin/dhcpd -4 -q -cf /etc/dhcpd.conf -pf /run/dhcpd4/dhcpd.pid %I

This allows using dhcpd4.service as a template unit, binding dhcpd to a particular interface; for example , where eth0 is the first enumerated Ethernet device.

Use for PXE

PXE Configuration is done with the following two options:

This section can either be in an entire or just in a definition. is the IP of the TFTP Server, and is the filename of the image to boot. For more information see PXE.

gollark: It is surprisingly non-unusably-slow at least for my usecase.
gollark: My thing might end up containing the unfathomable machine learning™ and exact word match approach together, as it doesn't do very well at finding particular keywords as is.
gollark: So similar words, sort of thing? I was investigating using https://sbert.net/ for my own slightly related thing. It's fairly good for search, at least.
gollark: Also wow this bug list is long.
gollark: How does the "pages like this one" feature work?

See also

This article is issued from Archlinux. The text is licensed under Creative Commons - Attribution - Sharealike. Additional terms may apply for the media files.