这是 Windows 主机和环境中的 Linux(Ubuntu 13.10)VM 客户机。执行 DNS 查询时,只有 FQDN 条目有返回,而短名称没有返回(见下文)。这是为什么?
我hostname -f
的虚拟机正在返回具有正确域名的 FQDN,并且我的虚拟机/etc/resolv.conf
已经有了该search mycompany.com
行。但是,短名称仍然不起作用。
$ dig mySvr01
; <<>> DiG 9.9.3-rpz2+rl.13214.22-P2-Ubuntu-1:9.9.3.dfsg.P2-4ubuntu1.1 <<>> mySvr01
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: SERVFAIL, id: 27616
;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 0, ADDITIONAL: 1
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 1280
;; QUESTION SECTION:
;mySvr01. IN A
;; Query time: 4 msec
;; SERVER: 127.0.1.1#53(127.0.1.1)
;; WHEN: Mon Mar 31 07:33:47 PDT 2014
;; MSG SIZE rcvd: 41
$ dig mySvr01.mycompany.com
; <<>> DiG 9.9.3-rpz2+rl.13214.22-P2-Ubuntu-1:9.9.3.dfsg.P2-4ubuntu1.1 <<>> mySvr01.mycompany.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 7162
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 0, ADDITIONAL: 1
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4000
;; QUESTION SECTION:
; mySvr01.mycompany.com. IN A
;; ANSWER SECTION:
mySvr01.mycompany.com. 3600 IN A 10.192.78.38
mySvr01.mycompany.com. 3600 IN A 10.192.78.66
;; Query time: 1 msec
;; SERVER: 127.0.1.1#53(127.0.1.1)
;; WHEN: Mon Mar 31 07:33:44 PDT 2014
;; MSG SIZE rcvd: 86
答案1
dig 命令不使用 DNS 搜索路径来搜索主机,它只在 DNS 中查找 FQDN。这是因为 dig 直接查询名称服务器,而不是使用 nsswitch 方法(该方法提供搜索路径功能)。
如您所见,非 fqdn 无法使用 dig 解析:
mtak@gen1:~$ dig svc1 +short mtak@gen1:~$ dig svc1.int.mtak.nl +short 10.100.0.11
您可以使用 host 命令检查 DNS 搜索路径是否正常工作:
mtak@gen1:~$ host svc1 svc1.int.mtak.nl has address 10.100.0.11
答案2
这是 dig 默认行为的一个特点。它会忽略 /etc/resolv.conf 中的搜索和域指令,除非您告诉它使用它们:
+[no]search 使用 [不使用] resolv.conf 中的 searchlist 或 domain 指令定义的搜索列表(如果有)。默认情况下不使用搜索列表。
您可以将“+search”添加到 $HOME/.digrc 以使其自动查找短名称。