Чтобы настроить 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.