Как ограничить доменное имя для обратных обновлений DNS с помощью bind и nsupdate?
Я настроил Bind, чтобы разрешить хостам обновлять только свои собственные записи DNS, но у меня возникают проблемы с обратной частью DNS. Моя конфигурация выглядит следующим образом:
named.conf
options {
listen-on port 53 { 127.0.0.1; 10.9.10.10; };
directory "/var/named";
dump-file "/var/named/data/cache_dump.db";
statistics-file "/var/named/data/named_stats.txt";
memstatistics-file "/var/named/data/named_mem_stats.txt";
allow-query { localhost; 10.0.0.0/8; };
recursion yes;
allow-recursion { 10.0.0.0/8; };
dnssec-enable yes;
dnssec-validation no;
dnssec-lookaside auto;
/* Path to ISC DLV key */
bindkeys-file "/etc/named.iscdlv.key";
managed-keys-directory "/var/named/dynamic";
};
logging {
channel default_debug {
file "data/named.run";
severity dynamic;
};
};
zone "." IN {
type hint;
file "named.ca";
};
include "mydomain.com.keys";
zone "mydomain.com" IN {
type master;
file "dynamic/forward.mydomain.com.zone";
update-policy {
grant *.mydomain.com self *.mydomain.com A TXT;
};
};
zone "9.10.in-addr.arpa" IN {
type master;
file "dynamic/reverse.mydomain.com.zone";
update-policy {
grant * tcp-self * PTR;
};
};
include "/etc/named.rfc1912.zones";
include "/etc/named.root.key";
mydomain.com.keys
key myserver1.mydomain.com. {
algorithm HMAC-SHA512;
secret "blahblahblah";
};
key myserver2.mydomain.com. {
algorithm HMAC-SHA512;
secret "blahblahblah";
};
Что работает правильно
mydomain.com
Конфигурация зоны правильно запрещает серверам обновлять записи DNS, которые им не принадлежат:
[root@myserver1 ~]# nsupdate -v -k Kmyserver1.mydomain.com.+165+55228.key
> server dns1.mydomain.com
> zone mydomain.com
> update add myserver2.mydomain.com 86400 A 10.9.10.50
> show
Outgoing update query:
;; ->>HEADER<<- opcode: UPDATE, status: NOERROR, id: 0
;; flags:; ZONE: 0, PREREQ: 0, UPDATE: 0, ADDITIONAL: 0
;; ZONE SECTION:
;mydomain.com. IN SOA
;; UPDATE SECTION:
myserver2.mydomain.com. 86400 IN A 10.9.10.50
> send
update failed: REFUSED
Это обеспечение достигается с помощью ключа, указанного в nsupdate
команда. Nsupdate вытаскивает секрет из Kmyserver1.mydomain.com.+165+55228.key
файл и отправляет его в Bind. Bind находит соответствующий секрет в mydomain.com.keys
и проверяет имя ключа по имени домена, который вы пытаетесь обновить.
Что не работает правильно
Но настройки для обратной зоны (9.10.in-addr.arpa
) не ограничивает обновления на основе имени ключа, которое использовалось для обратного обновления DNS.
[root@myserver1 ~]# nsupdate -v -k Kmyserver1.mydomain.com.+165+55228.key
> server dns1.mydomain.com
> zone 9.10.in-addr.arpa
> update add 50.10.9.10.in-addr.arpa 86400 IN PTR myserver2.mydomain.com
> show
Outgoing update query:
;; ->>HEADER<<- opcode: UPDATE, status: NOERROR, id: 0
;; flags:; ZONE: 0, PREREQ: 0, UPDATE: 0, ADDITIONAL: 0
;; ZONE SECTION:
;9.10.in-addr.arpa. IN SOA
;; UPDATE SECTION:
50.10.9.10.in-addr.arpa. 86400 IN PTR myserver2.mydomain.com.
> send
> ^C
[root@myserver1 ~]# nslookup 10.9.10.50
Server: 10.9.10.10
Address: 10.9.10.10#53
50.10.9.10.in-addr.arpa name = myserver1.mydomain.com.
50.10.9.10.in-addr.arpa name = myserver2.mydomain.com.
Кроме того, я попытался настроить политику обновления обратной зоны, чтобы разрешать обновления только с определенных адресов (а не *
), но это никак не отразилось на проблеме.
Что я пытаюсь сделать
Я хотел бы настроить политику обновления для 9.10.in-addr.arpa
зона, так что в приведенном выше примере будет отказано. Я только хочу, чтобы серверы могли обновлять обратный DNS для своих собственных IP-адресов и доменных имен. Я просматривал различные сайты и, похоже, не могу найти никакой информации о том, как или, если это вообще возможно, настроить политику обновления для достижения этой цели.
Версия Bind, которую я использую, BIND 9.8.2rc1-RedHat-9.8.2-0.30.rc1.el6