Всем добра!
В наш время существует множество реализаций DHCP серверов, много лет я использую реализацию ISC DHCP от Internet Systems Consortium.
Исторически так сложилось,что для работы я использую FreeBSD. Поэтому рассмотрим установку и первоначальную настройку DHCP сервера именно в этой системе.
Для Linux дистрибутивов отличия только в установке (apt, yum, etc) и отличия в системе логирования.
Итак, дано:
- FreeBSD 12.0 с двумя сетевыми интерфейсами em0 — внешняя сеть (интернет), em1 — локальная сеть
- em1 — inet 10.250.250.1 netmask 255.255.255.1
- Создаваемый DHCP пул 10.250.250.10-10.250.250.100
- На этом же хосте поднят кеширующий DNS сервер Unbound, работающий на интерфейсе em1
В этот раз я пренебрегу установкой из портов, т.к. мне не нужны какие-либо дополнительные опции, заодно сэкономим на установки время
Поищем нужный нам пакадж через pkg:
# pkg search isc-dhcp isc-dhcp44-client-4.4.1 The ISC Dynamic Host Configuration Protocol client isc-dhcp44-relay-4.4.1 The ISC Dynamic Host Configuration Protocol relay isc-dhcp44-server-4.4.1_3 ISC Dynamic Host Configuration Protocol server
Нам нужен сервер, установим его:
# pkg install isc-dhcp44-server-4.4.1_3
Разрешим запуск нашего DHCP сервера и пропишем несколько настроек в /etc/rc.conf
# vi /etc/rc.conf dhcpd_enable="YES" # Разрешаем запуск dhcpd_flags="-q" # Наверное тихий режим)(Quiet) dhcpd_conf="/usr/local/etc/dhcpd.conf" # Указываем конфигурационный файл dhcpd_ifaces="em1" # На каком интерфейсе работаем dhcpd_withumask="022" # маска создаваемых файлов
Редактируем конфигурационный файл:
# vi /usr/local/etc/dhcpd.conf
# Делаем наш сервер авторитарным authoritative; # Указываем поток для syslog log-facility local7; #Описываем наш пул subnet 10.250.250.0 netmask 255.255.255.0 { # Пул адресов range 10.250.250.10 10.250.250.100; # Указываем DNS сервер option domain-name-servers 10.250.250.1; # Указываем шлюз option routers 10.250.250.1; # Время аренды IP адреса в секундах (30 суток) default-lease-time 2592000; max-lease-time 2592000; }
Сделаем вывод отдельного лога для DHCPd сервера и подавим вывод в /var/log/message:
# vi /etc/syslog.conf local7.* /var/log/dhcpd.log *.notice;authpriv.none;kern.debug;lpr.info;mail.crit;news.err;local7.none /var/log/messages
Обратите внимание на local7.none, указанную для /var/log/messages — эта запись не даст дублироваться информации в лог messages
Создадим файл лога:
# touch /var/log/dhcpd.log
Перезапустим Syslog и запустим DHCPd:
# /etc/rc.d/syslogd restart # /usr/local/etc/rc.d/isc-dhcpd start
Настроим ротацию лога dhcpd.log с помощью newsyslog:
# vi /usr/local/etc/newsyslog.conf.d/services /var/log/dhcpd.log 600 7 100 * J
Будем сохранять семь архивных логов, размер лога до 100Кб, далее сжимаем в bz2
Рестартанем newsyslog:
# /etc/rc.d/newsyslog restart
Запустим какой-нибудь хост в локальной сети и посмотрим вывод dhcpd.log:
# less /var/log/dhcpd.log Feb 25 17:09:16 test dhcpd[8970]: DHCPDISCOVER from 08:00:27:bd:c2:0d via em1 Feb 25 17:09:17 test dhcpd[8970]: DHCPOFFER on 10.250.250.10 to 08:00:27:bd:c2:0d (TEST-VB7) via em1 Feb 25 17:09:17 test dhcpd[8970]: DHCPREQUEST for 10.250.250.10 (10.250.250.2) from 08:00:27:bd:c2:0d (TEST-VB7) via em1 Feb 25 17:09:17 test dhcpd[8970]: DHCPACK on 10.250.250.10 to 08:00:27:bd:c2:0d (TEST-VB7) via em1 Feb 25 17:10:06 test dhcpd[8970]: DHCPINFORM from 10.250.250.10 via em1
Вроде как все, скорей всего еще будет пару заметок про резервацию адресов, про PXE загрузку бездисковых клиентов и т.п.