dhcpd (Русский)

From ArchWiki
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.

Состояние перевода: На этой странице представлен перевод статьи 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.

Смотрите также