我正在使用 centos6.5 和 bind9,并且通过执行以下步骤设法将记录添加到 DNS 区域:
创建密钥:
dnssec-keygen -a HMAC-MD5 -b 128 -n HOST example.com.
Run Code Online (Sandbox Code Playgroud)
编辑配置 文件:
// 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."; };
};
Run Code Online (Sandbox Code Playgroud)
将命名授权授予 /var/named 文件夹:
# chown -R named:named /var/named
# find . -type d -exec chmod 770 {} \;
# find . -type f -exec chmod 660 {} \;
Run Code Online (Sandbox Code Playgroud)
我使用此脚本添加记录:
#!/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
Run Code Online (Sandbox Code Playgroud)
它没有返回任何错误。
我测试是否使用 dig 命令添加此记录:
#dig +short dd2.example.com.
192.168.1.7
Run Code Online (Sandbox Code Playgroud)
但是添加记录的问题没有出现在区域文件“example.com.zone”中。
即使我使用 reload:rndc reload MYZONE
或者rndc reload
它返回这样的错误消息:
[root@dd Shells]# rndc reload example.com.
rndc: 'reload' failed: dynamic zone
Run Code Online (Sandbox Code Playgroud)
但是当我重新启动命名服务时:service named restart
记录出现在区域文件中。
我的问题是:
是否可以在不重新启动命名服务的情况下将记录添加到区域文件中?
我找到了答案:
我的问题是 BIND 不能rndc reload zone
处理动态区域,因此 BIND 不允许我们重新加载动态区域。所以我们必须告诉 bind 暂时停止允许动态更新。这是通过冻结选项处理的。
rndc freeze example.com
Run Code Online (Sandbox Code Playgroud)
然后重新加载
rndc reload example.com
Run Code Online (Sandbox Code Playgroud)
然后再次允许动态更新:
rndc thaw example.com
Run Code Online (Sandbox Code Playgroud)