Я использую isc-dhcp-server версии 4.3 (isc-dhcpd-4.3.5) в качестве DHCP-сервера для моего локального IPv4 LAN, и я пытаюсь настроить его для использования опция dhcp-client-identifier (Параметр DHCP 61) в хозяин объявление для идентификации DHCP-клиента:
host client_host {
option dhcp-client-identifier xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx;
fixed-address 192.168.0.20;
}
К сожалению, DHCP-сервер, похоже, игнорирует эту опцию (он не жалуется на эту опцию при запуске, поэтому опция распознается и синтаксис правильный). Назначение адреса отлично работает, когда я использую аппаратный Ethernet с MAC клиента, поэтому я уверен, что в противном случае и DHCP-сервер, и DHCP-клиент настроены правильно.
В официальная спецификация ISC DHCP для файла dhcpd.conf (это для версии 4.1, и то же самое есть в документации для версии 4.4, поэтому я предполагаю, что это верно и для версии 4.3.5, которую я использую) Я обнаружил следующее:
Хост объявления сопоставляются с фактическими клиентами DHCP или BOOTP путем сопоставления параметра идентификатора-клиента dhcp, указанного в хозяин декларации к заявке, предоставленной клиентом, или, если хозяин декларации или клиент не предоставляет параметр идентификатора-клиента-dhcp, сопоставив оборудование параметр в хозяин объявление на адрес сетевого оборудования, предоставленный клиентом. Клиенты BOOTP обычно не предоставляют идентификатор-клиента dhcp, поэтому аппаратный адрес должен использоваться для всех клиентов, которые могут загружаться с использованием протокола BOOTP.
Я также уверен, что DHCP-клиент отправляет идентификатор-клиента dhcp в запросе DHCPv4 - я заглянул внутрь пакета с помощью wirehark и убедился, что он соответствует RFC-4361. Кроме того, согласно тому же RFC, соответствующий DHCP-сервер не может игнорировать эту опцию:
Серверы DHCPv4, соответствующие этой спецификации, ДОЛЖНЫ использовать опцию «идентификатор клиента» для идентификации клиента, если клиент его отправляет.
На данный момент я предполагаю, что isc-dhcp-server действительно поддерживает идентификатор-клиента dhcp вариант (это предположение основано на спецификации ISC DHCP). Упомянутая спецификация ISC DHCP также описывает поведение, которое также соответствует RFC (как указано выше).
Итак, мой вопрос - что мне здесь не хватает? Требуется ли дополнительная настройка DHCP-сервера ISC?
Или, возможно, isc-dhcpd не поддерживает идентификатор-клиента dhcp вариант для IPv4 (и при этом их официальная спецификация неверна)?
РЕДАКТИРОВАТЬ Пожалуй, стоит упомянуть, что у меня также есть DHCPv6 сервер, работающий параллельно с DHCPv4. Сервер DHCPv6 настроен на использование того же DUID, и он там отлично работает:
host client_host {
host-identifier option
dhcp6.client-id xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx;
fixed-address fdxx:xxxx:xxxx:xxxx::1;
}
Причина, по которой я хочу использовать DUID также в конфигурации DHCPv4, заключается в том, что я хочу, чтобы DHCP-серверы динамически обновляли мой локальный DNS для сетей IPv4 и IPv6. И DNS-сервер не может идентифицировать конкретного клиента, используя как MAC-адрес (полученный от сервера DHCPv4), так и DUID (от сервера DHCPv6) - он будет принимать только одну форму идентификации и игнорировать другую.
У меня была аналогичная проблема с ISC DHCP 4.4.1, которую я получил, добавив идентификатор с 0xff, то есть:
host TestHost {
option dhcp-client-identifier ff:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx;
fixed-address 192.168.1.1;
}
Подсказка была в выводе tcpdump запроса, где указывалось, что идентификатор клиента был hardware-type 255
.