DHCP удаляет существующие записи DNS при запросе аренды, и ни одна из них не доступна

У меня проблема с настройкой динамического DNS и DHCP, когда клиенты, запрашивающие аренду, когда ни один из них не доступен, вызывают каскадный сбой, когда существующие клиенты удаляют свои прямые и обратные записи DNS. Я использую isc-dhcp-server и bind9 на сервере Ubuntu 14.04. Клиенты в этом случае работают под управлением OS X.

Я выделил диапазон IP-адресов для сервера DHCP и подключил его для привязки для обновлений динамического DNS. При выдаче IP-адресов bind обновляется и все работает нормально. Однако, когда пул аренды DHCP исчерпан, DHCP-сервер начинает раздавать существующие аренды клиентам, запрашивающим аренду, а затем немедленно отзывает их. К сожалению, это также вызывает обновление DNS, при котором прямые и обратные записи для этого IP-адреса также удаляются, что означает, что DNS-система больше не может найти систему на этом IP-адресе. Это продолжается последовательно по всему диапазону, который удаляет все записи DNS, пока он не зацикливается снова.

Я перерыл справочную страницу и не могу объяснить это поведение. Я попытался использовать общую сеть, подсеть и пулы в конфигурации isc-dhcp-сервера, и все они теперь демонстрируют одинаковое поведение. Если аренда возвращается от клиента, она передается следующей системе, запрашивающей ее, и DNS обновляется, но следующий клиент, запрашивающий аренду, когда ни один из них не доступен, начинает цикл снова.

Любые идеи о том, что может быть причиной такого поведения? Это похоже на то, что DHCP-сервер не проверяет свой собственный файл dhcpd.leases, чтобы увидеть, что он уже выдал эти IP-адреса.

1 ответ

Проблема сводится к неправильному поведению OS X в отношении спецификации DHCP. Как уже говорилось, OS X создает собственные пакеты ARP, даже не пытаясь установить связь через DHCP. Если идентификатор клиента DHCP заполнен и не является уникальным, OS X заполняет пакет ARP этой информацией таким образом, что это вызывает атаку по исчерпанию DHCP.

Чтобы устранить проблему, вы не можете использовать поле идентификатора клиента DHCP или оно должно быть уникальным. В моем случае мы создали "[пул аренды DHCP][имя хоста]", в котором был указан уникальный идентификатор клиента, который можно получить с помощью подстроки на сервере DHCP, чтобы определить, какой пул аренды назначить системе.

Другие вопросы по тегам