将要求信息和更新请求发送到DNS服务器.等同于输入一个空行.
2.使用实例
修改named.conf中test.com zone添加
allow-update { any; };
添加记录
./bind/bin/nsupdate
> server 192.168.36.54
> update add nsupdate.test.com 6000 IN A 192.168.0.2
> send
> quit
测试
dig @192.168.36.54 nsupdate.test.com
; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.10.rc1.el6 <<>> @192.168.36.54 nsupdate.test.com
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 39140
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 1
;; QUESTION SECTION:
;nsupdate.test.com. IN A
;; ANSWER SECTION:
nsupdate.test.com. 6000 IN A 192.168.0.2
;; AUTHORITY SECTION:
test.com. 86400 IN NS dns.test.com.
;; ADDITIONAL SECTION:
dns.test.com. 86400 IN A 192.168.36.189
;; Query time: 1 msec
;; SERVER: 192.168.36.54#53(192.168.36.54)
;; WHEN: Sat Apr 18 22:21:43 2015
;; MSG SIZE rcvd: 85
添加成功。
3.通过TSIG key实现nsupdate功能
1、使用dnssec-keygen -a HMAC-MD5 -b 128 -n USER testkey命令来生成密钥。
dnssec-keygen:用来生成更新密钥。
-a HMAC-MD5:采用HMAC-MD5加密算法。
-b 128:生成的密钥长度为128位。
-n USER testkey:密钥的用户名为testkey。
2、密钥生成后,会在当前目录下自动生成两个密钥文件***.+157+xxx.key和***.+157+xxx.private。
3、查看两个密钥文件的内容:
cat ***.+157+xxx.key
cat ***.+157+xxx.private
4、通过同样的方法生成test2key。
5、添加密钥信息到DNS主配置文件中
6、将test.com区域中的allow-update { none; }中的“none”改成“key testkey”;
将“none”改成“key testkey”的意思是指明采用“key testkey”作为密钥的用户可以动态更新“test.com”区域。
view"view-test"in{
match-clients{keytestkey;acl1;};//keytestkey;以及acl1;zone"test.com"{
type master;
file "test.zone";
allow-update{
keytestkey;
};
};
};
实现通过正确的key和acl对两个view进行nsupdate。但bind的acl匹配原则是:"由上而下,匹配即退出",并且match-clients{}中的参数是"or"的关系。当执行nsupdate命令时,执行端(一般都是主dns或管理机)所用的ip地址不应该包含在acl1或者acl2中(最后一个view的match-clients{aclx}可包含也可不包含),否则按照以上原则,执行端主机只能访问包含其ip的view了,其它view的访问都将被拒绝。