BIND9 DNS配置详解

发布时间:2020-01-03编辑:脚本学堂
非常值得推荐给大家的一篇关于bind dns配置的文章,各方面讲解清晰透彻,正在学习bind dns配置的朋友,不可错过。

有时候 nslookup 会停在某处一动也不动﹐其实它不是当掉了﹐而是在查询没结果之后等 time out 而已。您可以按 Ctrl + C 终止查询﹐再打 exit 跳出来。不过﹐如果您在按了 Ctrl + C 之后接着再输入一个无结果的查询﹐那就好可能将 nslookup 当掉。这样您可能要登录进另外一个 terminal ﹐然后用 kill 将 PID 杀掉。同上﹐新版的 nslookup 没有这个困绕﹐但如果按 Ctrl + C 的话﹐则会直接跳离 nslookup 程序。

然而﹐nslookup 似乎在以后的版本中不再维护了﹐取而代之的﹐就是 dig 命令﹐所以﹐当您在 Redhat 7.1 上输入 nslookup﹐您会看到如下这样的信息﹕
Note: nslookup is deprecated and may be removed from future releases.
Consider using the `dig' or `host' programs instead. Run nslookup with
the `-sil[ent]' option to prevent this message from appearing.
这段文字不用解释了吧﹖真的不知道说什么就查字典吧~~ 这里﹐我们不妨学习一下如何用 dig 来查询和测试 DNS 服务。

基本上﹐dig 命令的语法如下﹕
dig [@server] domain [] [] [+]
[-] [%comment]

看起来蛮复杂的﹐恐怕要 man dig 才知道怎么使用。不过﹐我们平时只用它来查询 dns 数据的话﹐要使用到的选项也不会太多啦﹐如果您会得在 nslookup 中设定 type=XXX 的话﹐那您也可以用 dig 来查询不同的记录类别数据。例如﹕
# dig siyongc.domain mx
; <<>> DiG 9.1.0 <<>> siyongc.domain mx
;; global options: printcmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 8198
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 2, ADDITIONAL: 2

;; QUESTION SECTION:
;siyongc.domain. IN MX

;; ANSWER SECTION:
siyongc.domain. 86400 IN MX 20 lp64.dmz.domain.
siyongc.domain. 86400 IN MX 10 rh71.siyongc.domain.

;; AUTHORITY SECTION:
siyongc.domain. 86400 IN NS lp64.dmz.domain.
siyongc.domain. 86400 IN NS rh71.siyongc.domain.

;; ADDITIONAL SECTION:
rh71.siyongc.domain. 86400 IN A 192.168.100.23
lp64.dmz.domain. 86400 IN A 10.0.1.130

;; Query time: 8 msec
;; SERVER: 192.168.100.23#53(192.168.100.23)
;; WHEN: Fri Nov 16 21:13:18 2001
;; MSG SIZE rcvd: 138

上面是的命令是使用预设的 name server 来查询 siyongc.domain 的 mx 记录。当然﹐您也可以用 @ 来指定用某一台 name server 来查询其它的信息。例如﹐我要用 hinet 的 dns 来查询负责 com.tw 的 NS 有哪些﹕
# dig @168.95.1.1 com.tw ns
; <<>> DiG 9.1.0 <<>> @168.95.1.1 com.tw ns
;; global options: printcmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 33339
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 3, AUTHORITY: 0, ADDITIONAL: 4
;; QUESTION SECTION:
;com.tw. IN NS
;; ANSWER SECTION:
com.tw. 518400 IN NS b.twnic.net.tw.
com.tw. 518400 IN NS c.twnic.net.tw.
com.tw. 518400 IN NS a.twnic.net.tw.

;; ADDITIONAL SECTION:
b.twnic.net.tw. 159497 IN A 192.72.81.200
c.twnic.net.tw. 159497 IN A 168.95.192.10
a.twnic.net.tw. 159497 IN A 163.28.1.2
a.twnic.net.tw. 159497 IN A 140.111.1.2

;; Query time: 167 msec
;; SERVER: 168.95.1.1#53(168.95.1.1)
;; WHEN: Fri Nov 16 21:17:46 2001
;; MSG SIZE rcvd: 146
除了用 nslookup 和 dig 之外﹐如果您只想简单的查询 dns 信息的话﹐那您可以用 host 命令。例如﹕
# host -t any siyongc.domain 0.0.0.0
Using domain server:
Name: 0.0.0.0
Address: 0.0.0.0#53
aliases:
siyongc.domain. SOA rh71.siyongc.domain. root.rh71.siyongc.domain. 2001111601 28
800 14400 3600000 86400
siyongc.domain. name server lp64.dmz.domain.
siyongc.domain. name server rh71.siyongc.domain.
siyongc.domain. mail is handled by 10 rh71.siyongc.domain.
siyongc.domain. mail is handled by 20 lp64.dmz.domain.
siyongc.domain. has address 192.168.100.23
上面的命令就是用本机 name server 来查询 siyongc.domain 的 any 信息。至于 host 命令的格式如下﹕
host [-aCdlnrTwv] [-c class] [-N ndots] [-R number] [-t type] [-W wait]
name [server]

老话啦﹐看 man host 以了解那些参数和选项的用法吧。

您可以发现﹕透过 nslookup ﹑ dig ﹑与 host 命令﹐事实上可以查询到许多 dns 上面的设定信息。所以﹐如果您的 DNS 是对外提供服务的话﹐请尽量尽量控制 DNS 信息量﹐如果您觉得没必要对外提供的﹐那就拿掉它。无论如何﹐关于内部网络的 DNS 信息﹐是绝对不能对外散布的。如果查询的结果未如您所预期的﹐您就要进行 debug 工作了。