dhcpd (Русский)
Состояние перевода: На этой странице представлен перевод статьи dhcpd. Дата последней синхронизации: 10 июля 2021. Вы можете помочь синхронизировать перевод, если в английской версии произошли изменения.
dhcpd — реализация DHCP-сервера от Internet Systems Consortium. Может использоваться, к примеру, на машине, играющей роль маршрутизатора в локальной сети.
Примечание: dhcpd (DHCP (server) daemon) не следует путать с dhcpcd (DHCP client daemon).
Установка
Использование
dhcpd предоставляет два файла юнитов, dhcpd4.service и dhcpd6.service , с помощью которых можно управлять демоном. Демоны запускаются на всех сетевых интерфейсах для IPv4 и IPv6 соответственно. Альтернативный вариант описан в разделе #Запуск на одном сетевом интерфейсе.
Настройка
Присвойте статический адрес IPv4 тому сетевому интерфейсу, для которого вы хотите запустить DHCP-сервер (в примерах будет использоваться eth0 ). Обратите внимание, что у двух различных сетевых интерфейсов на одной машине не должны полностью совпадать первые три октета адреса.
# ip link set up dev eth0 # ip addr add 139.96.30.100/24 dev eth0 # произвольный адрес для примера
- 192.168/16 (подсеть 192.168.0.0 , маска подсети 255.255.0.0 )
- 172.16/12 (подсеть 172.16.0.0 , маска подсети 255.240.0.0 )
- 10/8 (для больших сетей; подсеть 10.0.0.0 , маска подсети 255.0.0.0 )
Автоматическое назначение статического IP при загрузке системы описано в статье Настройка сети#Статический IP-адрес.
Стандартный файл настроек, dhcpd.conf , содержит много незакомментированных примеров, поэтому следует переместить его в другое место, например
# cp /etc/dhcpd.conf /etc/dhcpd.conf.example
и создать на его месте новый.
Минимальная конфигурация может выглядеть следующим образом:
option domain-name-servers 8.8.8.8, 8.8.8.4; option subnet-mask 255.255.255.0; option routers 139.96.30.100; subnet 139.96.30.0 netmask 255.255.255.0
Если необходимо выдать фиксированный IP-адрес конкретному устройству, можно также указать настройки для отдельного хоста:
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
Опция domain-name-servers содержит адреса DNS-серверов, которые передаются клиентам. В данном примере используются публичные DNS-сервера Google. Если в вашей подсети уже есть DNS-серверы (например, предоставленные провайдером), следует указать их. Если на компьютере уже настроен собственный DNS-сервер, то укажите его адрес ( 139.96.30.100 в нашем примере).
Опции subnet-mask и routers содержат маску подсети и список маршрутизаторов в этой подсети, соответственно. В большинстве случаев для небольших сетей подойдет маска 255.255.255.0 , а в качестве маршрутизатора используется та же машина, на которой настроен DHCP-сервер.
Блоки subnet содержат настройки для отдельных подсетей, которые сопоставляются сетевым интерфейсам, на которых запущен dhcpd. В примере определена одна подсеть 139.96.30.0/24 за интерфейсом eth0 , для которой задан диапазон IP-адресов. Подключаемым клиентам будут присваиваться адреса из этого диапазона.
Запуск на одном сетевом интерфейсе
Если ваш компьютер уже является частью одной или нескольких сетей, может возникнуть ситуация, когда адреса будут выдаваться в том числе и компьютерам из другой сети. Это можно исправить либо настройками dhcpd, либо запуском в качестве демона с помощью systemctl.
Настройки dhcpd
Чтобы исключить конкретный интерфейс, в файле настроек создайте пустой блок subnet для этого интерфейса:
# Исключить DHCP из демилитаризованной зоны (192.168.2.0/24) subnet 192.168.2.0 netmask 255.255.255.0
Файл службы
В «комплекте поставки» dhcpd не предусмотрен юнит для запуска на одном интерфейсе, поэтому придётся создать его самостоятельно. Сначала скопируйте существующую службу:
# cp /usr/lib/systemd/system/dhcpd4.service /etc/systemd/system/dhcpd4@.service
Затем отредактируйте строку ExecStart, добавив в неё спецификатор интерфейса:
/etc/systemd/system/dhcpd4@.service
. [Service] . ExecStart=/usr/bin/dhcpd -4 -q -cf /etc/dhcpd.conf -pf /run/dhcpd4/dhcpd.pid %I .
Это юнит-шаблон, который привязывает процесс к определённому интерфейсу, например — dhcpd4@eth0.service . Здесь eth0 — название сетевого интерфейса; узнать интерфейсы вашей системы можно командой ip link .
Использование для PXE
Настройка для PXE выполняется следующими двумя параметрами:
next-server 192.168.0.2; filename "/pxelinux.0";
Эти строки можно указать как в блоке subnet , так и в настройках отдельного хоста host . next-server представляет собой адрес TFTP-сервера, а filename — имя образа для загрузки. Подробнее см. PXE.
Смотрите также
dhcpd
dhcpd is the older Internet Systems Consortium DHCP Server. It is useful for instance on a machine acting as a router on a LAN. Note that ISC promotes Kea as its replacement.
Note: dhcpd (DHCP (server) daemon) is not the same as dhcpcd (DHCP client daemon).
Installation
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 dhcpd to listen on (here 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
- 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 )
The default configuration file dhcpd.conf contains many uncommented examples, so relocate it:
# cp /etc/dhcpd.conf /etc/dhcpd.conf.example
To only listen on the subnet 139.96.30.0/24 , you may create the following minimal configuration file:
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
The options used in this configuration file are:
domain-name-servers which contains addresses of DNS servers supplied to the clients. Here we use Google’s public DNS servers. If you have configured your own DNS server on a local machine, specify its address in your subnet (here 139.96.30.0/24 ).
subnet-mask and routers which define a subnet mask and a list of available routers on the subnet; routers also defines the default gateway served to the client. For small networks, you can usually use 255.255.255.0 as a mask and specify an IP address of the machine on which you are running dhcpd (here 139.96.30.100 ).
subnet which defines options for separate subnets that are applied to the network interfaces on which dhcpd is listening. Here we have defined the range of available IP addresses for a single subnet 139.96.30.0/24 (on a single interface eth0 ).
For a complete list of options, consult dhcpd.conf(5) .
Listening on only one interface
This article or section is out of date.
Reason: While the man page dhcpd(8) suggests the behavior described below, in practice dhcpd only listens on interfaces with subnets declared in its configuration file. (Discuss in Talk:Dhcpd)
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
The factual accuracy of this article or section is disputed.
Reason: dhcpd does not listen on interfaces whose subnets are not declared in its configuration file. (Discuss in Talk: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):
# No DHCP service in DMZ network (192.168.2.0/24) subnet 192.168.2.0 netmask 255.255.255.0
Service file
The factual accuracy of this article or section is disputed.
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 dhcpd4@eth0.service , where eth0 is the first enumerated Ethernet device.
Use for PXE
PXE Configuration is done with the following two options:
next-server 192.168.0.2; filename "/pxelinux.0";
This section can either be in an entire subnet or just in a host definition. next-server is the IP of the TFTP Server, and filename is the filename of the image to boot. For more information see PXE.