один диапазон IP-адресов. Для указания диапазона адресов используется декларация subnet, которая имеет следующий вид:
subnet 192.168.1.0 netmask 255.255.255.0 {
range 192.168.1.50 192.168.1.150;
}
Данная декларация указывает на то, что сервер действует в сети 192.168.1.0/24. Очевидно, что компьютер должен иметь сетевой интерфейс, с которым связан адрес из этой сети. В пределах данной сети распространяются широковещательные запросы, передаваемые клиентами и обслуживаемые сервером DHCP. Декларация range определяет диапазон IP-адресов, из которого сервер выбирает адреса, предоставляемые клиенту. В данном примере это адреса 192.168.1.50-192.168.1.150. При необходимости можно использовать любой диапазон, из указанной сети (192.168.1.0/24), важно, чтобы в него не попадали статические IP-адреса компьютеров, в том числе адрес самого сервера DHCP.
В файле dhcpd.conf
может присутствовать несколько деклараций subnet
. Если сервер обслуживает несколько сетей и соответственно содержит несколько сетевых интерфейсов, для каждого из интерфейсов должна быть указана подобная декларация. То же самое необходимо сделать, если на компьютере установлен всего один сетевой интерфейс, который связан с несколькими логическими подсетями. Работая с версиями dhcpd
, предшествующими 3.0, необходимо включать декларацию subnet
для каждого интерфейса, независимо от того, обслуживается ли соответствующая сеть сервером DHCP. Например, если два сетевых интерфейса компьютера подключены к сетям 192.168.1.0/24 и 172.20.30.0/24, но сервер DHCP обслуживает только сеть 192.168.1.0/24, в файле dhcpd.conf
должна находиться пустая декларация subnet
, приведенная ниже.
subnet 172.20.30.0 netmask 255.255.255.0 {
}
Возможна ситуация, когда компьютер, на котором выполняется сервер DHCP, подключен к двум сетям: одну из сетей он обслуживает сам, а в другой сети используется отдельный сервер DHCP. В этом случае целесообразно настроить сервер так, чтобы он не отвечал на запросы, поступающие из второй сети. Если в одной сети присутствуют два сервера DHCP, они должны быть настроены для совместной работы, в противном случае такая конфигурация может стать источником проблем. Для блокирования входящего трафика DHCP из второй сети можно использовать брандмауэр. (Вопросы настройки брандмауэров обсуждаются в главе 25.) Еще лучше перенести сервер DHCP на компьютер, который принадлежит только одной сети.
Эта декларация указывает на то, что сервер не должен обрабатывать запросы DHCP, поступающие с соответствующего интерфейса. При использовании версии 3.0 программы dhcpd
включать эту декларацию не обязательно.
Выделение фиксированных адресов
В большинстве случаев динамическое распределение IP-адресов обеспечивает нормальную работу компьютеров. Internet-соединение устанавливается по инициативе клиента, адрес сервера известен клиенту, а сервер получает адрес клиента в составе запроса. Периодическое изменение IP-адреса (учитывая, что адрес изменяется при перезагрузке компьютера) не мешает работе клиента (смена адреса в течение сеанса сделала бы обмен данными невозможным).
Тем не менее бывают ситуации, при которых необходимо настраивать систему DHCP так, чтобы клиентам выделялись фиксированные адреса. Подобным образом приходится поступать в том случае, если на компьютере, выполняющем функции клиента DHCP, работает какой-либо сервер. Использование фиксированных адресов упрощает диагностику сети; в этом случае, вызывая команду ping
, не приходится выяснять, какой именно адрес присвоен в данный момент тому или иному компьютеру. При наличии фиксированных IP-адресов появляется также возможность вместо адреса указывать при обращении к компьютеру доменное имя. (Далее в этой главе будет обсуждаться способ связывания доменных имен с динамическими IP-адресами.) Программа dhcpd
позволяет присваивать компьютерам фиксированные IP-адреса. Для этого надо задать MAC-адреса и сконфигурировать dhcpd
так, чтобы MAC-адресу соответствовал определенный IP-адрес. Конфигурация dhcpd
для выделения фиксированных адресов несколько сложнее, чем конфигурация, при которой выполняется динамическое распределение IP-адресов.
Определение MAC-адреса клиента
MAC-адрес используется для организации сетевого взаимодействия на самом низком уровне. При использовании сетевых карт Ethernet MAC-адрес состоит из шести байтов, значения которых обычно представляются шестнадцатеричными числами и разделяются двоеточиями, например 00:80:C8:FA:3B:0A. Каждый пакет, передаваемый устройством Ethernet по сети, содержит MAC-адрес этого устройства, поэтому программа dhcpd
имеет в своем распоряжении данные, идентифицирующие сетевую карту, а следовательно, и компьютер, в состав которого она входит. (Многие операционные системы содержат средства, позволяющие переопределять MAC-адреса, поэтому MAC-адрес не всегда однозначно идентифицирует устройство, однако в подавляющем большинстве случаев такой способ вполне применим.) В зависимости от типа сетевого оборудования, форматы MAC-адреса могут отличаться от формата, используемого Ethernet, но принцип применения таких адресов остается неизменным.
Первые три байта MAC-адреса Ethernet содержат код производителя сетевой карты; остальные три байта устанавливает предприятие, выпускающее Ethernet-карты. Информацию о кодах производителей можно найти по адресу http://www.coffer.com/mac_find/
или http://www.cavebear.com/CaveBear/Ethernet/vendor.html
. Для настройки DHCP эти сведения не требуются, но вы можете воспользоваться ими, выясняя расположение компьютеров по широковещательным запросам клиентов DHCP. Заметьте, что производитель Ethernet-карты и производитель компьютера — это, как правило, разные компании.
Для того чтобы программа dhcpd
могла использовать MAC-адрес при назначении клиенту IP-адреса, надо в первую очередь выяснить MAC-адрес. В зависимости от используемых аппаратных средств и типа операционной системы, под управлением которой работает клиентский компьютер, это можно сделать различными способами. Некоторые производители снабжают свои сетевые платы наклейками с MAC-адресами. Даже если такая наклейка имеется на вашей плате, не всегда имеет смысл открывать компьютер только для того, чтобы узнать MAC-адрес Ethernet-карты. Существуют программные средства, позволяющие получить эту информацию.
При работе с Linux и другими подобными UNIX системами MAC-адрес можно определить с помощью команды ifconfig
. Задайте команду ifconfig eth0
(или укажите при вызове ifconfig
другое имя), и утилита ifconfig
выведет информацию об указанном сетевом интерфейсе. Отображаемые данные будут выглядеть приблизительно следующим образом: