DHCP


Протокол динамической конфигурации хоста (Dynamic Host Configuration Protocol, DHCP) — это стандартный способ присвоения IP-адресов клиентским компьютерам. Изначально службы DHCP не интегрированы в систему FreeBSD, но они часто требуются для обеспечения работы бездисковых рабочих станций и в случае использования метода установки РХЕ (Preboot Execution Environment — предварительная загрузка среды исполнения). Далее рассматриваются основы настройки DHCP, без расширенных возможностей, чтобы дать вам лишь объем знаний, достаточный для настройки компьютеров в офисе, бездисковых клиентов или глобальной сети, связывающей несколько офисов.

Коллекция «портов» FreeBSD включает демон ISC dhcpd, разработанный той же группой программистов-создателей BIND (глава 14). «Порт» можно найти в каталоге /usr/ports/net/isc-dhcp3-server. Установите этот «порт», следуя инструкциям из главы 11. Вам будет предложено меню с начальными параметрами настройки, в том числе многих особенностей и возможностей демона ISC dhcpd, таких как интеграция с LDAP. Значения по умолчанию вполне пригодны для эксплуатации в большинстве случаев и включают множество параметров обеспечения безопасности. В набор устанавливаемых компонентов входят dhcpd(8), конфигурационный файл /usr/local/etc/dhcpd.conf и обширные страницы руководства.

Принцип действия DHCP

В сетях со сложной структурой DHCP может оказаться ужасно сложным, но в офисной сети Ethernet он довольно прост. Каждый клиент DHCP отправляет в локальную сеть широковещательный запрос на получение информации о сетевых настройках. Если сервер DHCP находится в этой локальной сети, он получает запрос непосредственно. Если сервер DHCP находится в другом сегменте сети, маршрутизатор этого сегмента должен знать, на какой IP-адрес передавать DHCP-запросы. После этого сервер отправляет клиенту информацию с настройками и запоминает, какому клиенту какой IP-адрес был присвоен. Конфигурация, переданная клиенту, называется договором о найме (lease). Подобно договорам, по которым вы снимаете жилье или берете напрокат автомобиль, договор о найме DHCP имеет свой срок действия и должен время от времени возобновляться.

В запросе клиент может затребовать определенные характеристики, например, клиенты Microsoft запрашивают IP-адрес сервера WINS, а бездисковые системы — местоположение ядра. При необходимости вы можете управлять всеми этими характеристиками.

Каждый клиент идентифицируется по МАС-адресу сетевой карты, используемой для подключения к сети. Информация о МАС-адресах, IP-адресах, а также о договорах найма сохраняется в файле /var/db/dhcpd/dhcpd.leases. С помощью этого файла можно определить, какому хосту какой IP-адрес был присвоен. Если хост отключается от сети, а потом появляется снова, dhcpd(8) стремится присвоить ему тот же самый IP-адрес, если он в этот промежуток времени не был присвоен другому клиенту.

Управление dhcpd(8)

Чтобы разрешить запуск dhcpd(8) во время загрузки, следует добавить в /etc/rc.conf следующую строку:

dhcpd_enable="YES"

Добавив эту строку, вы сможете использовать сценарий /usr/local/etc/rc.d/isc-dhcpd для запуска и останова демона.

Конфигурирование dhcpd(8)

Файл /usr/local/etc/dhcpd.conf содержит все возможные параметры настройки демона dhcpd. Описание всех возможностей dhcpd(8) может занять целую книгу, поэтому мы остановимся лишь на основных функциях, необходимых для работы в сети малого офиса, а также на параметрах, которые будут использоваться в примерах ниже. По умолчанию файл dhcpd.conf содержит множество подробных комментариев и примеров, но и электронное руководство является достаточно полным. Мы будем исходить из предположения, что в нашей сети есть только один сервер DHCP, отвечающий на все DHCP-запросы. (В принципе можно реализовать службу DHCP на базе кластера, чтобы повысить отказоустойчивость, но эта тема далеко выходит за рамки нашей книги.) Начнем рассмотрение dhcpd.conf с нескольких общих правил, описывающих конфигурацию клиентов:

Каждый клиент DHCP регистрирует свое имя хоста на сервере, а сам сервер должен знать имя локального домена. (В принципе есть возможность организовать назначение клиентам и имен хостов.) Имя домена устанавливается с помощью параметра domain-name (1). Вы можете присвоить своим клиентам DHCP любое имя домена, которое не обязательно должно совпадать с именем домена сервера. Можно указать несколько имен доменов, разделив их пробелами, но не все операционные системы способны распознавать дополнительные домены.

Каждому клиенту сетей TCP/IP необходим один или два сервера DNS. Укажите их с помощью параметра domain-name-servers (2). Серверы имен в списке следует разделять запятыми.

Обычная продолжительность договора о найме (в секундах) определяется параметром default-lease-time (3). По истечении этого времени клиент запросит у сервера новый договор DHCP. Если сервер DHCP окажется недостижим для клиента, он будет продолжать использовать старый договор в течение времени (в минутах), определяемого параметром max-lease-time (4).

Если ваш сервер DHCP единственный в сети, известите dhcpd(8), что его слово в настройке клиента является решающим, добавив ключевое слово authoritative (5).

DHCP может интегрироваться с динамическим DNS, который не рассматривается в этой книге. Наиболее типичный пример использования динамического DNS — служба Microsoft Active Directory. Если вы работаете со службой AD, то скорее всего используете сервер Microsoft DHCP Server, а не ISC dhcpd. При отсутствии AD вам едва ли потребуется динамический DNS. Укажите серверу, что ему не нужно обновлять глобальный DNS, указав параметр ddns-update-style none (6).

Наконец, можно указать, куда демон dhcpd(8) должен отправлять сообщения для протокола (7). Дополнительную информации о протоколировании вы найдете в главе 19.

Для каждой подсети в вашей сети должно присутствовать определение subnet, где указывается идентификационная информация для клиентов DHCP в этой подсети. Пример определения подсети для единой сети офиса:

Объявление каждой подсети начинается определением адреса сети и сетевой маски (1). В данном случае определяется IP-сеть 192.168.1.0 с сетевой маской 255.255.255.0, или диапазон IP-адресов от 192.168.1.1 по 192.168.1.255. Информация в скобках, следующих за объявлением подсети, относится ко всем хостам в этой конкретной подсети.

Ключевое слово range (2) определяет диапазон IP-адресов, которые демон dhcpd(8) может присваивать клиентам. В этом примере клиентам доступен 51 IP-адрес. Если к серверу одновременно попробуют обратиться 52 клиента DHCP, последний из них не получит IP-адрес.

Маршрут по умолчанию определяется с помощью параметра routers (3). Примечательно, что вам не нужно определять дополнительные маршруты с помощью dhcpd(8), — маршрутизатор локальной сети должен обеспечивать доступность адресатов сам. Если в локальной сети присутствует несколько шлюзов, ваш шлюз сам будет обмениваться с клиентами пакетами ICMP для перенаправления их на нужный маршрут. (Ничего страшного, если вам неясно, о чем речь. Когда понадобится, вы быстро начнете понимать то, о чем я говорю, а если такая необходимость никогда не возникнет, значит вы впустую потратили несколько секунд на чтение этих слов.)

Вы можете проявить снисходительность к клиентам Microsoft и определить сервер WINS (4). Обычно в каждом сегменте сети присутствует свой сервер WINS. Если у вас только одна сеть или только один комплект серверов WINS, можно разместить параметр netbios-name-servers за пределами определения подсети.

Если у вас несколько подсетей, создайте описание для каждой из них.

Вот и все! Отредактируйте dhcpd.conf, запустите dhcpd(8) и загляните в файл протокола, чтобы увидеть, как клиенты будут получать адреса.

Комментарии запрещены.