使用nsupdate来更新dns记录比较方便,与程序整合方便,不需要编写复杂的程序来修改zone配置文件。
nsupdate的操作都是通过nsupdate命令完成的,该命令既可以以交互方式输入命令操作(标准输入stdin),也可以从文件读入。
安全控制
使用nsupdate之前,需要先在named.conf中把相关domain的允许更新打开,方法是:
或
这两种写法的区别在于采用了不一样的安全检查方法:第一种只接受来自特定ip的更新请求;第二种只接受提供了有效key的更新请求。
如果要使用基于key的安全验证,则需要先生成和配置key。生成key的方法是:
以上命令,会在当前目录下产生一对key,一个公钥,一个私钥。公钥用来配置到named.conf中,格式如下
这样设置后,如果没有正确的公钥,nsupdate的更新请求会被拒绝。
nsupdate命令的语句语法
nsupdate提供的语句比较简洁实用,主要有用的是:
server {servername} [port]指定named服务器地址和端口。默认端口为53。语法如
key {name} {secret} 指定用于安全验证的key,语法如
zone {zonename} 指定要更新的zone。这个语句并非必不可少,如果不提供,nsupdate会自动判断需要更新的zone。
update delete {domain-name} 删除域名。下面是删除正解和反解的示例
update add {domain-name} {ttl} [class] {type} {data} 添加域名记录,下面是添加A、CNAME、PTR记录的示例
send 将语句发送到服务器。需要注意,如果你写了多条语句,这些语句涉及到更新不同的域,最好分开send,否则会遇到update RR is outside zone (NOTZONE)错误。没有验证过使用zone语句来明确会不会解决问题。
quit 退出nsupdate
综合示例
nsupdate的命令行参数
-k 指定key文件,如果用该参数指定了公钥,则不需要再使用key语句。
-v 要求nsupdate使用tcp连接(默认情况下,当语句小的时候使用udp,当语句长的时候使用tcp),注意防火墙设置。
filename 从该文件中读取更新语句。
如
1
|
nsupdate
-
k
/
var
/
named
/
key
/
Kexample
.
com
.
+
157
+
46988.private
update
.
txt
|