Руководство по dhcpd.leases

Секция: форматы файлов (5)

 

Содержание

ЧТО ЭТО ?
ОПИСАНИЕ
ФОРМАТ
ФАЙЛЫ
СМОТРИТЕ ДОПОЛНИТЕЛЬНО
АВТОР
ПЕРЕВОД

 

ЧТО ЭТО ?

Файл dhcpd.leases - база данных(БД), хранящая информацию о выделенных(распределенных) демоном DHCP адресам.  

ОПИСАНИЕ

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

После установки dhcpd, файл БД не создается. Однако он требуется для нормальной работы сервера dhcp и поэтому необходимо самостоятельно создать пустой файл с названием: /var/state/dhcp/dhcpd.leases.

Для того что бы предотвратить бесконтрольный рост размеров файла он время от времени создается заново и перезаписывается. Сначала создается временный файл БД куда сбрасываются все актуальные записи, затем старый файл переименовывается в /var/state/dhcp/dhcpd.leases~. Ну и наконец, временный файл переименовывается в /var/state/dhcp/dhcpd.leases.

Здесь существует проблема с безопасностью системы в плане DoS. Если процесс dhcpd был принудительно завешен (убит)или система упала в момент когда старый файл уже переименован, а новый еще не перемещен на место, то после перезагрузки системы окажется что отсутствует файл /var/state/dhcp/dhcpd.leases. В этом случае dhcpd просто не сможет стартовать и потребуется ручное вмешательство. Первое что приходит на ум - создавать пустой файл. Никогда не делайте этого - таким образом вы рискуете ввергнуть систему в хаос, потеряв информацию о ранее распределенных адресах. Вместо этого просто переименуйте /var/state/dhcp/dhcpd.leases~ в /var/state/dhcp/dhcpd.leases, тем самым восстановив предыдущее состояние.
 

ФОРМАТ

Описания распределенных адресов хранятся в формате, который может быть разобран тем же парсером, что используется для чтения файлов dhcpd.conf(5) и dhclient.conf(5). Формат записи описывающей выделенный адрес следующий:
 lease ip-address { statements... }

Каждая запись включает в себя единственный IP-адрес, тот что был выделен клиенту. Инструкции в скобках определяют кому и на какой срок выдан адрес.

Начало и окончание срока использования клиентом адреса записываются с использованием инструкций: ``starts'' и ``ends''
  starts 
дата;
  ends дата;

дата - означает следующее:
 день_недели год/месяц/день час:минута:секунда

день_недели присутствует для облегчения чтения и указывается цифрой от 0 до 6, где 0 - воскресение. День_недели игнорируется при вводе. Год указывается четырьмя цифрами. Месяц указывается числом начиная с 1 (Январь). Дни месяца также начинаются с 1. Часы - числа от 0 до 23, минуты и секунды 0 - 59

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

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

 hardware hardware-type mac-address;

MAC адрес записывается последовательностью шестнадцатеричных октетов разделенных двоеточиями.

Если для получения адреса клиент использует идентификатор клиента (client identifier), то он фиксируется в инструкции uid:
 uid client-identifier;

Идентификатор клиента записывается последовательностью шестнадцатеричных октетов, независимо от того, указывает ли клиент строку ASCII или использует более новый формат - hardware type/MAC адрес.

Если клиент посылает серверу собственное имя используя опцию Client Hostname как указанно в некоторых версиях DHCP-DNS Interaction draft, то имя хоста записывается с использованием инструкции client-hostname.
 client-hostname "hostname";

Если клиент посылает серверу собственное имя используя опцию Hostname так как это делает Windows 95,то имя хоста записывается с использованием инструкции hostname.
 hostname "hostname";

Сервер DHCP, в некоторых случаях, может определить что выделенный адрес не правильно используется, например если клиент которому был выделен адрес не подтверждает его получение, или потому что при попытке проверить используется ли адрес перед тем как его выдать сервер обнаруживает что адрес занят. В таких случаях инструкция abandoned используется что бы показать что данный адрес "отказной" и не может быть переназначен.
 abandoned;

Когда клиент запрашивает новый адрес и сервер обнаруживает что свободные адреса закончились, то в этом случае сервер просматривает адреса помеченные как abandoned и выдает клиенту адрес с наименьшим числом отказов. Если конфликты с выданным адресом продолжаются он повторно переводится в разряд "отказных". d.

Если клиент запрашивает "отказной" адрес, то сервер считает что причиной помещения этого адреса в разряд "отказных" было повреждение файла БД и данный клиент и есть та машина что отвечала при тестировании адреса перед его распределением. В этом случае адрес незамедлительно назначается клиенту.  

ФАЙЛЫ

/var/state/dhcp/dhcpd.leases  

СМОТРИТЕ ДОПОЛНИТЕЛЬНО

dhcpd(8), dhcp-options(5), dhcpd.conf(5), RFC2132, RFC2131.
 

АВТОР

dhcpd(8) написан Тедом Лемоном (Ted Lemon) <mellon@vix.com> по контракту с Vixie Labs. Финансирование проекта осуществлялось ISC. Информацию об ISC можно найти на сайте http://www.isc.org/isc.  

ПЕРЕВОД

Документ переведен Лаптевым Андреем <lantan@chat.ru> Перевод осуществлялся в исключительно познавательных целях, за счет скрытых резервов.
йЮПРЮ яЮИРЮ