FreeBSD: настройка DHCP-сервера на базе ISC DHCP Server

Настраиваем DHCP сервер для офисной сети.

Содержание

Установка

Получаем доступные версии DHCP-сервера:

pkg search "isc-dhcp.*-server"

Устанавливаем пакет:

pkg install isc-dhcp41-server

Установка из коллекции портов

Если необходимо, DHCP-сервер можно собрать из портов.

Обновляем коллекцию портов:

portsnap fetch update

Если коллекция портов используется впервые, получаем ее актуальную версию:

portsnap fetch extract

Получаем доступные версии DHCP-сервера:

echo /usr/ports/net/isc-dhcp*-server

Устанавливаем:

cd /usr/ports/net/isc-dhcp41-server
make install

Настройка

Редактируем файл конфигурации:

ee /usr/local/etc/dhcpd.conf

В минимальной конфигурации необходимо задать параметры, выделенные жирным шрифтом, примеры удалить или закомментировать.

# DNS серверы
option domain-name-servers 192.168.0.1, 192.168.0.2;

# Время в секундах, по истечению которого клиент должен запросить продление аренды
default-lease-time 600;

# Время аренды IP адреса в секундах
# Клиент должен освободить IP-адрес, если в течение заданного времени аренду продлить не удалось
# Если аренда не продлена, сервер может выдать этот адрес другому клиенту
max-lease-time 7200;

# Выдавать клиенту новый адрес, если запрошенный клиентом адрес не входит в пул сервера
authoritative;

# Источник, который будет указан при отправке сообщений в Syslog
log-facility local7;

# Декларация подсети
subnet 192.168.0.0 netmask 255.255.255.0 {
  # Пул динамических адресов
  range 192.168.0.129 192.168.0.189;
  # Шлюз
  option routers 192.168.0.1;
}

# Задать фиксированный IP-адрес для хоста
#host Name {
#  hardware ethernet 00:26:5e:66:6c:08;
#  fixed-address 192.168.0.190;
#}

Настройка логов

Редактируем syslog.conf:

ee /etc/syslog.conf

Сохраняем сообщения о присвоении адресов в dhcpd.log, предупреждения и ошибки дублируем в messages.

Добавляем следующие строки:

!dhcpd
*.info                                          -/var/log/dhcpd.log
!*

Задаем параметры ротации.

Проверяем, поддерживается ли вашей системой newsyslog.conf.d

ls /etc/newsyslog.conf.d && echo ok

Если в вашей системе отсутствует папка newsyslog.conf.d, редактируем newsyslog.conf:

ee /etc/newsyslog.conf

Если папка newsyslog.conf.d имеется, создаем папку с тем же именем в /usr/local/etc:

mkdir /usr/local/etc/newsyslog.conf.d

Создаем файл c правилами ротации логов:

ee /usr/local/etc/newsyslog.conf.d/isc-dhcp-server

Ежедневная ротация в полночь с сохранением логов за неделю:

/var/log/dhcpd.log                      600  7     *    @T00  JC

Создаем лог-файл:

touch /var/log/dhcpd.log

Перезагружаем конфигурацию syslogd:

service syslogd reload

Запуск

Редактируем rc.conf:

ee /etc/rc.conf

Включаем запуск ISC DHCP Server, и задаем сетевые интерфейсы, обслуживаемые нашим сервером:

dhcpd_enable="YES"
dhcpd_ifaces="fxp0"

Запускаем dhcpd:

service isc-dhcpd start

В случае успешного запуска видим следующий текст:

Internet Systems Consortium DHCP Server 4.1-ESV-R3
Copyright 2004-2011 Internet Systems Consortium.
All rights reserved.
For info, please visit https://www.isc.org/software/dhcp/
Wrote 1 leases to leases file.
Listening on BPF/fxp0/08:00:27:a9:a8:7d/192.168.0.0/24
Sending on   BPF/fxp0/08:00:27:a9:a8:7d/192.168.0.0/24
Sending on   Socket/fallback/fallback-net

Если ошибок при запуске не возникло, проверяем, раздаются ли IP-адреса.

Для принудительного обновления IP-адреса в Windows, в командной строке используем команды:

ipconfig /release
ipconfig /renew

Проверяем лог-файл:

cat /var/log/dhcpd.log

Решение проблем

В случае проблем, анализируем DHCP трафик:

tcpdump -vni fxp0 udp port 67

Ошибка "Host is down"

Если в логе встречается ошибка:

dhcpd: DHCPACK on 192.168.0.187 to d4:0b:1a:45:cd:f7 (android) via fxp0
dhcpd: send_packet: Host is down
dhcpd: dhcp.c:4023: Failed to send 300 byte long packet over fallback interface.

При отправке ответа DHCP-сервера, не получен отклик на ARP-запрос от удаленного хоста.

Для решения проблемы, необходимо локализовать и устранить потери в сети.

Кстати, fallback interface, это штатный, указанный нами, сетевой интерфейс, он используется для отправки датаграмм с IP-адреса сервера. Основной интерфейс прослушивается в режиме raw socket, при ответе через него, адрес сервера был бы 0.0.0.0.

Дополнительная информация

Обзор протокола в Википедии: DHCP

Руководство FreeBSD: Автоматическая настройка сети (DHCP)

FreeBSD. Подробное руководство: DHCP

Другой пример настройки: FreeBSD: DHCP-сервер для локальной сети на базе ISC DHCP Server

Страницы справки: dhcpd.conf, dhcpd.

 

 

Ваш комментарий:


Вы не бот: