在 Ubuntu Server 16.04 上,我使用 Bind 作为 DNS 服务器运行。总体来说,它运行得相当好。我遇到的问题是,当我仅指定网络上的系统名称时,它会尝试访问根区域(我假设),而不是先在本地查找。
#/etc/resolv.conf
# Dynamic resolv.conf(5) file for glibc resolver(3) generated by resolvconf(8)
# DO NOT EDIT THIS FILE BY HAND -- YOUR CHANGES WILL BE OVERWRITTEN
nameserver 10.1.0.1
search priv
我有一个名为“zm”的资源。当我引用它时,会发生以下情况:
这很好:
# dig zm.priv
; <<>> DiG 9.10.3-P4-Ubuntu <<>> zm.priv
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 29032
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 2
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;zm.priv. IN A
;; ANSWER SECTION:
zm.priv. 604800 IN A 10.18.0.31
;; AUTHORITY SECTION:
priv. 604800 IN NS server.priv.
;; ADDITIONAL SECTION:
server.priv. 604800 IN A 10.1.0.1
;; Query time: 0 msec
;; SERVER: ::1#53(::1)
;; WHEN: Tue May 01 18:08:17 EDT 2018
;; MSG SIZE rcvd: 89
这不好:
# dig zm
; <<>> DiG 9.10.3-P4-Ubuntu <<>> zm
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 30620
;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 1, ADDITIONAL: 1
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;zm. IN A
;; AUTHORITY SECTION:
zm. 1157 IN SOA ns1.zamnet.zm. hostmaster.nic.zm. 2018043020 21600 3600 604800 3600
;; Query time: 0 msec
;; SERVER: ::1#53(::1)
;; WHEN: Tue May 01 18:09:32 EDT 2018
;; MSG SIZE rcvd: 93
如果我只是输入资源名称而不输入本地域(“priv”),如何让 Bind 假定我的本地域?我不确定我的表述是否正确。但是,如果我输入一个“单词”作为网络资源,即使它被称为“com”或“zm”,我希望本地地址像上面的好示例中那样出现,而不是来自 ns1.zamnet.zm 的某个地址。
谨此致以问候和感谢。
答案1
那不是bind
/named
问题。那只是dig
行为方式。您要么想使用nslookup
,要么想dig +search
使用 。考虑应用alias dig="dig +search"
到您的 shell 中。