Zac*_*iel 8 linux hosts-file dnsmasq
我已经完成了 dnsmasq 的默认安装。当我运行 dig 时,它似乎在使用 dnsmasq (127.0.0.1),但结果不包括 /etc/hosts 中包含的主机名。
/etc/hosts:
192.168.1.13 sun
Run Code Online (Sandbox Code Playgroud)
在终端中:
$ dig sun
; <<>> DiG 9.6-ESV-R4 <<>> sun
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NXDOMAIN, id: 32131
;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 1, ADDITIONAL: 0
;; QUESTION SECTION:
;sun. IN A
;; AUTHORITY SECTION:
. 9699 IN SOA a.root-servers.net. nstld.verisign-grs.com. 2011041100 1800 900 604800 86400
;; Query time: 1 msec
;; SERVER: 127.0.0.1#53(127.0.0.1)
;; WHEN: Tue Apr 12 05:20:56 2011
;; MSG SIZE rcvd: 96
Run Code Online (Sandbox Code Playgroud)
在终端中:
$ dig @localhost sun
; <<>> DiG 9.6-ESV-R4 <<>> @localhost sun
; (2 servers found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NXDOMAIN, id: 43763
;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 1, ADDITIONAL: 0
;; QUESTION SECTION:
;sun. IN A
;; AUTHORITY SECTION:
. 10800 IN SOA a.root-servers.net. nstld.verisign-grs.com. 2011041800 1800 900 604800 86400
;; Query time: 40 msec
;; SERVER: 127.0.0.1#53(127.0.0.1)
;; WHEN: Mon Apr 18 17:15:23 2011
;; MSG SIZE rcvd: 96
Run Code Online (Sandbox Code Playgroud)
我试过使用本地和扩展主机/域,但似乎也无法让其中任何一个正常工作。我的主要目标是能够使用一台机器来托管 LAN DNS,我不在乎名称最终是 sun 还是 sun.domain,无论是否有效。
这是我的 /etc/resolv.conf
nameserver 127.0.0.1
domain members.linode.com
search members.linode.com
nameserver 72.14.188.5
nameserver 72.14.179.5
Run Code Online (Sandbox Code Playgroud)
和 /etc/dnsmasq.conf
domain-needed
bogus-priv
Run Code Online (Sandbox Code Playgroud)
如果有所不同,这一切都在 ubuntu 10.04 机器上。我一直在关注本指南:http : //www.mythicalbeast.co.uk/linux/dnsmasq_howto.html(虽然不是逐字逐句,因为它也设置了 DHCP)
来自dnsmaq FAQ 的这个片段似乎很相关:
问:Internet 上的名称工作正常,但从 /etc/hosts 或 DHCP 查找本地名称似乎不起作用。
答:解析器代码有时在给定的名称中没有任何点时会做一些奇怪的事情。Win2k 和 WinXP 可能根本不使用 DNS,而只是尝试使用 WINS 查找名称。在 unix 上查看“man resolv.conf”中的“options ndots:”以获取有关此主题的详细信息。使用“nslookup”或“dig”测试查找将起作用,但是尝试运行“ping”将导致查找失败,在主机名末尾附加一个点将解决问题。(即“ping myhost”失败,但“ping myhost.”有效。解决方案是确保您的所有主机都设置了域(resolv.conf中的“域”,或在您的DHCP服务器中设置域,见下文fr Windows XP 和 Mac OS X). 任何域都可以,但“localnet”是传统的。现在,当您解析“myhost”时,解析器将尝试查找“myhost.localnet”,因此您需要让 dnsmasq 回复该名称。这样做的方法是在 /etc/hosts 上的每个名称中包含域和/或使用 --expand-hosts 和 --domain 选项。
因此,我建议您/etc/resolv.conf在启动 dnsmasq 时发布您的, 以及您提供给 dnsmasq 的参数。
我知道这是 2011 年的,但由于它仍然没有被接受的答案:
今天,我遇到了类似的问题。Curl 努力从带有相应标头的 haproxy lxc 获得预期响应,但不知何故,我的本地 dnsmasq 没有提供container.test(通过 nslookup 确认)的解决方案。
谷歌给我找到了 Hugo Heden 的这篇文章,他说这可能是/etc/hosts格式问题。
为我解决问题的是:
no-hosts中/etc/dnsmasq.conf123.123.123.12 container.test到一个新的文件,如/etc/dnsmasq.hostsaddn-hosts=/etc/dnsmasq.hosts到dnsmasq 指向新文件/etc/dnsmasq.conf你的 /etc/resolv.conf 是什么样的?查找域或搜索元素。
为 dnsmasq 设置一个 .local 域,然后将其添加到您的 resolv.conf 中,它应该可以工作。
尝试挖掘 sun.local @localhost。