Настраиваем 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.
Ваш комментарий: