Протокол управления передачей/Протокол Internet предназначен для организации связи между компьютерами с определенными адресами. Одной из обязанностей администратора сети является присвоение адресов и задание параметров для всех машин в сети. Обычно администратор информирует пользователей о том, какие адреса выделены их системам, и предоставляет пользователям возможность самим выполнить настройку. Однако ошибки при настройке или неправильное понимание могут вызвать у пользователей вопросы, которые администратор должен будет рассматривать индивидуально. Протокол динамической настройки хостов (DHCP) позволяет администратору централизованно настраивать сеть без участия конечных пользователей.
DHCP - это протокол прикладного уровня, который позволяет подключенным к сети системам получать IP-адрес и другие параметры конфигурации с сервера. Для получения информации программа-демон, работающая в системе-клиенте, обменивается пакетами данных с аналогичным демоном, работающим на сервере. В настоящее время клиент DHCP включается в базовую часть большинства операционных систем.
Для получения адреса демон клиента DHCP (dhcpcd) рассылает запрос DHCP. Этот запрос принимается и обрабатывается сервером. (Для повышения надежности в сети может быть настроено несколько серверов.) При наличии свободного адреса сервер создает ответное сообщение DHCP, в котором указывает предлагаемый IP-адрес и другие параметры настройки клиента. Клиент получает и сохраняет это предложение DHCP, ожидая предложений от других серверов. После выбора наилучшего предложения клиент рассылает запрос DHCP, в котором указывает выбранное предложение сервера.
Этот запрос получают все работающие в сети серверы DHCP. Каждый из них проверяет, ему ли был направлен запрос. Если нет, то сервер освобождает адрес, предложенный им данному клиенту. Если же сервер определяет, что запрос адресован ему, то он помечает адрес как присвоенный и возвращает подтверждение DHCP. На этом обработка запроса завершается и клиенту на определенное время выделяется адрес.
После того, как пройдет половина времени выделения адреса, клиент отправляет серверу запрос на обновление. Если сервер готов продлить время выделения адреса, он отправляет подтверждение DHCP. Если клиент не получит ответ от того сервера, который выделил ему текущий адрес, то он рассылает оповещающее сообщение, которое позволяет обнаружить сервер, например, в том случае, если он был переведен в другую сеть. Если до завершения времени выделения адреса клиент не обновит свой адрес, то работа сетевого интерфейса завершается и процесс начинается сначала. Такая методика предотвращает присвоение одинаковых адресов нескольким клиентам.
Сервер DHCP присваивает адреса на основе ключей. Существует четыре общих ключа: сеть, класс, вендор и ИД клиента. На основании этих ключей сервер выбирает адрес и параметры конфигурации, которые передаются клиенту.
Эти ключи могут по одному или в сочетании друг с другом. Если клиент использует несколько ключей, и при этом может быть присвоено несколько адресов, то выбирается только один из них, причем набор опций определяется первым выбранным ключом. Более подробная информация о выборе ключей и адресов приведена в разделе Настройка DHCP.
Промежуточный агент обеспечивает передачу оповещающих сообщений клиента за пределы локальной сети. Этот агент называется промежуточным агентом BOOTP. Промежуточные агенты работают как посредники, пересылающие пакеты DHCP и BOOTP.
Начиная с версии 4.3.1, сервер DHCP разделен на три основные части: база данных, средства поддержки протокола и набор служебных нитей, для каждой из которых задается собственная информация о конфигурации.
База данных db_file.dhcpo позволяет отслеживать работу клиентов и выделение адресов, а также управлять доступом клиентов (например, можно разрешить работу лишь некоторых клиентов в определенных сетях или отключить клиентов BOOTP в данной сети). Кроме того, в базе данных хранятся опции, предназначенные для передачи клиентам. База данных реализована в виде динамически загружаемого объекта, что позволяет легко модернизировать и обслуживать сервер.
База данных заполняется и проверяется в соответствии с информацией, заданной в файле конфигурации. Обновление базы данных осуществляется с помощью набора контрольных файлов, что позволяет сократить число операций записи на диск. Кроме того, в этой база данных хранятся пулы адресов и опций. Информация в этих пулах статическая и обсуждается в разделе Настройка DHCP.
Дисковый файл, как и его копии - это обычные файлы ASCII, которые можно редактировать. Формат файлов базы данных:
DF01 "ИД клиента" "0.0.0.0" Состояние LeaseTimeStart LeaseTimeDuration LeaseTimeEnd "IP-адрес сервера" "ИД класса" "ИД вендора" "Имя хоста" "Имя домена" "ИД клиента" "0.0.0.0" Состояние LeaseTimeStart LeaseTimeDuration LeaseTimeEnd "IP-адрес сервера" "ИД класса" "ИД вендора" "Имя хоста" "Имя домена" ...
Первая строка - это идентификатор версии файла: DF01c. За ней следуют записи, определяющие клиентов. Сервер читает данные, начиная со второй строки, и до конца файла. (Параметры, указанные здесь в кавычках, должны быть заключены в кавычки.)
Синтаксис контрольных файлов не определен. Если в случае отказа сервера или при вынужденном уничтожении процесса сервера вы не можете закрыть базу данных обычным образом, то сервер может создать контрольные файлы и файлы резервной копии, с помощью которых можно будет восстановить базу данных. Контрольный файл, который записывался во время сбоя сервера, будет потерян. По умолчанию это следующие файлы:
Сервер DHCP для AIX версии 4.3.1 и выше поддерживает работу с несколькими нитями. Поддержка нитей обеспечивает высокую скорость работы с базой данных (включая операции сохранения). При получении запроса на сохранение существующий контрольный файл заменяется на следующий, текущая база данных записывается в файл резервной копии и создается новый файл сохранения. Каждая запись клиента заносится в файл и при этом устанавливается бит-переключатель, указывающий, что клиент должен использовать новый контрольный файл. После сохранения всех записей клиентов созданный файл закрывается, а файл резервной копии и старый контрольный файл удаляются. Таким образом, обработка клиентов может продолжаться, и, в зависимости от того, была ли сохранена запись клиента, изменения в базе данных будут записаны в новый файл сохранения или в новый контрольный файл.
В AIX версии 4.3.1 и выше реализована поддержка протокола DHCP в соответствии с RFC 2131, но при этом сохранена и совместимость с RFC 1541. (Сервер может также обрабатывать опции, определенные в RFC 2132.) Отправляемая клиентам информация о конфигурации определяется с помощью базы данных.
При настройке пулов адресов применяются некоторые опции, которые оказывают влияние на изменение состояния. Например, перед тем, как выделять адреса, сервер проверяет их с помощью команды ping. В настоящее время ожидания ответа можно задавать отдельно для каждого пула адресов.
Третья часть сервера DHCP - это набор операций, которые, собственно, и обеспечивают его работу. Так как в сервере DHCP реализована поддержка нескольких нитей, то эти операции в действительности организованы в виде набора нитей, которые в определенное время выполняют нужные операции и обеспечивают правильную работу.
Первая нить, main, обрабатывает запросы SRC (такие, как startsrc, stopsrc, lssrc, traceson и refresh). Кроме того, эта нить согласовывает все операции, влияющие на остальные нити, и обрабатывает сигналы. Пример:
Другая нить, dadmin, обеспечивает взаимодействие программы клиента dadmin и сервера DHCP. Утилита dadmin может применяться для определения состояния или изменения базы данных, что позволяет избежать редактирования файлов базы данных вручную. В предыдущих версиях сервера DHCP во время определения состояния сервера клиенты не могли получать адреса. После добавления нитей dadmin и src сервер может обрабатывать служебные запросы и запросы клиентов одновременно.
Следующая нить, garbage, включает таймеры, которые периодически выполняют очистку и сохранение базы данных, удаляют клиентов, для которых не заданы адреса, а также удаляют адреса, слишком долго находящиеся в зарезервированном состоянии. Значения этих таймеров можно настраивать (см. Настройка DHCP). Остальные нити выполняют обработку пакетов. Их число можно настраивать. По умолчанию запускается 10 нитей. Каждая нить может обрабатывать запрос клиента DHCP. Число нитей для обработки пакетов зависит от предполагаемой нагрузки и мощности системы. Если в системе помимо DHCP должны работать еще и другие серверы, то не стоит запускать в ней 500 нитей.
Для применения данного протокола администратор сети должен установить сервер DHCP и настроить промежуточных агентов BOOTP на тех узлах, где нет сервера DHCP. Заблаговременное планирование может сократить нагрузку на сеть, вызванную работой сервера DHCP. Например, можно настроить один сервер для обработки запросов всех клиентов, но при этом все пакеты должны будут проходить через этот сервер. Если между двумя большими сетями есть единственный маршрутизатор, то лучше установить два сервера.
Другая особенность DHCP, которую следует учитывать - это создаваемая нагрузка на сеть. Например, если время выделения адреса по умолчанию меньше двух суток, а выходные подключенные к сети системы выключаются, то утром в понедельник резко увеличится объем данных, передаваемых по сети сервером DHCP. Несмотря на то, что эти данные не вызывают перегрузку сети, их необходимо учитывать при выборе количества серверов DHCP и их размещения.
После включения DHCP клиенты могут не выполнять более никаких действий по настройке сети. Клиент DHCP, dhcpcd, читает файл dhcpcd.ini, в котором хранится информация о регистрации и другие параметры, необходимые для начала работы. После установки вам нужно будет выбрать способ настройки TCP/IP: минимальная конфигурация или использование поддержки DHCP. При выборе DHCP нужно будет указать интерфейс и задать некоторые необязательные параметры. Для выбора интерфейса можно ввести ключевое слово any. Оно сообщает клиенту dhcpcd, что что нужно искать первый работающий интерфейс и использовать его. Этот способ сокращает число операций, выполняемых пользователем.
По умолчанию сервер DHCP считывает информацию из файла /etc/dhcpsd.cnf, в котором хранится исходная база данных параметров и адресов. Сервер может запускаться с помощью файла /etc/rc.tcpip, Web-администратора системы, SMIT или команды SRC. Клиента DHCP можно настроить с помощью Web-администратора системы, Инструмента управления системой или путем редактирования ASCII-файла.
Настройка сервера DHCP - это самая трудная часть настройки DHCP в сети. Во-первых, определите, в каких сетях будут размещаться клиенты DHCP. Каждой подсети соответствует пул адресов, который должен быть добавлен в базу данных сервера DHCP. Например:
database db_file { subnet 9.3.149.0 255.255.255.0 { option 3 9.3.149.1 # Шлюз по умолчанию для клиентов данной сети option 6 9.3.149.2 # Клиенты сервера имен в данной сети } ... опции и другие контейнеры, добавляемые позже }
В приведенном примере используется подсеть 9.3.149.0, с маской подсети 255.255.255.0. В пул включены все адреса этой подсети, от 9.3.149.1 до 9.3.149.254. При необходимости в конце строки можно указать диапазон, а также задать в контейнере subnet оператор range или exclude. Стандартные способы настройки и определения адресов описаны в разделе Известные опции файла сервера DHCP.
Оператор database db_file задает способ обработки этой части файла конфигурации. Комментарии начинаются с символа # (знак фунта стерлингов). Сервер DHCP игнорирует все символы, стоящие после символа # до конца строки. С помощью каждой строки option сервер задает для клиента какое-либо действие. В разделе Известные опции файла сервера DHCP описаны все поддерживаемые и известные опции. В разделе Формат файла сервера DHCP для выполнения общих операций описаны способы задания опций, неизвестных серверу.
Если сервер не знает, как интерпретировать ту или иную опцию, то он передает ее клиенту с помощью методов, предусмотренных по умолчанию. Такая возможность позволяет серверу пересылать специальные параметры, которые не определены в RFC, но могут применяться некоторыми клиентами или в отдельных конфигурациях клиентов.
В файле конфигурации есть раздел адресов и раздел определения опций. В этих разделах есть контейнеры, содержащие опции, модификаторы и, возможно, другие контейнеры.
Контейнер (по существу, это способ группирования параметров) позволяет объединять клиентов в группы на основании идентификатора. Типы контейнеров: subnet, class, vendor и client. Контейнеры, определяемые пользователем, в настоящее время не поддерживаются. Клиент однозначно определяется своим идентификатором, что позволяет всегда точно обнаруживать его, например, при переносе в другую подсеть. Для определения клиента может применяться несколько контейнеров.
Опции - это идентификаторы, возвращаемые клиенту. Это может быть, например, применяемые по умолчанию адреса шлюза и сервера DNS.
Модификаторы - это одиночные операторы, которые изменяют некоторые параметры контейнера, например, время выделения адреса по умолчанию.
При получении запроса сервер DHCP анализирует пакет и на основании ключей идентификации определяет, какие нужно выбрать контейнеры, параметры и адреса.
Контейнер подсети показан в предыдущем примере. Его ключ идентификации - это расположение клиента в сети. Если клиент находится в данной сети, то он попадает в этот контейнер.
Для идентификации клиентов в разных типах контейнеров применяются различные опции:
Во всех контейнерах, кроме subnet, можно применять шаблоны сравнения, включая регулярные выражения.
Существует также неявный контейнер global. Опции и модификаторы указываются в контейнере global, если только они не отключены и не переопределены. Большинство контейнеров можно поместить в другие контейнеры в соответствии с областью видимости. С контейнерами могут быть связаны диапазоны адресов. С подсетями всегда связаны диапазоны адресов.
Основные правила для контейнеров и подконтейнеров:
С помощью этих правил вы можете создавать иерархию контейнеров, в которой опции объединены в наборы, соответствующие конкретным клиентам или группам клиентов.
Каким образом организована обработка адресов и опций, если клиент входит в несколько контейнеров? Сервер DHCP получает сообщение, формирует запрос к базе данных (в данном случае - к файлу db_file) и получает список контейнеров. Контейнеры перечисляются в списке в порядке их вложенности и приоритета. Приоритет определяется как неявный иерархический уровень контейнера. Контейнеры с ограничениями имеют более высокий приоритет, чем обычные. Сортировка контейнеров выполняется в таком порядке: клиенты, классы, вендоры и подсети. В пределах одного типа контейнеры упорядочиваются по уровню вложенности. Созданный таким образом список упорядочивается от более конкретных объектов к менее конкретным. Например:
Subnet 1 --Class 1 --Client 1 Subnet 2 --Class 1 ----Vendor 1 ----Client 1 --Client 1
В примере есть две подсети Subnet 1 и Subnet 2. Кроме того, определен один класс, Class 1, один вендор, Vendor 1, и один клиент, Client 1. Class 1 и Client 1 определены в разных местах. Поскольку они они определены в разных контейнерах, то их имена могут совпадать, однако, указанные в них значения могут различаться. Если клиент Client 1 отправит сообщение серверу DHCP из подсети Subnet 1 с указанием класса Class 1, определенного в списке опций этого клиента, то сервер DHCP создаст следующий список контейнеров:
Subnet 1, Class 1, Client 1
Контейнер, определенный наиболее точно, заносится в список последним. Для получения адреса список просматривается в обратном порядке до обнаружения первого доступного адреса. Затем список просматривается в прямом порядке (в соответствии с иерархией) для получения опций. По мере просмотра списка новые значения опций переопределяют прежние значения до тех пор, пока в контейнере не встретится опция deny. Поскольку класс Class 1 и клиент Client 1 находятся в одной и той же подсети Subnet 1, они упорядочиваются в соответствии с приоритетом контейнеров. Если сообщение будет получено от клиента с тем же именем, находящегося в подсети Subnet 2, то будет создан следующий список контейнеров:
Subnet 2, Class 1, Client 1 (на уровне Subnet 2), Client 1 (на уровне Class 1 )
Первой в списке указывается подсеть Subnet 2, затем класс Class 1, затем клиент Client 1 на уровне Subnet 2 (так как этот клиент находится в иерархии на один уровень ниже). Иерархия подразумевает, что клиент, имя которого указано в первом операторе, определен менее конкретно, чем клиент Client 1, определенный в классе Class 1 подсети Subnet 2.
Приоритет, определяемый по уровню вложенности, выше, чем приоритет самих контейнеров. Например, если тот же клиент отправит такое же сообщение, указав идентификатор вендора, то список контейнеров будет следующим:
Subnet 2, Class 1, Vendor 1, Client 1 (на уровне Subnet 2), Client 1 (на уровне Class 1)
Организация поиска на основании приоритета контейнера повышает эффективность, поскольку контейнеры client обеспечивают наиболее точный способ определения одного или нескольких клиентов. В контейнере class адреса определены менее конкретно, чем в контейнере client; в контейнере vendor адреса определены еще менее конкретно, а контейнер subnet содержит самые общие определения адресов.
С контейнерами любого типа могут быть связаны диапазоны адресов. Контейнеры subnet обязательно имеют связанный диапазон адресов. Каждый диапазон адресов в пределах контейнера должен быть подмножеством диапазона адресов родительского контейнера и не должен пересекаться с диапазонами адресов других контейнеров. Например, если внутри подсети определен класс с диапазоном адресов, то этот диапазон должен быть подмножеством диапазона адресов подсети. Диапазон внутри этого контейнера класса не должен пересекаться с любыми другими диапазонами этого уровня.
Диапазоны адресов могут задаваться в строке контейнера. Для задания несмежных диапазонов адресов можно воспользоваться операторами range и exclude. Таким образом, если в подсети есть два диапазона по десять адресов, то имеет смысл указать эти диапазоны в операторе subnet, чтобы уменьшить объем памяти и избежать конфликтов адресов с другими клиентами.
Когда адрес выбран, все последующие контейнеры, содержащие диапазоны адресов, удаляются из списка вместе со своими дочерними контейнерами. Сетевые опции, заданные в удаленных контейнерах, недопустимы для адресов, не принадлежащих данному контейнеру.
После первого просмотра списка и получения адресов для клиента создается набор опций. В процессе выбора ранее определенные значения опций переопределяются новыми до тех пор, пока не встретится опция deny (запретить); при этом запрещенная опция удаляется из списка опций, отправляемых пользователю. Этот способ разрешает наследование опций родительских контейнеров и сокращает объем данных, которые нужно определять.
Модификаторы - это операторы, которые изменяют некоторые параметры данного контейнера, например, доступ или время выделения адреса. Перед изменением контейнера определите пулы адресов и опций. Чаще всего используются модификаторы leasetimedefault, supportBootp и supportUnlistedclients.
Другие модификаторы приведены в разделе Формат файла сервера DHCP для db_file.
Следующий шаг настройки после выбора модификаторов - это настройка протоколов. Параметры протокола указываются в окне диалога, напоминающем окно настройки базы данных, но с ключевым словом logging_info. На этапе обучения настройке DHCP рекомендуется установить максимально подробное ведение протокола. Кроме того, весьма полезно настроить протокол до начала работы с любыми другими файлами настройки, чтобы ошибки конфигурации были после инициализации системы занесены в протокол. Для включения опций протокола укажите ключевое слово logitem, а для их отключения удалите это ключевое слово. Другие ключевые слова позволяют задавать имя файла протокола, его размер, а также число взаимозаменяемых файлов протоколов.
Последний набор опций, который нужно указать, - это опции, определяемые сервером. С их помощью пользователь может задавать число нитей для обработки пакетов, частоту запуска нитей для очистки памяти и т.п.
Вот, например, две опции, определяемые сервером:
Эти опции полезны в том случае, когда в сети есть несколько клиентов, которые рассылают поисковые сообщения, но не рассылают запросы, либо отправляемые ими запросы не доходят до серверов. Эти параметры позволяют резервировать адреса только для тех клиентов, которые работают правильно.
Другая полезная опция, SaveInterval, указывает, как часто нужно сохранять информацию. В разделе Формат файла сервера DHCP для выполнения общих операций описаны все связанные с сервером опции и соответствующие ключевые слова.
Важно понимать, что от ключевых слов конфигурации и от структуры файла конфигурации зависит распределение памяти и производительность сервера DHCP.
Во-первых, понимание механизма наследования опций от контейнеров-предков к потомкам позволяет сократить объем используемой памяти. В среде, в которой не поддерживаются не указанные в списке клиенты, администратор должен явно перечислить всех клиентов в файле. При указании списка опций для каждого отдельного клиента на хранение дерева конфигурации расходуется больше ресурсов памяти сервера, чем при наследовании опций от контейнера-предка к потомку (в роли предка может выступать подсеть, сеть или глобальные контейнеры). Следовательно, администратор должен проверить, не повторяются ли какие-либо опции на уровне клиента в файле конфигурации, а если это так, то решить, можно ли указать эти опции в контейнере-предке и таким образом распространить их сразу на несколько клиентов.
Кроме того, если применяются записи logItem INFO и TRACE, то в протокол при обработке каждого сообщения клиента DHCP заносится несколько сообщений. Добавление строк в файл протокола может привести к чрезмерному увеличению нагрузки; поэтому ограничение объема заносимой в протокол информации повышает производительность сервера DHCP. При необходимости ведение протокола может быть включено динамически командой SRC traceson или dadmin.
Наконец, указываемое значение параметра numprocessors должно зависеть от размера сети, поддерживаемой сервером DHCP, параметра конфигурации pingTime db_file и среднего значения задержки распространения в сети. Поскольку каждая нить обработчика пакетов генерирует запрос ICMP Echo Request для проверки состояния собственного адреса сервера до предоставления этого адреса в распоряжение клиента, то время ожидания ответа на этот запрос (Echo Response) напрямую влияет на время обработки сообщения DISCOVER. В сущности, функции нити обработчика пакетов ограничиваются ожиданием либо ответа, либо наступления тайм-аута pingTime. Уменьшение значения numprocessors снижает время ответа сервера, снижает число повторных передач для клиентов и сохраняет при этом все преимущества применения пробных пакетов на сервере.
Для повышения производительности выберите значение pingTime, исходя из значений задержки распространения для всех удаленных сетей, поддерживаемых этим сервером DHCP. Значение numprocessors следует выбрать на основе значения pingTime и размера сети. Выбор слишком маленького значения приведет к остановке нитей обработки процессов. Пока ожидает эхо-ответ, поступающие сообщения клиента DHCP будут помещаться в очередь порта сервера. В результате сервер будет обрабатывать сообщения клиента большими группами, а не в виде непрерывного потока сообщений.
Если выбранное значение слишком мало, то все нити обработки пакетов будут ожидать ответа.
Для предотвращения подобной ситуации следует выбрать значение numprocessors так, чтобы оно было больше ожидаемого количества сообщений DISCOVER, которые могут быть приняты в течение одного интервала pingTime в период пиковой нагрузки на сервер DHCP. Однако не следует указывать слишком большое значение numprocessors, так как это может резко увеличить расход ресурсов ядра системы на управление нитями.
Например, значения numprocessors 5 и pingTime 300 вызовут снижение производительности в среде, в которой на сервер поступает в среднем 10 сообщений DISCOVER за секунду, поскольку скорость их обработки в часы пик не будет превышать 5 сообщений за 3 секунды. Для этой среды следует задать, например, numprocessors 20 и pingTime 80.
Во многих сетях есть клиенты нескольких типов; например, к одной сети могут быть подключены компьютеры с различными операционными системами - Windows, OS/2, Java OS и UNIX. Для каждого из них необходим свой идентификатор вендора (поле, с помощью которого серверу DHCP сообщается тип машины). Для клиентов OS Java и IBM Thin Client может потребоваться отдельная настройка, включающая указание загрузочных файлов и специальных опций. Компьютеры с Windows 95 не смогут правильно работать с параметрами, заданными для систем Java.
В зависимости от назначения конкретного компьютера, в контейнер vendor могут быть включены различные опции. Например, разработчики приложений могут работать с клиентами этой операционной системы, сотрудники рекламного отдела - с клиентами OS/2, сотрудники отдела продаж - с клиентами OS Java и компьютерами IBM Thin Client, а работники бухгалтерии - с Windows 95. Для каждой группы пользователей необходимо задать свои параметры конфигурации (различные принтеры, серверы имен, Web-серверы по умолчанию и т.п.) В этом случае все перечисленные опции можно включить в контейнер vendor, так как каждая группа пользователей работает со своим типом компьютеров.
Если один и тот же тип компьютеров используется несколькими группами, то размещение опций в идентификаторе подчиненного класса позволит, например, сотрудникам отдела рекламы печатать на принтерах, недоступных для других отделов.
Примечание: Ниже приведен пример, представляющий собой часть файла конфигурации. Комментарии к каждой строке начинаются со знака фунта стерлингов (#) и описывают назначение данной строки. каким
vendor "AIX_CLIENT" { # Нет специальных параметров, управляет объектами с помощью класса } vendor "OS/2 Client" { # Нет специальных параметров, управляет объектами с помощью класса } vendor "Windows 95" { option 44 9.3.150.3 # Сервер имен по умолчанию для NetBIOS } vendor "Java OS" { bootstrapserver 9.3.150.4 # Сервер TFTP по умолчанию для систем с OS Java option 67 "javaos.bin" # Загрузочный файл для систем с OS Java } vendor "IBM Thin Client" { bootstrapserver 9.3.150.5 # Сервер TFTP по умолчанию для систем Thin Client option 67 "thinos.bin" # Загрузочный файл по умолчанию для систем Thin Client } subnet 9.3.149.0 255.255.255.0 { option 3 9.3.149.1 # Шлюз по умолчанию для подсети option 6 9.3.150.2 # Сервер имен для подсети class accounting 9.3.149.5-9.3.149.20 { # Диапазон адресов для класса accounting: 9.3.149.5-9.3.149.20 # Принтер для этой группы также в этом диапазоне, поэтому он исключен. exclude 9.3.149.15 option 9 9.3.149.15 # Сервер LPR (сервер печати) vendor "Windows 95" { option 9 deny # Windows 95 не поддерживает этот # принтер, поэтому опция запрещена. } } . . . }
Сервер DHCP поддерживает работу в среде DDNS. Для применения сервера DHCP в среде DDNS необходимо задать динамическую область сервера DNS.
После настройки сервера DDNS необходимо решить, будет ли сервер DHCP обновлять записи типа А, записи PTR-record, записи обоих типов, или он вообще не должен обновлять записи. Ответ на этот вопрос зависит от того, может ли система клиента выполнять все или часть перечисленных операций.
С помощью перечисленных ниже ключевых слов сервера DHCP можно задавать команды, которые должны выполняться при обновления.
Эти ключевые слова позволяют задавать командные строки, которые должны выполняться сервером DHCP при обновлении. Строки с ключевыми словами должны содержать четыре переменные %s (знак процента, буква s). Первая переменная %s - это имя хоста; вторая - имя домена; третья - IP-адрес; и четвертая - время выделения адреса. Эти переменные используются в качестве первых четырех параметров команды dhcpaction. Остальные два параметра команды dhcpaction указывают тип обновляемой записи (A, PTR, NONE или BOTH) и задают опцию обновления NIM (NIM или NONIM). Более подробная информация о взаимодействии NIM и DHCP приведена в разделе Взаимодействие DHCP с Администратором сетевой установки. Например:
updatednsA "/usr/sbin/dhcpaction '%s' '%s' '%s' '%s' A NONIM" # Команда dhcpaction выполняется только для записей типа A updatednsP "/usr/sbin/dhcpaction '%s' '%s' '%s' '%s' PTR NONIM" # Команда выполняется только для записей типа PTR updatedns "/usr/sbin/dhcpaction '%s' '%s' '%s' '%s' BOTH NIM" # Команда выполняется для записей обоих типов, обновляется NIM
Сервер DHCP включает также набор ключевых слов для удаления записей DNS после освобождения адреса или завершения времени его выделения. Это следующие ключевые слова:
Эти ключевые слова позволяют задавать строки, которые должны выполняться сервером DHCP в том случае, если адрес освобожден или время его выделения закончилось. Команда dhcpremove работает так же, как dhcpaction, но имеет только три параметра:
Например:
releasednsA "/usr/sbin/dhcpremove '%s' A NONIM" # Команда dhcpremove выполняется только для записей типа A releasednsP "/usr/sbin/dhcpremove '%s' PTR NONIM" # Команда выполняется только для записей типа PTR removedns "/usr/sbin/dhcpremove '%s' BOTH NIM" # Команда выполняется для записей обоих типов, обновляется NIM
Команды dhcpaction и dhcpremove проверяют полученные параметры, а затем вызывают команду nsupdate, которая была обновлена для работы с серверами DDNS этой операционной системы и OS/2. Более подробную информацию см. в описании команды nsupdate.
Если при обновлении имен применение NIM НЕ ОБЯЗАТЕЛЬНО, то при
настройке сервера DHCP можно выбрать передачу сокетов между демоном
DHCP и командой nsupdate. Это позволяет повысить
производительность и повторно выполнять обновление DNS при неполадках.
Для выбора этой возможности следует с помощью ключевого слова
updateDNSA, updateDNSP, releaseDNSA или
releaseDNSP указать в качестве первого слова в кавычках слово
"nsupdate_daemon". Параметры и флаги в таком режиме обновления те же,
что и для команды nsupdate. Кроме того, для подстановки
можно использовать следующие имена-переменные:
$hostname | Это имя заменяется на имя хоста клиента в команде обновления DNS или на имя хоста, ранее связанное с клиентом, в команде удаления DNS. |
$domain | Это имя заменяется на домен DNS в команде обновления DNS или на домен, ранее соответствовавший имени хоста клиента, в команде удаления DNS. |
$ipadress | Это имя заменяется на IP-адрес, который необходимо связать с именем клиента DHCP или освободить. |
$leasetime | Это имя заменяется на время выделения адреса (в секундах). |
$clientid | Это имя заменяется на строку, содержащую идентификатор клиента DHCP, или на сочетание типа аппаратного обеспечения и аппаратного адреса для клиентов BOOTP. |
Например:
updateDNSA "nsupdate_daemon -p 9.3.149.2 -h $hostname -d $domain -s"d;a;*;a;a;$ipaddress;s;$leasetime;3110400"" updateDNSP "nsupdate_daemon -p 9.3.149.2 -r $ipaddress -s"d;ptr;*;a;ptr;$hostname.$domain.;s;$leasetime;3110400"" releaseDNSA "nsupdate_daemon -p 9.3.149.2 -h $hostname -d $domain -s"d;a;*;s;1;3110400"" releaseDNSP "nsupdate_daemon -p 9.3.149.2 -r $ipaddress -s"d;ptr;*;s;1;3110400""
Более подробную информацию см. в описании команды nsupdate.
Для передачи имени хоста между сервером и клиентом теперь предусмотрены стратегии, задаваемые администратором. По умолчанию, имя хоста, возвращаемое клиенту и используемое для обновления DDNS, задается опцией 12, указанной в файле конфигурации сервера. Кроме того, имя хоста по умолчанию можно задать как предполагаемое имя хоста клиента, указав его с помощью опции 81 (опция DHCPDDNS) или опции 12 (опция HOSTNAME). Однако администратор может переопределять имя хоста по умолчанию с помощью ключевых слов hostnamepolicy, proxyarec и appenddomain. Эти опции и их параметры описаны в разделе Формат файла сервера DHCP для db_file.
Сервер DHCP для AIX версии 4.3.1 и выше распознает файлы конфигурации и базы данных более ранних версий, dhcps.ar и dhcps.cr. Он анализирует старые файлы конфигурации и создает вместо них новые файлы базы данных. Старые базы данных автоматически преобразуются в новый файл. Сам файл конфигурации не преобразуется.
Модуль работы с базой данных сервера DHCP, db_file, может читать старый формат. Сервер DHCP может определить, когда контейнер базы данных не включен в файл конфигурации, и обрабатывать весь файл как файл параметров конфигурации сервера, параметров протоколов и параметров базы данных db_file.
Примечание: В данной версии файлов конфигурации не применяются некоторые устаревшие синтаксические конструкции, но они по-прежнему поддерживаются. Это касается следующих конструкций:
- Контейнер network больше не используется. Для того, чтобы правильно описать сеть, необходимо преобразовать предложение network в соответствующий контейнер subnet с адресом подсети, маской подсети и диапазоном адресов. Если в контейнере network есть вложенные контейнеры subnet, то удалите ключевое слово network и соответствующие ему фигурные скобки, а затем добавьте маску подсети. Для начала работы с контейнером базы данных сгруппируйте все опции, имеющие отношение к сетям и правам доступа клиента, в один контейнер базы данных типа db_file.
- Не используются ключевые слова updatedns и removedns. Они заменены на команды, работающие с записями типа A и PTR по-отдельности.
- Вместо ключевых слов clientrecorddb и addressrecorddb используются clientrecorddb и backupfile, соответственно.
- Ключевые слова option sa и option ga заменены на bootstrapserver и giaddrfield, соответственно. Более подробная информация приведена в разделах Формат файла сервера DHCP для выполнения общих операций и Формат файла сервера DHCP для базы данных db_file Database.
Примечание: Опции, для которых в приведенной ниже таблице указано, что их нельзя задавать (в колонке Можно указывать стоит Нет), можно указывать в файле конфигурации, но их значения будут заменены на допустимые. Более точные определения опций приведены в RFC 2132.
Номер опции | Тип данных по умолчанию | Можно указывать? | Описание/Использование |
---|---|---|---|
0 | Нет | Нет | При необходимости дополняет поле опций. |
1 | IP-адрес в десятичном формате с точками | Нет | Маска подсети, из которой получен адрес. |
2 | 32-разрядное целое число | Да | Задает смещение времени в подсети клиента в секундах от универсального скоординированного времени (UTC). |
3 | Один или несколько IP-адресов в десятичном формате с точками | Да | Список IP-адресов шлюзов по умолчанию. |
4 | Один или несколько IP-адресов в десятичном формате с точками | Да | Список IP-адресов серверов времени. |
5 | Один или несколько IP-адресов в десятичном формате с точками | Да | Список IP-адресов серверов имен. |
6 | Один или несколько IP-адресов в десятичном формате с точками | Да | Список IP-адресов серверов DNS. |
7 | Один или несколько IP-адресов в десятичном формате с точками | Да | Список IP-адресов серверов протоколов. |
8 | Один или несколько IP-адресов в десятичном формате с точками | Да | Список IP-адресов серверов cookie. |
9 | Один или несколько IP-адресов в десятичном формате с точками | Да | Список IP-адресов серверов LPR. |
10 | Один или несколько IP-адресов в десятичном формате с точками | Да | Список IP-адресов серверов Impress. |
11 | Один или несколько IP-адресов в десятичном формате с точками | Да | Список IP-адресов серверов размещения ресурсов. |
12 | Строка ASCII | Да | Имя хоста клиента. |
13 | 16-разрядное целое число без знака | Да | Размер загрузочного файла. |
14 | Строка ASCII | Да | Путь к файлу контрольного дампа. |
15 | Строка ASCII | Да | Имя домена DNS по умолчанию. |
16 | IP-адрес | Да | Адрес сервера Swap. |
17 | Строка ASCII | Да | Путь к корневому каталогу по умолчанию. |
18 | Строка ASCII | Да | Путь к расширениям для клиента. |
19 | Yes, No, True, False, 1, 0 | Да | Применяется ли пересылка IP-дейтаграмм. |
20 | Yes, No, True, False, 1, 0 | Да | Применяется ли не локальная маршрутизация источника. |
21 | Одна или несколько пар IP-адресов в десятичном формате с точками, в виде адрес:адрес | Да | Стратегия фильтрации для IP-адресов. |
22 | 16-разрядное целое число без знака | Да | Максимально допустимый размер фрагментов дейтаграмм. |
23 | 8-разрядное целое число без знака | Да | Ограничение на число участков для IP-дейтаграмм (TTL). |
24 | 32-разрядное целое число без знака | Да | Число секунд, применяемое в параметре времени жизни для MTU маршрута. |
25 | Список из одного или нескольких 16-разрядных целых чисел без знака | Да | Таблица значений MTU маршрута. Определяет множество значений, задающих размеры MTU, применяемые при определении MTU маршрута. |
26 | 16-разрядное целое число без знака | Да | Размер MTU для принимающего интерфейса. |
27 | Yes, No, True, False, 1, 0 | Да | Все ли подсети локальные. |
28 | IP-адрес в десятичном формате с точками | Да | Широковещательный адрес для интерфейса. |
29 | Yes, No, True, False, 1, 0 | Да | Должна ли определяться сетевая маска ICMP. |
30 | Yes, No, True, False, 1, 0 | Да | Должен ли клиент предоставлять сетевую маску ICMP. |
31 | Yes, No, True, False, 1, 0 | Да | Нужно ли использовать поисковые сообщения о маршрутизаторах ICMP. |
32 | IP-адрес в десятичном формате с точками | Да | Адрес для обращения к маршрутизатору. |
33 | Одна или несколько пар IP-адресов, в виде адрес:адрес | Да | Каждая пара адресов соответствует статическому маршруту. |
34 | Yes/No, True/False, 1/0 | Да | Должна ли применяться инкапсуляция концевиков. |
35 | 32-разрядное целое число без знака | Да | Значение тайм-аута для кэш-памяти ARP. |
36 | Yes/No, True/False, 1/0 | Да | Должна ли применяться инкапсуляция данных Ethernet. |
37 | 8-разрядное целое число без знака | Да | Время хранения в кэш-памяти TCP (TTL). |
38 | 32-разрядное целое число без знака | Да | Интервал отправки контрольных пакетов TCP. |
39 | Yes/No, True/False, 1/0 | Да | Нужно ли отправлять контрольные пакеты TCP. |
40 | Строка ASCII | Да | Домен NIS по умолчанию. |
41 | Один или несколько IP-адресов в десятичном формате с точками | Да | IP-адреса серверов NIS. |
42 | Один или несколько IP-адресов в десятичном формате с точками | Да | IP-адреса серверов NTP. |
43 | Шестнадцатеричная строка в формате hex "цифры", hex"цифры" или 0xцифры | Да, но фактически задается только с контейнером vendor | Встроенный контейнер опций для контейнера vendor. |
44 | Один или несколько IP-адресов в десятичном формате с точками | Да | Список IP-адресов серверов NetBIOS. |
45 | Один или несколько IP-адресов в десятичном формате с точками | Да | Список IP-адресов серверов рассылки дейтаграмм NetBIOS. |
46 | 8-разрядное целое число без знака | Да | Тип узла NetBIOS. |
47 | Шестнадцатеричная строка в формате hex "цифры", hex"цифры" или 0xцифры | Да | Область NetBIOS. |
48 | Один или несколько IP-адресов в десятичном формате с точками | Да | IP-адреса серверов шрифтов X Windows. |
49 | Один или несколько IP-адресов в десятичном формате с точками | Да | Диспетчер дисплея X Windows. |
50 | Нет | Нет | IP-адрес, запрашиваемый клиентом. |
51 | 32-разрядное целое число без знака | Да | Время выделения для возвращаемого адреса. По умолчанию сервер DHCP использует ключевое слово leasetimedefault, однако непосредственное задание опции 51 переопределяет его. |
52 | Нет | Нет | Переопределение опции. Клиент использует эту опцию, чтобы указать, что у полей sname и file пакета BOOTP могут быть дополнительные опции. |
53 | Нет | Нет | Используется сервером DHCP или клиентом для указания типа сообщения DHCP. |
54 | Нет | Нет | Используются сервером DHCP или клиентом для указания адреса сервера или сервера, на который направляется сообщение. |
55 | Нет | Нет | Используется клиентом DHCP для указания требуемых параметров. |
56 | Строка ASCII | Да | Строка, которую сервер DHCP отправляет клиенту. В общем случае может использоваться сервером и клиентом DHCP для сообщения о неполадках. |
57 | Нет | Нет | С помощью этой опции клиент DHCP сообщает серверу DHCP максимальный размер пакетов, которые он может принимать. |
58 | 32-разрядное целое число без знака | Да | Интервал времени (в секундах), в течение которого клиент должен отправить запрос на обновление. |
59 | 32-разрядное целое число без знака | Да | Интервал времени (в секундах), в течение которого клиент должен отправить запрос на повторное связывание. |
60 | Нет | Нет | Эта опция используется клиентом DHCP для указания типа вендора. Сервер DHCP использует это поле для сравнения с контейнерами vendor. |
61 | Нет | Нет | Используется для однозначной идентификации клиента DHCP. Сервер DHCP использует это поле для сравнения с контейнерами client. |
64 | Строка ASCII | Да | Задает домен NIS+. |
65 | Один или несколько IP-адресов в десятичном формате с точками | Да | IP-адреса серверов NIS+. |
66 | Строка ASCII | Да | Определяет имя сервера TFTP. Это имя хоста, которое используется вместо имени, указанного в поле siaddr, в том случае, если клиент поддерживает данную опцию. |
67 | Строка ASCII | Да | Задает имя загрузочного файла. Может использоваться вместо ключевого слова bootfile, которое помещает файл в поле filename пакета. |
68 | Один или несколько IP-адресов в десятичном формате с точками или NONE | Да | Адреса домашних агентов. |
69 | Один или несколько IP-адресов в десятичном формате с точками | Да | Серверы SMTP по умолчанию. |
70 | Один или несколько IP-адресов в десятичном формате с точками | Да | Серверы POP3 по умолчанию. |
71 | Один или несколько IP-адресов в десятичном формате с точками | Да | Серверы NNTP по умолчанию. |
72 | Один или несколько IP-адресов в десятичном формате с точками | Да | Серверы WWW по умолчанию. |
73 | Один или несколько IP-адресов в десятичном формате с точками | Да | Серверы Finger по умолчанию. |
74 | Один или несколько IP-адресов в десятичном формате с точками | Да | Серверы IRC по умолчанию. |
75 | Один или несколько IP-адресов в десятичном формате с точками | Да | Серверы Street Talk по умолчанию. |
76 | Один или несколько IP-адресов в десятичном формате с точками | Да | Серверы поддержки каталога Street Talk по умолчанию. |
77 | Строка ASCII | Да | Идентификатор класса пользователя. Сервер DHCP использует это поле для сравнения с контейнерами class. |
81 | Строка ASCII плюс другие элементы. | Нет | С помощью этой опции клиент DHCP определяет стратегию, которую сервер DHCP должен применять в отношении DDNS. |
93 | Нет | Нет | Эта опция используется клиентом DHCP для определения архитектуры системы клиента. |
94 | Нет | Нет | Эта опция используется клиентом DHCP для определения сетевого интерфейса клиента. |
255 | Нет | Нет | Эта опция используется сервером и клиентом DHCP для указания на конец списка опций. |
При работе с клиентом PXE сервер DHCP передает следующую опцию серверу
BINLD для настройки этого сервера.
Опция | Тип данных по умолчанию | Можно указывать? | Описание |
---|---|---|---|
7 | адрес с точками | Да | Групповой IP-адрес. Групповой IP-адрес для сервера загрузки. |
Ниже приведен пример использования этой опции:
pxeservertype proxy_on_dhcp_server Vendor pxeserver { option 7 9.3.4.68 }
В этом примере сервер DHCP информирует клиента, что сервер proxy работает на том же компьютере и ожидает запросов клиента на порту 4011. В данном примере необходим контейнер vendor, так как сервер BINLD отправляет сообщение INFORM/REQUEST в порт 67 с опцией 60, равной "PXEServer." В ответ сервер DHCP отправляет групповой IP-адрес, от которого BINLD должен получить запрос клиента PXE.
В следующем примере сервер dhcpsd либо передает имя файла загрузки клиенту PXE, либо отправляет клиента PXE на сервер BINLD с помощью дополнительных опций. Ключевое слово pxeboofile применяется для создания списка файлов загрузки для заданной архитектуры клиента со старшей и младшей версиями системы клиента.
pxeservertype dhcp_pxe_binld subnet default { vendor pxe { option 6 2 # Отключить групповые адреса option 8 5 4 10.10.10.1 12.1.1.15 12.5.5.5 12.6.6.6\ 2 2 10.1.1.10 9.3.4.5 1 1 10.5.5.9\ 1 1 9.3.149.15\ 4 0 option 9 5 "WorkSpace On Demand" 2 "Intel"\ 1 "Microsoft WindowsNT" 4 "NEC ESMPRO" option 10 2 "Нажмите F8 для вызова меню" } vendor pxeserver { option 7 239.0.0.239 } } subnet 9.3.149.0 255.255.255.0 { option 3 9.3.149.1 option 6 9.3.149.15 vendor pxe { option 6 4 # bootfile присутствует в начальном пакете pxebootfile 1 2 1 os2.one pxebootfile 2 2 1 aix.one } }
С помощью каждой строки option сервер задает для клиента какое-либо действие. В разделе Опции контейнера PXE описаны все поддерживаемые и известные опции.
Примечание: Используемые в таблицы единицы времени (единицы_времени) являются необязательными и применяются в качестве модификаторов значений времени. По умолчанию время указывается в минутах. Допустимо указывать время в секундах (1), минутах (60), часах (3600), сутках (86400), неделях (604800), месяцах (2392000) и годах (31536000). В скобках указано число, на которое надо умножить заданное значение времени, n, чтобы перевести его в секунды.
Ключевое слово | Формат | Вложенные контейнеры | Значение по умолчанию | Описание |
---|---|---|---|---|
database | database тип | Да | Нет | Основной контейнер, содержащий определения для пулов адресов, опций и операторов, задающих уровень доступа клиентов. Тип - это имя модуля, который должен загружаться для обработки этой части файла. В текущей версии применяется только значение db_file. |
logging_info | logging_info | Да | Нет | основной контейнер, определяющий параметры ведения протоколов. |
logitem | logitem NONE | Нет | По умолчанию все запрещены. | Задает уровень ведения протокола. Можно указать несколько строк. |
logitem SYSERR | ||||
logitem OBJERR | ||||
logitem PROTOCOL | ||||
logitem PROTERR | ||||
logitem WARN | ||||
logitem WARNING | ||||
logitem CONFIG | ||||
logitem EVENT | ||||
logitem PARSEERR | ||||
logitem ACTION | ||||
logitem ACNTING | ||||
logitem STAT | ||||
logitem TRACE | ||||
logitem RTRACE | ||||
logitem START | ||||
numLogFiles | numLogFiles n | Нет | 0 | Указывает, сколько файлов протоколов нужно создать. Каждый последующий файл протокола создается после заполнения предыдущего. n - число создаваемых файлов. |
logFileSize | logFileSize n | Нет | 0 | Задает размер каждого файла протокола в блоках по 1024 байта. |
logFileName | logFileName путь | Нет | Нет | Задает путь к первому файлу протокола. Имя файла протокола имеет вид имя_файла или имя_файла.расширение. Имя_файла должно состоять не более, чем из восьми символов. Имя следующего файла протокола создается на основе базового имени_файла, к которому добавляется номер, либо этот номер указывается вместо расширения. Например, если первому файлу присвоено имя file, то именем следующего файла будет file01. Если имя первого файла - file.log, то следующему файлу будет присвоено имя file.01. |
CharFlag | charflag yes | Нет | true | Для сервера DHCP этой операционной системы неприменимо, однако используется сервером DHCP OS/2 для создания окон отладки. |
charflag true | ||||
charflag false | ||||
charflag no | ||||
StatisticSnapShot | StatisticSnapShot n | Нет | -1, never | Задает интервал времени в секундах между операциями записи статистической информации в файл протокола. |
UsedIpAddressExpireInterval | UsedIpAddressExpireInterval n единицы_времени | Нет | -1, never | Указывает, с какой периодичностью проверяется правильность адресов, имеющих состояние НЕВЕРНЫЙ. |
leaseExpireInterval | leaseExpireInterval nединицы_времени | Нет | 900 seconds | Задает периодичность, с которой будет проверяться завершение времени выделения адресов, находящихся в состоянии СВЯЗАН. Если время выделения адреса закончилось, то адресу присваивается состояние ИСТЕК. |
reservedTime | reservedTime n единицы_времени | Нет | -1, never | Указывает, как долго адрес может находиться в состоянии ЗАРЕЗЕРВИРОВАН перед тем, как он будет переведен в состояние СВОБОДЕН. |
reservedTimeInterval | reservedTimeInterval n единицы_времени | Нет | 900 seconds | Указывает, с какой периодичностью проверяется адрес, находящийся в состоянии ЗАРЕЗЕРВИРОВАН, перед тем, как он будет переведен в состояние СВОБОДЕН. |
saveInterval | saveInterval n единицы_времени | Нет | 3600 seconds | Указывает, с какой периодичностью сервер DHCP должен проводить принудительное сохранение открытых баз данных. Для серверов, работающих с высокой нагрузкой, это значение должно составлять от 60 до 120 секунд. |
clientpruneintv | clientpruneintv n единицы_времени | Нет | 3600 seconds | Указывает, с какой периодичностью сервер DHCP удаляет из базы данных клиентов, не связанных с какими-либо адресами (т.е. клиентов с состоянием НЕИЗВЕСТНО). Это сокращает объем памяти, используемой сервером DHCP. |
numprocessors | numprocessors n | Нет | 10 | Указывает, сколько должно быть создано нитей для обработки пакетов. Минимальное значение равно единице. |
userObject | userObject имя_объекта | Да | Нет | Указывает, что сервер должен загружать пользовательский общий объект и вызывать программы из этого объекта при каждом взаимодействии с клиентами DHCP. Объект для загрузки находится в каталоге /usr/sbin под именем имя_объекта.dhcpo. См. описание API пользовательских расширений сервера DHCP. |
pxeservertype | pxeservertype тип_сервера | Нет | dhcp_only | Задает тип сервера dhcpd. Тип_сервера может
принимать следующие значения:
Значение по умолчанию - dhcp_only, то есть dhcpsd не поддерживает клиентов PXE. |
Примечания: Используемые в таблицы единицы времени (единицы_времени) являются необязательными и применяются в качестве модификаторов значений времени. По умолчанию время указывается в минутах. Допустимо указывать время в секундах (1), минутах (60), часах (3600), сутках (86400), неделях (604800), месяцах (2392000) и годах (31536000). В скобках указано число, на которое надо умножить заданное значение времени, n, чтобы перевести его в секунды.Кроме того, элементы, описанные в одном контейнере, могут быть переопределены во вложенном контейнере. Например, можно определить клиентов BOOTP на глобальном уровне, но разрешить их работу только в конкретной подсети, указав ключевое слово supportBootp в обоих контейнерах.
В контейнерах client, class и vendor поддерживаются регулярные выражения. Если в контейнере class или vendor указана заключенная в кавычки строка, в которой после открывающей кавычки стоит символ !, то остаток строки будет обрабатываться как регулярное выражение. В контейнере client регулярные выражения можно указывать в полях hwtype и hwaddr. В обоих полях можно задавать строку следующего формата:
десятичное_число-данныеЕсли десятичное_число равно нулю, то данные представляют строку ASCII. Если указано любое другое число, то данные представляют собой набор шестнадцатеричных цифр.
Ключевое слово | Формат | Вложенные контейнеры | Значение по умолчанию | Описание |
---|---|---|---|---|
subnet | subnet default | Да | Нет | Определяет подсеть, которая входит в диапазон. Подсеть применяется только при ответе на пакет INFORM/REQUEST, полученный от клиента, а для адреса клиента нет соответствующего контейнера подсети. |
subnet | subnet ид подсети маска | Да | Нет | Определяет подсеть и пул адресов. Если в строке не задан диапазон адресов и адреса не изменены в контейнере с помощью оператора range или exclude, то предполагается, что пул включает все адреса. Необязательный параметр диапазона представляет собой пару IP-адресов в десятичном формате с точками, разделенных дефисом. Можно (но не обязательно) указывать метку и приоритет. Они используются виртуальными подсетями для идентификации и упорядочения подсетей в виртуальной подсети. Метка и приоритет разделяются двоеточием. Эти контейнеры могут использоваться только на глобальном уровне или на уровне контейнера базы данных. |
subnet ид подсети маска диапазон | ||||
subnet ид подсети маска метка:приоритет | ||||
subnet ид подсети маска диапазон метка:приоритет | ||||
subnet | subnet ид подсети диапазон | Да | Нет | Определяет подсеть, которая входит в контейнер сети. Задает
диапазон адресов. Если не задан диапазон, то считается, что в подсеть
входят все адреса. Маска подсети определяется родительским контейнером
сети.
Примечание: Задавать подсеть таким образом не рекомендуется. |
option | option номер данные ... | Нет | Нет | Задает опцию для отправки клиенту, или, в случае запрещения, опцию, отправка которой запрещена. Опция option * deny означает, что все параметры, не определенные в данном контейнере, не должны возвращаться клиенту. Опция номерdeny запрещает только указанную опцию. Номер - это 8-разрядное целое число без знака. Данные - это данные для опции (см. выше), заключенная в кавычки строка ASCII, либо шестнадцатеричные данные в одном из форматов: 0xшестн._число или hex "шестн._число" или hex"шестн._число". Если опция находится в контейнере vendor, то она будет включена вместе с другими опциями в опцию 43. |
option номерdeny | ||||
option * deny | ||||
exclude | exclude IP-адрес | Нет | Нет | Изменяет диапазон адресов контейнера, в котором указан оператор exclude. На глобальном уровне и на уровне контейнера базы данных оператор exclude недопустим. Оператор exclude удаляет заданные адреса или диапазон адресов из диапазона, указанного для данного контейнера. Оператор exclude позволяет создавать для подсетей и других контейнеров не смежные диапазоны адресов. |
exclude адрес-адрес | ||||
range | range IP-адрес | Нет | Нет | Изменяет диапазон адресов контейнера, в котором указан оператор range. На глобальном уровне и на уровне контейнера базы данных оператор range недопустим. Если в строке описания контейнера не задан диапазон адресов и оператор range стоит в этом контейнере первым, то диапазон адресов контейнера будет определяться именно этим оператором range. Диапазоны, определяемые всеми остальными операторами range, стоящими после первого оператора range, или всеми операторами range, задающими диапазоны в строке описания контейнера, добавляются к текущему диапазону. С помощью оператора range к диапазону можно добавить отдельный адрес или набор адресов. Диапазон должен размещаться внутри группы адресов, определенной для контейнера подсети. |
range адрес-адрес | ||||
client | client тип аппаратуры аппаратный адрес NONE | Да | Нет | Определяет контейнер клиента, запрещающий выделение адреса клиенту с указанным типом аппаратуры и аппаратным адресом. Если параметр тип аппаратуры равен 0, то в параметре аппаратный адрес должна быть задана строка ASCII. В остальных случаях тип аппаратуры - это тип аппаратного обеспечения клиента, а аппаратный адрес - аппаратный адрес клиента. Если аппаратный адрес - это строка, то она может быть заключена в кавычки. Если аппаратный адрес - это шестнадцатеричная строка, то он может быть записан в виде 0xшестн._число или hex шестн._число. Диапазон разрешает выделять адрес из указанного диапазона клиенту с указанным типом аппаратуры и аппаратным адресом. Для сравнения нескольких клиентов должны использоваться регулярные выражения. |
client тип аппаратуры аппаратный адрес ANY | ||||
client тип аппаратуры аппаратный адрес адрес | ||||
client тип аппаратуры аппаратный адрес диапазон | ||||
class | class строка | Да | Нет | Определяет контейнер класса с именем строка. Строка может быть заключена в кавычки. Если строка заключена в кавычки, то перед сравнением они удаляются. Кавычки необходимы в том случае, если строка содержит пробелы или символы табуляции. Использование контейнера class допустимо на любом уровне. Для задания набора адресов, которые могут быть предложены клиенту с данным классом, рекомендуется пользоваться диапазонами. Диапазон может задаваться как одиночный IP-адрес в десятичном формате с точками или как два IP-адреса, разделенных дефисом. |
class строка диапазон | ||||
network | network ид сети маска | Да | Нет | Задает ИД сети на основании информации о классе (например,
9.3.149.0 с маской сети
255.255.255.0 - это сеть 9.0.0.0
255.255.255.0). В таком контейнере сети могут
находиться подсети с одинаковым ИД сети и маской сети. Если задан
диапазон адресов, то все адреса этого диапазона образуют пул. Диапазон
адресов должен относиться к данной сети. Используется полная адресация
класса. Это ключевое слово допустимо только на глобальном уровне или на
уровне контейнера базы данных.
Примечание: Вместо ключевого слова network лучше использовать контейнер subnet. |
network ид_сети | ||||
network ид сети диапазон | ||||
vendor | vendor ид_вендора | Да | Нет | Определяет контейнер вендора. Контейнеры вендоров используются для возврата клиенту опции 43. ИД вендора может задаваться в виде строки, заключенной в кавычки, либо в виде двоичной строки в формате 0xшестн._число или hex "шестн._число". После ИД вендора можно указать диапазон. Диапазон задается двумя IP-адресами в десятичном формате с точками, разделенными дефисом. После диапазона может следовать первая часть опции 43 в виде шестнадцатеричной или ASCII-строки. При наличии в контейнере опций они добавляются к данным опции 43. После обработки всех опций к данным добавляется опция конца списка. Для возврата клиенту других опций (помимо опции 43) используйте регулярное выражение, позволяющее сравнивать всех клиентов и определения нормальных опций, возвращаемых на основании ИД вендора. |
vendor ид_вендора hex "" | ||||
vendor ид_вендора hex "" | ||||
vendor ид_вендора 0xданные | ||||
vendor ид_вендора "" | ||||
vendor ид_вендора диапазон | ||||
vendor ид_вендора диапазон hex "" | ||||
vendor ид_вендора диапазон hex "" | ||||
vendor ид_вендора диапазон | ||||
vendor ид_вендора диапазон "" | ||||
inoption | inoption номерданные | Да | Нет | Указывает контейнер, с которым следует сравнивать переданные клиентом опции с данным номером. номер означает номер опции. данные - это ключ для сравнения с этим контейнером в ходе выбора адреса и опции для данного клиента. Параметр данные для стандартных опций указывается в явной форме: строка, заключенная в кавычки, IP-адрес, целое число; кроме того, их можно указать в форме шестнадцатеричной строки байтов, начинающейся с символов 0x. Для опций, неизвестных серверу, допустим только второй вариант. Кроме того, данные могут представлять собой выражение, которое следует сравнить с содержимым строки данных опции, переданной клиентом. Такие выражения записываются в кавычках и начинаются с символов "! (кавычка и восклицательный знак). Опции, неизвестные серверу, должны указываться в виде шестнадцатеричной строки байтов БЕЗ начальных символов 0x. |
inoption номерданныедиапазон | ||||
virtual | virtual fill ИД ИД ... | Нет | Нет | Определяет виртуальную подсеть со стратегией. Слово fill означает, что перед переходом к следующему контейнеру необходимо использовать все адреса текущего контейнера. Слово rotate указывает, что для каждого запроса адрес выбирается из следующего указанного пула. sfill и srotate означают то же, что fill и rotate, однако в этом случае производится поиск, чтобы узнать, не соответствует ли клиент каким-либо контейнерам, вендорам или классам в подсети. Если обнаружено совпадение с контейнером, в котором выделяется адрес, то, адрес выбирается из этого контейнера, а не назначается в соответствии со стратегией. Число ИД в списке не ограничено. ИД - это либо ИД подсети, либо метка, заданная в описании подсети. Метка нужна при наличии нескольких подсетей с одинаковым идентификатором. |
virtual sfill ИД ИД ... | ||||
virtual rotate ИД ИД ... | ||||
virtual srotate ИД ИД ... | ||||
inorder: | inorder: ИД ИД ... | Нет | Нет | Определяет виртуальную подсеть со стратегией заполнения, т.е. перед переходом к следующему контейнеру должны быть использованы все адреса текущего контейнера. Число ИД в списке не ограничено. ИД - это либо ИД подсети, либо метка, заданная в описании подсети. Метка нужна при наличии нескольких подсетей с одинаковым идентификатором. |
balance: | balance: ИД ИД ... | Нет | Нет | Определяет виртуальную подсеть со стратегией смены адресов, при которой каждый следующий адрес выбирается из следующего контейнера. Число ИД в списке не ограничено. ИД - это либо ИД подсети, либо метка, заданная в описании подсети. Метка нужна при наличии нескольких подсетей с одинаковым идентификатором. |
supportBootp | supportBootp true | Нет | Да | Указывает, должен ли текущий контейнер и все контейнеры следующих уровней (до переопределения) поддерживать клиентов BOOTP. |
supportBootp 1 | ||||
supportBootp yes | ||||
supportBootp false | ||||
supportBootp 0 | ||||
supportBootp no | ||||
supportUnlistedclients | supportUnlistedclients BOTH | Нет | Both | Указывает, должен ли текущий контейнер и все контейнеры следующих уровней
(до переопределения) поддерживать клиентов, не перечисленных в списке.
Значение указывает, каким клиентам необходимо разрешить доступ (без
использования специальных операторов описания клиентов): только клиентам
DHCP, только клиентам BOOTP или запретить доступ всем клиентам.
Примечание: Значения true и false поддерживаются для совместимости с предыдущими версиями и использовать их не рекомендуются. Тrue соответствует значению BOTH, а false - значению NONE. |
supportUnlistedclients DHCP | ||||
supportUnlistedclients BOOTP | ||||
supportUnlistedclients NONE | ||||
supportUnlistedclients true | ||||
supportUnlistedclients yes | ||||
supportUnlistedclients 1 | ||||
supportUnlistedclients false | ||||
supportUnlistedclients no | ||||
supportUnlistedclients 0 | ||||
addressrecorddb | addressrecrddb полное_имя | Нет | Нет | Работает как ключевое слово backupfile. Допустимо
только на глобальном уровне или на уровне контейнера базы данных.
Примечание: Использовать этот метод не рекомендуется. |
backupfile | backupfile полное_имя | Нет | /etc/db_file.crbk | Определяет файл для хранения резервных копий базы данных. Допустимо только на глобальном уровне или на уровне контейнера базы данных. |
checkpointfile | checkpointfile полное_имя | Нет | /etc/db_file.chkpt | Задает контрольные файлы базы данных. Первый контрольный файл задается параметром полное_имя. В имени второго файла второй символполного имени заменяется на цифру 2. В связи с этим имена контрольных файлов не должны заканчиваться цифрой 2. Правило действует только для контейнеров глобального уровня или уровня базы данных. |
clientrecorddb | clientrecorddb полное_имя | Нет | /etc/db_file.cr | Задает файл для сохранения базы данных. В этом файле будут сохраняться записи всех клиентов, которых обслуживает сервер DHCP. Допустимо только на глобальном уровне или на уровне контейнера базы данных. |
bootstrapserver | bootstrapserver IP-адрес | Нет | Нет | Указывает, на каком сервере находятся файлы TFTP, которые должны использоваться клиентами после получения ими пакетов BOOTP или DHCP. Это значение задается в поле siaddr пакета. Допустимо на уровне любого контейнера. |
giaddrfield | giaddrfield IP-адрес | Нет | Нет | Задает поле giaddrfield для ответных сообщений (пакетов).
Примечание: Данная спецификация недопустима в протоколах BOOTP и DHCP, однако, некоторые клиенты требуют, чтобы в поле giaddr был указан шлюз по умолчанию для сети. Из-за возможных конфликтов ключевое слово giaddrfield должно использоваться только внутри контейнеров клиентов, хотя оно может работать на любом уровне. |
pingTime | pingTime n единицы_времени | Нет | 3 seconds | Задает время ожидания отклика на команду ping перед выделением адреса. По умолчанию время указывается в сотых долях секунды. Значение единиц времени определено в примечаниях, приведенных перед данной таблицей. Допустимо на уровне любого контейнера. Параметр единицы_времени указывать не обязательно. |
bootptime | bootptime n единицы_времени | Нет | -1, infinite | Определяет время выделения адреса для клиента BOOTP. Значение по умолчанию -1, что соответствует бесконечному времени выделения адреса. Применимы обычные единицы времени. Параметр единицы_времени указывать не обязательно. Допустимо на уровне любого контейнера. |
AllRoutesBroadcast | allroutesbroadcast no | Нет | 0 | Указывает, должны ли ответные сообщения рассылаться по всем маршрутам, если необходим оповещающий ответ. Допустимо на уровне любого контейнера. Это ключевое слово игнорируется сервером DHCP, поскольку для возвращения пакета сохраняется фактический адрес MAC клиента, включая RIF. Допустимо на уровне любого контейнера. |
allroutesbroadcast false | ||||
allroutesbroadcast 0 | ||||
allroutesbroadcast yes | ||||
allroutesbroadcast true | ||||
allroutesbroadcast 1 | ||||
addressassigned | addressassigned "строка" | Нет | Нет | Определяет заключенную в кавычки строку, которая будет выполняться при присвоении адреса клиенту. Строка должна содержать два параметра подстановки %s. Первый параметр %s - это ИД клиента в виде тип-строка. Второй параметр %s - это IP-адрес в десятичном формате с точками. Допустимо на уровне любого контейнера. |
addressreleased | addressreleased "строка" | Нет | Нет | Определяет заключенную в кавычки строку, которая будет выполняться при освобождении адреса клиентом. Строка должна содержать один параметр подстановки %s, который задает высвобождаемый IP-адрес в десятичном формате с точками. Допустимо на уровне любого контейнера. |
appenddomain | appenddomain 0 | Нет | Нет | Указывает, нужно ли добавлять имя домена, определяемое опцией 15, к рекомендуемому для клиента имени хоста в том случае, если клиент не предлагает задавать имя домена. Допустимо на уровне любого контейнера. |
appenddomain no | ||||
appenddomain false | ||||
appenddomain 1 | ||||
appenddomain yes | ||||
appenddomain true | ||||
canonical | canonical 0 | Нет | 0 | Указывает, что ИД клиента имеет канонический формат. Допустимо только в контейнере клиента. |
canonical no | ||||
canonical false | ||||
canonical 1 | ||||
canonical yes | ||||
canonical true | ||||
leaseTimeDefault | leaseTimeDefault n единицы_времени | Нет | 86400 seconds | Задает время выделения адреса по умолчанию для клиентов. Допустимо на уровне любого контейнера. Параметр единицы_времени указывать не обязательно. |
proxyarec | proxyarec never | Нет | usedhcpddnsplus | Указывает опции и способы для обновления записей А в DNS. Значение never указывает, что запись А никогда не обновляется. Значение usedhcpddns указывает, что должна применяться опция 81, если она задана клиентом. Значение usedhcpddnsplus указывает, что должна применяться опция 81 или опции 12 и 15, если они заданы. Значение always задает обновление записей А для всех клиентов. Значения XXXXprotected изменяют команду nsupdate и выполняют проверку допустимости клиента. Значение standard аналогично значению always. Значение protected аналогично значению alwaysprotected. Допустимо на уровне любого контейнера. |
proxyarec usedhcpddns | ||||
proxyarec usedhcpddnsplus | ||||
proxyarec always | ||||
proxyarec usedhcpddnsprotected | ||||
proxyarec usedhcpddnsplusprotected | ||||
proxyarec alwaysprotected | ||||
proxyarec standard | ||||
proxyarec protected | ||||
releasednsA | releasednsA "строка" | Нет | Нет | Задает строку, которая выполняется при освобождении адреса. Строка используется для удаления записи А, связанной с освобождаемым адресом. Допустимо на уровне любого контейнера. |
releasednsP | releasednsP "строка" | Нет | Нет | Задает строку, которая выполняется при освобождении адреса. Строка используется для удаления записи PTR, связанной с освобождаемым адресом. Допустимо на уровне любого контейнера. |
removedns | removedns "строка" | Нет | Нет | Задает строку, которая выполняется при освобождении адреса. Строка
используется для удаления записей PTR и A, связанных с освобождаемым
адресом. Допустимо на уровне любого контейнера.
Примечание: Вместо данного ключевого слова рекомендуется использовать ключевые слова releasednsA и releasednsP. |
updatedns | updatedns "строка" | Нет | Нет | Задает строку, которая выполняется при связывании адреса. Строка
используется для обновления записей PTR и А, связанных с данным
адресом. Допустимо на уровне любого контейнера.
Примечание: Вместо данного ключевого слова рекомендуется использовать ключевые слова updatednsA и updatednsP. |
updatednsA | updatednsA "строка" | Нет | Нет | Задает строку, которая выполняется при связывании адреса. Строка используется для обновления записи А, связанной с данным адресом. Допустимо на уровне любого контейнера. |
updatednsP | updatednsP "строка" | Нет | Нет | Задает строку, которая выполняется при связывании адреса. Строка используется для обновления записи PTR, связанной с данным адресом. Допустимо на уровне любого контейнера. |
hostnamepolicy | hostnamepolicy suggested | Нет | по умолчанию | Задает имя хоста для возвращения клиенту. Стратегия по умолчанию отдает преимущество заданным именам хостов и доменов перед рекомендуемыми. Другие стратегии подразумевают строгое соответствие (например, при указании опции defined будет возвращаться заданное имя, а если имя не задано, то оно не будет возвращено). Аналогично, в случае применения стратегии с модификатором always сервер будет возвращать параметр имени хоста независимо от того, запросил его клиент в опции списка параметров или нет. Обратите внимание, предложение имени хоста подразумевает его запрос, и имена хостов могут быть предложены с помощью опции 81 или опций 12 и 15. Данное ключевое слово допустимо на уровне любого контейнера. |
hostnamepolicy resolved | ||||
hostnamepolicy always_resolved | ||||
hostnamepolicy defined | ||||
hostnamepolicy always_defined | ||||
hostnamepolicy default | ||||
bootfilepolicy | bootfilepolicy suggested | Нет | suggested | Задает предпочтения при возвращении имени загрузочного файла клиенту. Значение suggested означает, что имя загрузочного файла, предложенного клиентом, будет предпочтительней любого имени, указанного в конфигурации сервера. Значение merge добавляет имя, предложенное клиентом, к домашнему каталогу, указанному в конфигурации сервера. Значение defined означает, что имя загрузочного файла, определенное в конфигурации, будет предпочтительней имени, предложенного клиентом. Значение always возвращает заданное имя независимо от того, запрашивает ли клиент параметр загрузочного файла с помощью опции списка параметров. |
bootfilepolicy merge | ||||
bootfilepolicy defined | ||||
bootfilepolicy always | ||||
stealfromchildren | stealfromchildren true | Нет | Нет | Указывает, должен ли родительский контейнер использовать адреса из дочерних контейнеров в том случае, если его пул адресов исчерпан. Это означает, что если у вас есть подсеть с классом, для которого задан диапазон адресов, то эти адреса зарезервированы для клиентов, соответствующих данному классу. Если для опции stealfromchildren указано значение true, то для выполнения запроса будут применяться адреса из дочернего контейнера. По умолчанию адреса из дочерних контейнеров не используются. |
stealfromchildren 1 | ||||
stealfromchildren yes | ||||
stealfromchildren false | ||||
stealfromchildren 0 | ||||
stealfromchildren no | ||||
homedirectory | homedirectory полное_имя | Нет | Нет | Определяет домашний каталог, который используется в разделе файла, задающем ответный пакет (сообщение). Допустимо на уровне любого контейнера. Взаимодействие элементов, указанных в поступающем пакете с операторами загрузочного файла и домашнего каталога определяется стратегией загрузочного файла. |
bootfile | bootfile полное_имя | Нет | Нет | Определяет загрузочный файл, который должен быть указан в ответном пакете. Допустимо на уровне любого контейнера. Взаимодействие элементов, указанных в поступающем пакете с операторами загрузочного файла и домашнего каталога определяется стратегией загрузочного файла. |
pxebootfile | pxebootfile архитектура старшая_версия младшая_версия файл_загрузки | Нет | Нет | Задает файл загрузки для клиента. Он применяется только в случае, если dhcpsd поддерживает клиентов PXE ( pxeservertype равно dhcp_pxe_binld). Программа разбора файла конфигурации отравляет сообщение об ошибке, если число параметров после pxebootfile меньше четырех, а лишние параметры всегда игнорируются. pxebootfile можно применять только в контейнере. |
Динамическое распределение IP-адресов - относительно новая технология. Приведенные ниже рекомендации помогут вам организовать взаимодействие DHCP и NIM.
updatedns "/usr/sbin/dhcpaction '%s' '%s' '%s' '%s' NONE NONIM"
В файле /etc/dhcpsd.cnf измените строку updatedns:
updatedns "/usr/sbin/dhcpaction '%s' '%s' '%s' '%s' BOTH NIM"
Примечание: Когда объект NIM ожидает установки BOS, сервер dhcpsd может передавать аргументы, отличающиеся от первоначально предполагавшихся. Постарайтесь уменьшить время, в течение которого клиент находится в состоянии ожидания.
Данные рекомендации позволяют существенно упростить настройку среды NIM для работы с динамическими клиентами.
Дополнительная информация об Администраторе сетевой установки приведена в книге AIX 5L, версия 5.1: Руководство и справочник по сетевой установке.