Справочник системных ошибок и решений

Windows Server, Active Directory, 1С:Предприятие, СУБД, Linux, Cisco, MikroTik, Asterisk.

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

DHCP_DUID_COLLISION Сетевое оборудование и VPN

Коллизия DUID (DHCP Unique Identifier): сбои аренды в DHCPv6 и Kea

Обновлено: 25.08.2026 · Официальная документация ↗
  • Разные серверы или виртуальные машины поочередно вытесняют друг друга из таблицы DHCP-аренды.
  • В логах сервера: Client 00:01:00:... requested IP already leased to another host.
  • Сетевые интерфейсы на клонированных хостах периодически теряют IP-адрес или получают один и тот же IP на двоих.
  • Сбои в работе облачных инстансов (cloud-init) при развертывании из единого шаблона (Golden Template).

1. Причина возникновения DUID Collision

В DHCPv6 (и современных реализациях DHCPv4 с Client-ID) идентификация клиента строится на основе DUID (DHCP Unique Identifier). При клонировании виртуальных машин без генерации нового Machine ID файл идентификатора копируется, что приводит к полной идентичности запросов для сервера.

2. Регенерация Machine-ID и DUID в Linux (systemd-networkd / NetworkManager)

На клонированном хосте выполните процедуру сброса:

# 1. Очистка системного ID
rm -f /etc/machine-id /var/lib/dbus/machine-id
systemd-machine-id-setup

# 2. Очистка сохраненных DUID в NetworkManager
rm -f /var/lib/NetworkManager/secret_key
rm -f /var/lib/NetworkManager/dhclient-*.lease

# 3. Перезапуск сетевого стека
systemctl restart systemd-networkd || systemctl restart NetworkManager

3. Принудительное использование MAC-адреса вместо DUID в DHCPv4

Если требуется привязать выдачу адресов строго к MAC (Client-ID на основе MAC):

# Для NetworkManager (/etc/NetworkManager/conf.d/dhcp-client-id.conf)
[connection]
ipv4.dhcp-client-id=mac

# Для dhclient (/etc/dhcp/dhclient.conf)
send dhcp-client-identifier = hardware;

4. Сброс DUID в ОС Windows Server

# Запуск Sysprep для генерации новых SID и DUID
C:\Windows\System32\Sysprep\sysprep.exe /generalize /oobe /reboot
💡 Практика специалистов: При создании виртуальных машин через Terraform или Cloud-Init обязательно включайте в скрипт финализации удаление /etc/machine-id, иначе весь созданный кластер получит одинаковый DUID.

Частые вопросы (FAQ)

Какие типы DUID существуют по спецификации RFC 8415?

DUID-LLT (Link-layer address plus time), DUID-EN (Enterprise number assigned by vendor), DUID-LL (Link-layer address only) и DUID-UUID (на основе UUID материнской платы/системы).

Почему смена MAC-адреса на виртуальной машине не решает проблему аренды DHCPv6?

DHCPv6 сервер игнорирует физический MAC-адрес заголовка Ethernet и сопоставляет аренду исключительно с полем DUID, находящимся в теле пакета DHCPv6.

Как посмотреть текущий DUID в Linux?

Выполните команду 'networkctl status' или прочитайте файл '/var/lib/NetworkManager/internal-*.lease' (в зависимости от используемого сетевого менеджера).

Как подготовить образ золотого шаблона (Gold Image), чтобы избежать дублирования?

Перед созданием шаблона удалите файл /etc/machine-id и создайте пустой файл touch /etc/machine-id, а также очистите директории аренды /var/lib/dhcp/ и /var/lib/NetworkManager/.

Полезные материалы
Рекомендуем