notby.NET Logo

Настройка DHCP-сервера ISC-DHCP в FreeBSD 14.1

Протокол DHCP используется для автоматического получения параметров сетевого интерфейса. В качестве DHCP-сервера будет использоватся ISC-DHCP от некоммерческой организации Internet Systems Consortium, который себя зарекомендовал как надежный и безопасный. DHCP будет настроен для использования в локальной сети, для выдачи IP-адресов из пула адресов и статических IP-адреса от MAC-адресов.

Internet Systems Consortium прекратила поддержку ISC-DHCP в конце 2022 года и версия 4.4.3-P1 является последней, это означает что больше не будет новых версий и исправления ошибок в последней.
Сервер ISC-DHCP можно продолжать использовать еще много времени, все уязвимости были исправлены в нем более 10 лет назад. За этот период в нем не произошло много изменений и не было найдено уязвимостей или серьезных ошибок. Возможно к FreeBSD 20 его необходимо будет заменить, по причине отсутствия поддержки каких-либо особенностей будущих архитектур компьютеров или операционных систем.

1. Установка ISC-DHCP

Устанавливаем через пакеты

pkg install isc-dhcp44-server

Или устанавливаем из портов, с нужными опциями

cd /usr/ports/net/isc-dhcp44-server/ && make install clean
Установка ISC-DHCP версии 4.4.3-P1 из портов FreeBSD, выбор параметров сборки

Дожидаемся окончания установки.

2. Настройка и конфигурация ISC DHCP-сервера (dhcpd.conf)

Файл конфигурации dhcpd.conf находится по адресу /usr/local/etc/dhcpd.conf

Открываем файл конфигурации и редактируем

nano /usr/local/etc/dhcpd.conf

Настройка и описание основных параметров файла конфигурации dhcpd.conf для автоматической выдачи IP-адресов и настроек для сетевых интерфейсов устройств внутри локальной сети:

# dhcpd.conf
### Глобальные настройки для всех групп и пулов:

# DNS-сервера передаваемые клиенту.
option domain-name-servers 192.168.0.1; # IP-адрес этого сервера, если DNS-сервер работает.
#option domain-name-servers 1.1.1.1, 1.0.0.1; # Публичные DNS-сервера CloudFlare.

# Время в секундах, по прошествии которого клиент должен запросить продление аренды IP-адреса.
default-lease-time 43200;
# Время в секундах на которое IP-адрес резервируется за клиентом,
# по прошествии которого IP-адрес может быть выдан другому устройству.
max-lease-time 86400;

# DNS-сервер является авторитетным, основным в локальной сети и послылает DHCP-NAK клиентам.
# Если IP-адрес клиента не из пула сервера, ему будет выдан новый IP-адрес.
authoritative;

# Указание источника, который будет отправлен в Syslog. Подробнее в следующем разделе статьи.
# По умолчанию сообщения отправляются в daemon.log лог-файл.
log-facility local7;

# Настройка локальной сети и параметров выдачи IP-адресов:

# Описание локальной сети. Локальная сеть 192.168.0.0/24
subnet 192.168.0.0 netmask 255.255.255.0 {
  range 192.168.0.20 192.168.0.80; # Диапазон выдаваемых IP-адресов.
  option routers 192.168.0.1;   # IP-адрес шлюза.
}

### Выдача фиксированых IP-адресов в зависимости от MAC-адресов сетевых интерфейсов:

# Секция host может иметь любое название, например укажем laptop
host laptop {
  # MAC-адрес сетевой карты устройства.
  hardware ethernet B4:0D:AC:AA:3F:56;
  # IP-адрес который будет выдан, НЕ из пула динамических адресов.
  fixed-address 192.168.0.3;
}

host Home-NAS {
  hardware ethernet EC:FD:52:0A:90:8D;
  fixed-address 192.168.0.4;
}

host computer {
  hardware ethernet EC:22:80:40:32:27;
  fixed-address 192.168.0.5;
}

Сохраняем файл и закрываем его.

3. Настройка отдельного лог-файла dhcpd.log

В документации разработчиками были заложены примеры настроек, согласно которым необходимо использовать источник логирования local7, который указывается в параметре log-facility файла конфигурации. Если не создавать правило логирования под источник local7, то все сообщения будут отправлятся в daemon.log лог-файл. Имя local7 не конфликтует с другими сервисами, поэтому всегда можно использовать любое.

Создаем файл isc-dhcpd.conf в каталоге /etc/syslog.d/

nano /etc/syslog.d/isc-dhcpd.conf

следующего содержимого:

local7.*        /var/log/dhcpd.log

Сохраняем и записываем файл.

Создаем лог-файл dhcpd.log в каталоге /var/log/

touch /var/log/dhcpd.log

Разрешаем чтение и запись только root-пользователю

chmod 0600 /var/log/dhcpd.log

Перегружаем Syslog, чтобы применились изменения в правилах

service syslogd reload

4. Автозагрузка и запуск ISC-DHCP

Открываем файл /etc/rc.conf

nano /etc/rc.conf

и добавляем строки:

dhcpd_enable="YES"
dhcpd_ifaces="em1"

где em1 – имя сетевого интерфейса на котором будет работать DHCP-сервер.

Запускаем ISC-DHCP сервер

service isc-dhcpd start
Сервер ISC-DHCP успешно запущен командой “service isc-dhcpd start” в FreeBSD

Сервер успешно запущен, можно приступать к проверке.

Пробуем получить IP-адрес и настройки сетевого интерфейса. В случае ошибок смотрим содержимое лог-файла.