dhcpd (Русский)

Ссылки по теме
dhcpcd (Русский)
Состояние перевода:
На этой странице представлен перевод статьи
dhcpd
. Дата последней синхронизации: 10 июля 2021. Вы можете
помочь
синхронизировать перевод, если в английской версии произошли
изменения
.
dhcpd
— реализация DHCP-сервера от
Internet Systems Consortium
. Может использоваться, к примеру, на машине, играющей роль маршрутизатора в  локальной сети.
Примечание
dhcpd
(DHCP
(server)
daemon) не следует путать с
dhcpcd
(DHCP
client
daemon).
Установка
Установите
пакет
dhcp
.
Использование
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
)
Смотрите также
RFC 1918
.
Автоматическое назначение статического IP при загрузке системы описано в статье
Настройка сети#Статический IP-адрес
.
Стандартный файл настроек,
dhcpd.conf
, содержит много незакомментированных примеров, поэтому следует переместить его в другое место, например
# cp /etc/dhcpd.conf /etc/dhcpd.conf.example
и создать на его месте новый.
Минимальная конфигурация может выглядеть следующим образом:
/etc/dhcpd.conf
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 {
  range 139.96.30.150 139.96.30.250;
}
Если необходимо выдать фиксированный IP-адрес конкретному устройству, можно также указать настройки для отдельного хоста:
/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
содержит адреса 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
для этого интерфейса:
/etc/dhcpd.conf
# Исключить 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 выполняется следующими двумя параметрами:
/etc/dhcpd.conf
next-server 192.168.0.2;
filename "/pxelinux.0";
Эти строки можно указать как в блоке
subnet
, так и в настройках отдельного хоста
host
.
next-server
представляет собой адрес TFTP-сервера, а
filename
— имя образа для загрузки. Подробнее см.
PXE
.
Смотрите также
Документация ISC DHCP