У меня работает DHCP-сервер ISC (версия 4.2.5), который настроен на динамическое обновление обратной зоны в службе DNS с именем хоста, которое он получает через пакет dhcp DISCOVER.
Все это отлично работает в таких зонах, как 2.1.10.in-addr-arpa
но эта зона не работает:
zone 16-30.32.168.192.in-addr.arpa. {
primary 127.0.0.1;
key rndc-key;
}
DHCP-сервер настроен на выдачу адресов в этом диапазоне:
range 192.168.32.17 192.168.32.30;
и обратная зона работает нормально. Однако динамические обновления в этой зоне завершаются ошибкой:
Unable to add reverse map from 17.32.168.192.in-addr.arpa. to debiantest.dhcp.company.com: not found
Как указать именно эту зону? Кажется, это вопрос синтаксиса, поскольку он работает с другими зонами, но я не могу найти нужную информацию в документации isc dhcp.
Для документации я постараюсь ответить на свой вопрос здесь: это невозможно. Цитировать из https://lists.isc.org/mailman/htdig/dhcp-users/2006-August/001422.html :
DHCP НЕ поддерживает обновление произвольных зон, он берет IP-адрес, меняет октеты и добавляет обратное доменное имя (deafult in-addr.arpa).
Однако есть изящное решение проблемы. Можно настроить произвольные доменные имена для обновлений DDNS в конфигурации dhcpd:
ddns-rev-domainname "dhcp";
zone 32.168.192.dhcp. {
primary 127.0.0.1;
key rndc-key;
}
Таким образом, DNS-сервер должен предоставить эту конкретную зону. Поскольку в моем случае это bind9, вот соответствующий фрагмент из /etc/ named.conf
zone "32.168.192.dhcp" IN {
type master;
file "/var/named/dynamic/32.168.192.dhcp";
allow-update { key "rndc-key"; };
};
И, конечно же, соответствующий файл зоны:
$ORIGIN .
$TTL 600 ; 10 minutes
32.168.192.dhcp IN SOA dns-dhcp.company.com. hostmaster.company.com. (
2016100328 ; serial
3600 ; refresh (1 hour)
600 ; retry (10 minutes)
86400 ; expire (1 day)
600 ; minimum (10 minutes)
)
NS dns-dhcp.company.com.
Итак, теперь зона 32.168.192.dhcp динамически обновляется информацией о сервере DHCP. Но как это помогает при обратном поиске? В конце концов, клиент будет искать x.32.168.192.in-addr.arpa, верно? Что ж, если мы добавим запись ресурса CNAME в нашу зону 32.168.192.in-addr.arpa для каждого хоста, который может находиться в зоне 32.168.192.dhcp (это все IP-адреса, которые DHCP-сервер потенциально может выдать, иначе диапазон подсети), мы должны быть золотыми.
Итак, вот соответствующая часть файла зоны 32.168.192.in-addr.arpa (в моем случае /var/ named/32.168.192.in-addr.arpa):
$GENERATE 17-30 $ CNAME $.32.168.192.dhcp.
Что приведет к:
$ dig -x 192.168.32.17
...
;; ANSWER SECTION:
17.32.168.192.in-addr.arpa. 600 IN CNAME 17.32.168.192.dhcp.
17.32.168.192.dhcp. 300 IN PTR debian.company.com.
...