Настройка DHCP-сервера

24.2. Настройка DHCP-сервера

Чтобы настроить DHCP-сервер, необходимо создать файл конфигурации /etc/dhcpd.conf. Пример конфигурации можно найти в файле /usr/share/doc/dhcp-<version>/dhcpd.conf.sample.

DHCP также использует файл /var/lib/dhcp/dhcpd.leases для хранения базы данных с информацией об аренде клиентов. За дополнительной информацией обратитесь к разделу 24.2.2 База данных аренды.

24.2.1. Файл конфигурации

Настройка DHCP-сервера начинается с создания файл конфигурации, содержащего сетевую информацию для клиентов. В файле могут быть описаны глобальные для всех клиентов параметры, а также параметры отдельных клиентских компьютеров.

Файл конфигурации может содержать дополнительные символы табуляции и пустые строки, облегчающие форматирование. Ключевые слова не чувствительны к регистру, а строки, начинающиеся с символа решетки (#), являются комментариями.

В настоящее время реализованы две схемы обновления DNS — режим непосредственного обновления DNS (ad-hoc) и не утверждённый пока предварительный режим взаимодействия DHCP-DNS (interim). Если/когда комитет по техническому развитию Интернета (Internet Engineering Task Force, IETF) включит эти механизмы в процесс стандартизации, появится третий режим — стандартный способ обновления DNS. DHCP-сервер должен быть настроен на использование одной из двух существующей схем. Версия 3.0b2pl11 и предыдущие версии используют непосредственный режим; однако, он является устаревшим. Чтобы сохранить прежнее поведение, добавьте в начало файла конфигурации следующую строку:

ddns-update-style ad-hoc;

Чтобы использовать рекомендуемый режим, добавьте в начало файла конфигурации следующую строку:

ddns-update-style interim;

За подробными сведениями о различных режимах обратитесь к странице man dhcpd.conf.

В файле конфигурации существуют два типа операторов:

  • Параметры — Определяют, как выполнять задачу, выполнять ли её вообще, или какие сетевые параметры передаются клиенту.

  • Объявления — Описывают топологию сети, клиентов, предоставляют адреса для клиентов, или сопоставляют группу параметров группе объявлений.

Некоторые параметры должны начинаться с ключевого слова option, которое показывает, что они необязательны. Такие параметры определяют необязательные переменные DHCP; тогда как другие параметры определяют значения, являющиеся обязательными или управляющие поведением DHCP сервера.

Параметры (включая необязательные), объявленные перед разделом, заключенным в фигурные скобки ({ }), считаются глобальными. Глобальные параметры действуют во всех разделах, следующих ниже.

ВажноВажно
 

Если файл конфигурации изменён, изменения не вступают в силу до перезапуска демона DHCP с помощью команды: service dhcpd restart.

ПодсказкаПодсказка
 

Вместо того, чтобы менять файл конфигурации DHCP и каждый раз перезапустить службу, можно воспользоваться командой omshell, предоставляющий способ интерактивного подключения, запроса и изменения конфигурации DHCP-сервера. Благодаря omshell, можно вносить все изменения при работающем сервере. За дополнительными сведениями об omshell обратитесь к странице man omshell.

На Example 24-1 параметры routers, subnet-mask, domain-name, domain-name-servers и time-offset используются для всех следующих ниже объявлений host.

Кроме этого, можно объявить параметр subnet (подсеть);объявление subnet должно включаться в описание каждой подсети. В противном случае DHCP-сервер не запустится.

В этом примере определяются глобальные параметры каждого DHCP-клиента в подсети и диапазон (range). Клиенты получают IP-адреса из указанного диапазона.

subnet 192.168.1.0 netmask 255.255.255.0 {
        option routers                  192.168.1.254;
        option subnet-mask              255.255.255.0;

        option domain-name              "example.com";
        option domain-name-servers       192.168.1.1;

        option time-offset              -18000;     # Eastern Standard Time

	range 192.168.1.10 192.168.1.100;
}

Пример 24-1. Объявление подсети

Все подсети, находящиеся в одной физической сети, должны быть описаны в объявлении shared-network, как показано в примере 24-2. Параметры, находящиеся внутри объявления shared-network, но снаружи закрытого объявления subnet, считаются глобальными. Вместо name в объявлении shared-network следует указывать описательное название сети, например, «test-lab», описывающее все подсети в среде тестовой лаборатории.

shared-network name {
    option domain-name              "test.redhat.com";
    option domain-name-servers      ns1.redhat.com, ns2.redhat.com;
    option routers                  192.168.0.254;
    дополнительные параметры общей сети EXAMPLE
    subnet 192.168.1.0 netmask 255.255.252.0 {
        параметры подсети
        range 192.168.1.1 192.168.1.254;
    }
    subnet 192.168.2.0 netmask 255.255.252.0 {
        параметры подсети
        range 192.168.2.1 192.168.2.254;
    }
}

Пример 24-2. Объявление общей сети

Как показано в примере 24-3, объявление group может использоваться для сопоставления глобальных параметров группе объявлений. Например, можно группировать общие сети, подсети и узлы.

group {
   option routers                  192.168.1.254;
   option subnet-mask              255.255.255.0;

   option domain-name              "example.com";
   option domain-name-servers       192.168.1.1;

   option time-offset              -18000;     # Eastern Standard Time

   host apex {
      option host-name "apex.example.com";
      hardware ethernet 00:A0:78:8E:9E:AA; 
      fixed-address 192.168.1.4;
   }

   host raleigh {
      option host-name "raleigh.example.com";
      hardware ethernet 00:A1:DD:74:C3:F2;
      fixed-address 192.168.1.6;
   }
}

Пример 24-3. Объявление группы

Чтобы настроить DHCP-сервер, выдающий в аренду динамические IP-адреса внутри подсети, измените пример 24-4 в соответствии со своими параметрами. Здесь определены время аренды по умолчанию, максимальное время аренды и значения сетевых параметров клиентов. В этом примере параметр range определяет, что клиентам назначаются IP-адреса из диапазона 192.168.1.10 — 192.168.1.100.

default-lease-time 600;
max-lease-time 7200;
option subnet-mask 255.255.255.0;
option broadcast-address 192.168.1.255;
option routers 192.168.1.254;
option domain-name-servers 192.168.1.1, 192.168.1.2;
option domain-name "example.com";

subnet 192.168.1.0 netmask 255.255.255.0 {
   range 192.168.1.10 192.168.1.100;
}

Пример 24-4. Параметер range

Чтобы выдать клиенту IP-адрес, исходя из MAC-адреса его сетевой платы, используйте параметр hardware ethernet внутри объявления host. Показанное на примере 24-5 объявление host apex определяет, что сетевая карта с MAC адресом 00:A0:78:8E:9E:AA всегда получает в аренду IP-адрес 192.168.1.4.

Обратите внимание, также можно использовать необязательный параметр host-name для назначения клиенту имени узла.

host apex {
   option host-name "apex.example.com";
   hardware ethernet 00:A0:78:8E:9E:AA; 
   fixed-address 192.168.1.4;
}

Пример 24-5. Назначение постоянного IP-адреса с помощью DHCP

ПодсказкаПодсказка
 

Представленный здесь пример файла конфигурации можно использовать как отправную точку, и добавлять в него дополнительные параметрыt. Чтобы скопировать его в подходящее размещение, воспользуйтесь следующей командой:

cp /usr/share/doc/dhcp-<version-number>/dhcpd.conf.sample /etc/dhcpd.conf
(где <version-number> — номер версии DHCP).

Полный список параметров, объявлений и их предназначение вы можете найти на странице man dhcp-options.

24.2.2. База данных аренды

В файле /var/lib/dhcp/dhcpd.leases на DHCP-сервере находится база данных аренды адресов DHCP-клиентами. Этот файл не следует изменять вручную. В эту базу автоматически вносится информация о DHCP-аренде для каждого только что выданного IP-адреса. Эта информация включает в себя продолжительность аренды адреса арендующим узлом, даты начала и конца аренды, а также MAC-адрес сетевой карты, который был использован для получения аренды.

В базе данных аренды указывается не местное время, а время по Гринвичу (GMT).

База данных аренды время от времени инициализируется, поэтому она не слишком велика. Сначала информация о всех известных арендах сохраняется во временной базе данных. Затем файл dhcpd.leases переименовывается в dhcpd.leases~ и временная база переписывается в файл dhcpd.leases.

Работа DHCP-демона может быть прервана или в системе может произойти сбой, после того как база данных аренды была переименована в резервный файл, но до того, как записался новый файл. В этом случае файл dhcpd.leases, необходимый для запуска службы, будет отсутствовать. Не создавайте новый файл аренды. Если вы сделаете это, все сведения о старых арендах будут потеряны, что приведёт к многочисленным проблемам. Правильным решением будет переименовать резервный файл dhcpd.leases~ в dhcpd.leases, а затем запустить службу.

24.2.3. Запуск и остановка сервера

ВажноВажно
 

Если DHCP-сервер запускается впервые и файл dhcpd.leases не существует, сервер не сможет запуститься. Воспользуйтесь командой touch /var/lib/dhcp/dhcpd.leases, чтобы создать файл, если он не существует.

Если на том же компьютере работает BIND в качестве DNS-сервере, этот шаг не является обязательным, так как при запуске службы named файл dhcpd.leases проверяется автоматически.

Чтобы запустить службу DHCP, выполните команду: /sbin/service dhcpd start. Чтобы остановить службу DHCP, выполните команду /sbin/service dhcpd stop.

По умолчанию служба DHCP не запускается при загрузке. Чтобы настроить автоматический запуск демона при загрузке системы, обратитесь к главе 20 Управление доступом к службам за информацией об управлении службами.

Если к компьютеру подключено несколько сетевых интерфейсов, но DHCP-сервер должен работать только с одним из них, настройте DHCP-сервер так, чтобы он запускался только на этом устройстве. Отредактируйте файл /etc/sysconfig/dhcpd и добавьте имя интерфейса в список DHCPDARGS:

# Command line options here
DHCPDARGS=eth0

Это полезно, если на вашем компьютере с двумя сетевыми платами работает брандмауэр. Одна сетевая плата может быть настроена как DHCP-клиент для получения IP-адреса Интернета. Другая плата может быть использована DHCP-сервером для внутренней сети за брандмауэром. Указав, что только одна сетевая плата подключена к внутренней сети, вы сделаете систему более защищённой, так как пользователи не смогут подключаться к демону через Интернет.

Кроме этого в файле /etc/sysconfig/dhcpd можно указать и другие параметры командной строки:

  • -p <portnum> — Укажите номер UDP-порта, на котором должен работать демон dhcpd. По умолчанию используется порт 67. DHCP-сервер передаёт ответы DHCP-клиентам в порт с номером, большим чем указанный UDP-порт. Например, если используется порт 67, сервер принимает запросы клиентов в порту 67 и отвечает клиентам в порт 68. Если используется агент ретрансляции DHCP, здесь следует указывать порт, в котором принимает запросы агент ретрансляции DHCP. За подробностями обратитесь к разделу 24.2.4 Агент ретрансляции DHCP.

  • -f — Запустить демон как процесс переднего плана. Он используется в основном для отладки.

  • -d — Выводить сообщения демона DHCP-сервера в стандартное устройство ошибок. Он используется в основном для отладки. Если этот флаг не указан, сообщения записываются в файл /var/log/messages.

  • -cf <filename> — Определяет размещение файла конфигурации. По умолчанию он размещён в /etc/dhcpd.conf.

  • -lf <filename> — Определяет размещение файла базы данных аренды. Если файл базы данных уже существует, очень важно, чтобы при каждом запуске DHCP-сервера использовался один и тот же файл. Настоятельно рекомендуется использовать этот параметр только для отладки в не производственной среде. По умолчанию база данных размещается в /var/lib/dhcp/dhcpd.leases.

  • -q — Не выводить сообщение о правах копирования при запуске демона.

24.2.4. Агент ретрансляции DHCP

Агент ретрансляции DHCP(dhcrelay) позволяет вам ретранслировать DHCP и BOOTP-запросы из подсети, в которой нет DHCP-сервера в другую, или в несколько других подсетей с DHCP-серверами.

Когда DHCP клиент запрашивает информацию, агент ретрансляции DHCP пересылает запрос списку DHCP серверов, указанных при запуске агента. Когда DHCP сервер возвращает ответ, он отправляется либо широковещательно, либо направленно в сеть, из которой был получен первоначальный запрос.

Агент ретрансляции DHCP принимает DHCP-запросы на всех интерфейсах, если интерфейсы не определены явно в файле /etc/sysconfig/dhcrelay в указании INTERFACES.

Чтобы запустить агент ретрансляции DHCP, выполните команду service dhcrelay start.