如何在不重新启动命名服务的情况下将记录添加到区域文件?

如何在不重新启动命名服务的情况下将记录添加到区域文件?

我正在使用 centos6.5 和 bind9,并且已通过以下步骤成功将记录添加到 DNS 区域:

创建密钥:

dnssec-keygen -a HMAC-MD5 -b 128 -n HOST example.com.

编辑配置文件:

// TSIG Key
key "example.com." {
 algorithm hmac-md5;
 secret "THE KEY GENERATED ABOVE";
}; 

zone "example.com" IN {
 type master;
 file "example.com.zone";
 allow-update{ key "example.com."; };
};

给予 /var/named 文件夹命名的授权:

# chown -R named:named /var/named
# find . -type d -exec chmod 770 {} \;
# find . -type f -exec chmod 660 {} \;

我已经使用此脚本添加记录:

#!/bin/bash
#Defining Variables
DNS_SERVER="localhost"
DNS_ZONE="example.com."
USER_NAME="dd2.example.com."
IP="192.168.1.7"
TTL="60"
RECORD=" $USER_NAME $TTL A $IP"
echo "
server $DNS_SERVER
zone $DNS_ZONE
debug
update add $RECORD
show
send" | nsupdate -k Kexample.com.+157+55566.key

它没有返回任何错误。

我使用 dig 命令测试是否添加了此记录:

#dig +short dd2.example.com.
192.168.1.7

但问题是添加的记录没有出现在区域文件'example.com.zone'中:

$ORIGIN .
$TTL 86400  ; 1 day
example.com     IN SOA  dns.exaple.com. hostmaster.example.com. (
        2001062504 ; serial
        21600      ; refresh (6 hours)
        3600       ; retry (1 hour)
        604800     ; expire (1 week)
        86400      ; minimum (1 day)
        )
    NS  dns.example.com.
    A   192.168.1.2
    MX  10 mail.example.com.
$ORIGIN example.com.
$TTL 86400  ; 1 day
ex1         A   192.168.1.2
ex2         A   192.168.1.2
ex3         A   192.168.1.3
ex4         A   192.168.1.4

但是当我重新启动命名服务时:service named restart区域文件中出现了该记录:

$ORIGIN .
$TTL 86400  ; 1 day
example.com     IN SOA  dns.example.com. hostmaster.example.com. (
        2001062504 ; serial
        21600      ; refresh (6 hours)
        3600       ; retry (1 hour)
        604800     ; expire (1 week)
        86400      ; minimum (1 day)
        )
    NS  dns.example.com.
    A   192.168.1.2
    MX  10 mail.example.com.
 $ORIGIN example.com.
 $TTL 60 ; 1 minute
 dd2         A   192.168.1.7
 $TTL 86400  ; 1 day
 ex1         A   192.168.1.2
 ex2         A   192.168.1.2
 ex3         A   192.168.1.3
 ex4         A   192.168.1.4

我的问题是:

是否有一种无需重新启动命名服务即可将记录添加到区域文件的方法?

注意:rndc reload MYZONE 或 rndc reload 不起作用

这是我使用重新加载时发生的情况

[root@dd Shells]# rndc reload example.com. rndc: 'reload' failed: dynamic zone

答案1

我找到了答案:

我的问题是 BIND 无法rndc reload zone处理动态区域,因此 BIND 不允许我们重新加载动态区域。所以我们必须告诉 bind 暂时停止允许动态更新。这可以通过冻结选项来处理。

rndc freeze example.com

然后重新加载

rndc reload example.com  

然后再次允许动态更新:

rndc thaw example.com

答案2

你试过了/etc/init.d/named reload吗 ?

另外,为什么rndc reload <namezone>不起作用?你收到错误了吗?尝试将“序列号”更改为当前日期和版本,然后重新运行rndc reload

您也可以rndc flush在重新加载区域之前尝试一下。

希望这可以帮助!

相关内容