Назад | Перейти на главную страницу

Как указать ISC DHCP правильную зону для обновления DDNS обратной зоны?

У меня работает 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.
...