DHCP (англ. Dynamic Host Configuration Protocol — протокол динамической конфигурации узла) — это сетевой протокол, позволяющий компьютерам автоматически получать IP-адрес и другие параметры, необходимые для работы в сети TCP/IP. Данный протокол работает по модели «клиент-сервер». Для автоматической конфигурации компьютер-клиент на этапе конфигурации сетевого устройства обращается к т. н. серверу DHCP, и получает от него нужные параметры. Сетевой администратор может задать диапазон адресов, распределяемых сервером среди компьютеров. Это позволяет избежать ручной настройки компьютеров сети и уменьшает количество ошибок.
Это вступлении к статьи о DHCP в Википедии [1]. Рекомендую прочитать, возможно узнаете что-либо новенькое. Ну а я приступаю к описанию установки и настройки DHCP-сервера.
Устанавливать будем из портов (надеюсь они у вас в актуальном состоянии). Перед компиляцией порта сервера DHCP надо убедиться, встроено ли устройство bpf в ядро. Если нет - пересоберите ядро с поддержкой bpf.
# cd /usr/ports/net/isc-dhcp31-server && make install clean
Options for isc-dhcp31-server 3.1.3 [X] DHCP_PARANOIA add -user, -group and -chroot options [X] DHCP_JAIL add -chroot and -jail options [ ] DHCP_SOCKETS use sockets instead of /dev/bpf (jail-only) [X] OPENSSL_BASE use the base system OpenSSL (required by TLS) [ ] OPENSSL_PORT use OpenSSL from ports (required by TLS) |
Опции оставляю по дефолту.
По завершению установки порт уведомляет нас о создании пользователя и группы dhcp, а также выводит на экран информацию, которая по мнению разработчиков может пригодится при настройке.
После установки есть пример файла конфигурации: /usr/local/etc/dhcpd.conf.sample. Однако мы не ищем легких путей и будем "ваять" свой
Создадим конфигурационный файл:
# touch /usr/local/etc/dhcpd.conf |
Потом наполняем этот файл необходимыми параметрами, в зависимости от поставленых задач. В моем случае конфигурационный файл получился такой:
# *** Глобальные параметры *** #
# Какое доменное имя будем присваивать хостам # Описываем сроки аренды адреса # Делаем наш сервер "авторитетным" для обслуживаемых сетей # Указываем, что мы не используем динамически обновляемые ДНС # Указываем, как поступать серверу с неизвестными клиентами. В моем случае им будет # *** Описываем подсети *** #
# Задаем подсеть # Описываем диапазон, из которого будем выдавать IP # Указываем ДНС-сервера # Указываем шлюз для сети } # Вторая подсеть. Опции аналогичны первой subnet 10.16.33.0 netmask 255.255.255.0 { # Описываем отдельные хосты
|
Вот такой вот коротенький конфигурационный файл. Тем не менее - конфиг полностью рабочий. Более детально ознакомиться с возможностями можно на странице руководства dhcpd.conf [2].
Далее добавляем в rc.conf опции запуска dhcp-сервера. Их целый блок
# cat /etc/rc.conf | grep dhcp dhcpd_enable="YES" # dhcpd включен? dhcpd_flags="-q" # исполняемые опции dhcpd_conf="/usr/local/etc/dhcpd.conf" # Полный путь к конфигурационному файлу dhcpd_ifaces="vlan32 vlan33" # На каких интерфейсах "слушать" запросы dhcpd_withumask="022" dhcpd_chuser_enable="YES" # Запуск без привилегий? dhcpd_withuser="dhcpd" # От имени какого пользователя стартовать сервер dhcpd_withgroup="dhcpd" # От имени какой групы стартовать сервер dhcpd_chroot_enable="YES" # Запускать chroot? dhcpd_devfs_enable="YES" # Использовать devfs если доступно? dhcpd_rootdir="/var/db/dhcpd" # Директория для запуска dhcpd_flags="-early_chroot" |
Запускаем DHCP-сервер.
# sh /usr/local/etc/rc.d/isc-dhcpd start Starting dhcpd. Internet Systems Consortium DHCP Server V3.1.3 Copyright 2004-2009 Internet Systems Consortium. All rights reserved. For info, please visit https://www.isc.org/software/dhcp/ [3] Wrote 0 leases to leases file. Listening on BPF/vlan33/00:14:5e:22:11:2a/10.16.33/24 Sending on BPF/vlan33/00:14:5e:22:11:2a/10.16.33/24 Listening on BPF/vlan32/00:14:5e:22:11:2a/10.16.32/24 Sending on BPF/vlan32/00:14:5e:22:11:2a/10.16.32/24 Sending on Socket/fallback/fallback-net |
Вуаля... Все получилось. Чего и вам желаю