首先,一个与这个问题无关的与docker有关的故事:我按照Skydock - Docker 的自动服务发现,一切进展顺利。现在我有一个 DNS 服务器正在监听,其中包含具有 IP 的172.17.42.1
主机的条目:redis1.redis.dev.docker
172.17.0.4
$ dig @172.17.42.1 redis1.redis.dev.docker
; <<>> DiG 9.9.4-P2-RedHat-9.9.4-12.P2.fc20 <<>> @172.17.42.1 redis1.redis.dev.docker
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 51671
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0
;; QUESTION SECTION:
;redis1.redis.dev.docker. IN A
;; ANSWER SECTION:
redis1.redis.dev.docker. 29 IN A 172.17.0.4
;; Query time: 0 msec
;; SERVER: 172.17.42.1#53(172.17.42.1)
;; WHEN: Wed Nov 05 21:04:01 EST 2014
;; MSG SIZE rcvd: 80
那么 DNS 服务可以正常工作了,对吧?好的,我将 DNS 服务器添加到我的网络接口脚本中,并应用了更改:
$ cat /etc/resolv.conf
# Generated by NetworkManager
search fghijk.local
nameserver 192.168.0.1
nameserver 172.17.42.1
但是,当我dig
没有指定 DNS 服务器 IP 地址(如上所示)时,似乎这192.168.0.1
是唯一被咨询的 DNS 服务器。
现在,也许我做错了什么,但我真正的问题是:
/etc/resolv.conf
何时应查询我的服务器中显示的辅助 DNS 服务器?仅当主服务器瘫痪时才会发生这种情况吗? 我的猜测是,如果主名称服务器无法回答查询,则会咨询辅助 DNS 服务器。 这个猜测难道完全是错误的吗? 这种行为会因操作系统而改变吗?
答案1
/etc/resolv.conf 中的辅助服务器仅在主服务器超时并且根本没有提供响应时才会使用 - 您的猜测非常正确。
对于我所知的所有 Linux 版本(包括嵌入式版本)而言,这似乎都是正确的。我想对于其他操作系统也是如此。