У меня проблема с настройкой динамического DNS и DHCP, когда клиенты, запрашивающие аренду, когда ни одна из них недоступна, вызывают каскадный сбой, когда существующие клиенты удаляют свои прямые и обратные записи DNS. Я использую isc-dhcp-server и bind9 на сервере Ubuntu 14.04. В этом случае клиенты работают под управлением OS X.
Я выделил диапазон IP-адресов для DHCP-сервера и подключил его для привязки обновлений динамического DNS. При выдаче IP-адресов привязка обновляется, и все работает нормально. Однако, когда пул арендованных DHCP-серверов исчерпан, DHCP-сервер начинает раздавать существующий сдает в аренду клиентам, запрашивающим аренду, а затем немедленно аннулирует ее. К сожалению, это также вызывает обновление DNS, при котором прямые и обратные записи для этого IP-адреса также удаляются, что означает, что система на этом IP-адресе больше не может быть найдена DNS. Это продолжается последовательно во всем диапазоне, удаляя все записи DNS, пока он снова не зациклится.
Я покопался в справочной странице и не могу объяснить такое поведение. Я пробовал совместно используемые сеть, подсеть и пулы в конфигурации isc-dhcp-server, и теперь все они демонстрируют одинаковое поведение. Если аренда возвращается от клиента, она передается следующей системе, запрашивающей ее, и DNS обновляется нормально, но уже следующий клиент, запрашивающий аренду, когда таковых нет, начинает цикл снова.
Есть идеи о том, что может вызывать такое поведение? Это похоже на то, что DHCP-сервер не проверяет свой собственный файл dhcpd.leases, чтобы убедиться, что он уже выдал эти IP-адреса.
Проблема сводится к неправильному поведению OS X в отношении спецификации DHCP. Как говорилось о Вот OS X создает свои собственные пакеты ARP еще до того, как попытается установить связь по DHCP. Если Идентификатор клиента DHCP одновременно заполнен и не уникален. OS X заполняет ARP-пакет этой информацией таким образом, что это вызывает атаку исчерпания DHCP.
Чтобы исправить проблему, вы также не можете использовать ID клиента DHCP поле или он должен быть уникальным. В моем случае мы сделали этот «[пул аренды DHCP] [имя хоста]», который предоставил уникальный идентификатор клиента, который все еще можно получить с подстрокой в DHCP-сервере, чтобы определить, какой пул аренды назначить системе.