2004 г
Проект Русской Документации FreeBSD
содержание
Текст написал Greg Sutter.
DHCP, или Dynamic Host Configuration Protocol (Протокол Динамической Конфигурации
Хостов), описывает порядок, по которому система может подключиться к сети и получить
необходимую информацию для работы в ней. Во FreeBSD используется реализация DHCP от ISC
(Internet Software Consortium), так что вся информация, описывающая особенности,
зависящие от реализации, относится к дистрибутиву ISC.
В этом разделе описываются компоненты системы ISC DHCP как со стороны клиента, так и
со стороны сервера. Программа, работающая на клиентской стороне, dhclient, интегрирована в поставку FreeBSD, а серверная часть
доступна в виде порта net/isc-dhcp3-server. Кроме ссылок ниже, много полезной
информации находится на страницах справочной системы, описывающих dhclient(8), dhcp-options(5) и dhclient.conf(5).
Когда на клиентской машине выполняется программа dhclient,
являющаяся клиентом DHCP, она начинает широковещательную рассылку запросов на получение
настроечной информации. По умолчанию эти запросы делаются на 68 порт UDP. Сервер отвечает
на UDP 67, выдавая клиенту адрес IP и другую необходимую информацию, такую, как сетевую
маску, маршрутизатор и серверы DNS. Вся эта информация даётся в форме ``аренды'' DHCP и
верна только определенное время (что настраивается администратором сервера DHCP). При
таком подходе устаревшие адреса IP тех клиентов, которые больше не подключены к сети,
могут автоматически использоваться повторно.
Клиенты DHCP могут получить от сервера очень много информации. Подробный список
находится в странице Справочника dhcp-options(5).
Клиент DHCP от ISC, dhclient, полностью интегрирован во
FreeBSD. Поддержка клиента DHCP есть как в программе установки, так и в самой системе,
что исключает необходимость в знании подробностей конфигурации сети в любой сети, имеющей
сервер DHCP. Утилита dhclient включена во все версии FreeBSD,
начиная с 3.2.
DHCP поддерживается утилитой sysinstall. При настройке
сетевого интерфейса из программы sysinstall первый вопрос,
который вам задается: ``Do you want to try DHCP configuration of this interface?''
(``Хотите ли вы попробовать настроить этот интерфейс через DHCP?''). Утвердительный ответ
приведёт к запуску программы dhclient, и при удачном его
выполнении к автоматическому заданию информации для настройки интерфейса.
Есть две вещи, которые вы должны сделать для того, чтобы ваша система использовала
DHCP при загрузке:
-
Убедитесь, что устройство bpf включено в компиляцию вашего
ядра. Чтобы это сделать, добавьте строчку device bpf (pseudo-device bpf в FreeBSD 4.X) в конфигурационный файл ядра
и перестройте ядро. Более подробная информация о построении ядер имеется в Гл. 8.
Устройство bpf уже является частью ядра GENERIC, которое поставляется вместе с FreeBSD, так что, если вы не
используете другое ядро, то вам и не нужно его делать для того, чтобы работал DHCP.
Замечание: Те, кто беспокоится о безопасности, должны иметь в виду, что
устройство bpf является также тем самым устройством, которое
позволяет работать программам-снифферам пакетов (хотя для этого они должны быть запущены
пользователем root). Наличие устройства bpf необходимо для использования DHCP, но если вы чересчур
беспокоитесь о безопасности, то вам нельзя добавлять устройство bpf в ядро только для того, чтобы в неопределённом будущем
использовать DHCP.
-
Отредактируйте ваш файл /etc/rc.conf, включив в него
следующее:
ifconfig_fxp0="DHCP"
Замечание: Обязательно замените fxp0 на имя
интерфейса, который вы хотите настраивать динамически, как это описано в Разд. 11.8.
Если dhclient в вашей системе находится в другом месте или
если вы хотите задать дополнительные параметры для dhclient, то
также укажите следующее (изменив так, как вам нужно):
dhcp_program="/sbin/dhclient"
dhcp_flags=""
Сервер DHCP, dhcpd, включён как часть порта net/isc-dhcp3-server в коллекцию портов. Этот порт содержит
DHCP-сервер от ISC и документацию.
-
/etc/dhclient.conf
dhclient требует наличия конфигурационного файла, /etc/dhclient.conf. Как правило, файл содержит только комментарии,
а настройки по умолчанию достаточно хороши. Этот настроечный файл описан на страницах
справочной системы по dhclient.conf(5).
-
/sbin/dhclient
dhclient скомпонован статически и находится в каталоге /sbin. На страница Справочника dhclient(8) дается
более подробная информация о dhclient.
-
/sbin/dhclient-script
dhclient-script является специфичным для FreeBSD скриптом
настройки клиента DHCP. Он описан в dhclient-script(8), но
для нормального функционирования никаких модификаций со стороны пользователя не
требуется.
-
/var/db/dhclient.leases
В этом файле клиент DHCP хранит базу данных выданных к использованию адресов в виде
журнала. На странице dhclient.leases(5)
дается гораздо более подробное описание.
Этот раздел даёт информацию о том, как настроить систему FreeBSD для работы в качестве
сервера DHCP на основе реализации пакета DHCP от ISC (Internet Software Consortium).
Серверная часть пакета не поставляется как часть FreeBSD, так что вам потребуется
установить порт net/isc-dhcp3-relay для получения этого сервиса. Обратитесь к
Гл. 4 для получения более полной информации об использовании
коллекции портов.
Для того, чтобы настроить систему FreeBSD на работу в качестве сервера DHCP, вам
необходимо обеспечить присутствие устройства bpf(4),
вкомпилированного в ядро. Для этого добавьте строку device bpf
(pseudo-device bpf в FreeBSD 4.X) в файл конфигурации
вашего ядра. Для получения более полной информации о построении ядер, обратитесь к Гл. 8.
Устройство bpf уже входит в состав ядра GENERIC, поставляемого с FreeBSD, так что вам не нужно создавать
собственное ядро для обеспечения работы DHCP.
Замечание: Те, кто обращает особое внимание на вопросы безопасности, должны
заметить, что bpf является тем устройством, что позволяет
нормально работать снифферам пакетов (хотя таким программам требуются привилегированный
доступ). Наличие устройства bpf обязательно для использования DHCP, но если вы очень
обеспокоены безопасностью, наверное, вам не нужно включать bpf в ваше ядро только потому, что в отдалённом будущем вы
собираетесь использовать DHCP.
Следующим действием, которое вам нужно выполнить, является редактирование примерного
dhcpd.conf, который устанавливается в составе порта net/isc-dhcp3-server. По умолчанию это файл /usr/local/etc/dhcpd.conf.sample, и вы должны скопировать его в
файл /usr/local/etc/dhcpd.conf перед тем, как его
редактировать.
dhcpd.conf состоит из деклараций относительно подсетей и
хостов, и проще всего описывается на примере:
option domain-name "example.com";
option domain-name-servers 192.168.4.100;
option subnet-mask 255.255.255.0;
default-lease-time 3600;
max-lease-time 86400;
ddns-update-style none;
subnet 192.168.4.0 netmask 255.255.255.0 {
range 192.168.4.129 192.168.4.254;
option routers 192.168.4.1;
}
host mailhost {
hardware ethernet 02:03:04:05:06:07;
fixed-address mailhost.example.com;
}
- Этот параметр задаёт домен, который будет выдаваться клиентам в качестве домена,
используемого по умолчанию при поиске. Обратитесь к страницам справочной системы по resolv.conf(5) для
получения дополнительной информации о том, что это значит.
- Этот параметр задаёт список разделённых запятыми серверов DNS, которые должен
использовать клиент.
- Маска сети, которая будет выдаваться клиентам.
- Клиент может запросить определённое время, которое будет действовать выданная
информация. В противном случае сервер выдаст настройки с этим сроком (в секундах).
- Это максимальное время, на которое сервер будет выдавать конфигурацию. Если клиент
запросит больший срок, он будет подтверждён, но будет действовать только max-lease-time секунд.
- Этот параметр задаёт, будет ли сервер DHCP пытаться обновить DNS при выдаче или
освобождении конфигурационной информации. В реализации ISC этот параметр является обязательным.
- Это определение того, какие IP-адреса должны использоваться в качестве резерва для
выдачи клиентам. IP-адреса между и включая границы, будут выдаваться клиентам.
- Объявление маршрутизатора, используемого по умолчанию, который будет выдаваться
клиентам.
- Аппаратный MAC-адрес хоста (чтобы сервер DHCP мог распознать хост, когда тот делает
запрос).
- Определение того, что хосту всегда будет выдаваться один и тот же IP-адрес. Заметьте,
что указание здесь имени хоста корректно, так как сервер DHCP будет разрешать имя хоста
самостоятельно до того, как выдать конфигурационную информацию.
Как только вы закончите составлять свой dhcpd.conf, вы
можете продолжить работу запуском сервера при помощи следующей команды:
# /usr/local/etc/rc.d/isc-dhcpd.sh start
Если в будущем вам понадобится сделать изменения в настройке вашего сервера, то важно
заметить, что посылка сигнала SIGHUP приложению dhcpd не
приведёт к перезагрузке настроек, как это бывает для большинства даемонов. Вам
нужно послать сигнал SIGTERM для остановки процесса, а затем
перезапустить его при помощи вышеприведённой команды.
-
/usr/local/sbin/dhcpd
dhcpd скомпонован статически и расположен в каталоге /usr/local/sbin. Страницы справочной системы dhcpd(8),
устанавливаемые портом, содержат более полную информацию о dhcpd.
-
/usr/local/etc/dhcpd.conf
dhcpd требует наличия конфигурационного файла, /usr/local/etc/dhcpd.conf, до того, как он будет запущен и начнёт
предоставлять сервис клиентам. Необходимо, чтобы этот файл содержал все данные, которая
будет выдаваться обслуживаемым клиентам, а также информацию о работе сервера. Этот
конфигурационный файл описывается на страницах справочной системы
dhcpd.conf(5),
которые устанавливаются портом.
-
/var/db/dhcpd.leases
Сервер DHCP ведёт базу данных выданной информации в этом файле, который записывается в
виде протокола. Страницы справочной системы
dhcpd.leases(5),
устанавливаемые портом, дают гораздо более подробное описание.
-
/usr/local/sbin/dhcrelay
dhcrelay используется в сложных ситуациях, когда сервер
DHCP пересылает запросы от клиента другому серверу DHCP в отдельной сети. Если вам нужна
такая функциональность, то установите порт net/isc-dhcp3-server. На страницах справочной системы dhcrelay(8), которые
устанавливаются портом, даётся более полное описание.
|
|