使用DNSMasq进行本地主机名解析


9

我正在为我和我的室友建立家庭内部网。我的想法是,我们将能够将过去的水电费之类的东西存储在一个比厨房的抽屉更方便的地方。无论如何,我在Raspberry Pi,LAN上运行Apache 2,并且如果我使用它的IP地址,我可以访问Pi上提供的页面。由于我正在做这个项目,目的是更多地了解网络,以便为我的公寓提供服务,所以我认为如果我的网络可以为我的LAN提供主机名解析,那将是很酷的。因此,与其将浏览器指向192.168.1.151Pi的IP地址,不如将其指向oberon(其主机名)并查看Pi所服务的网页。

现在我知道我不是第一个想要这样做的人,所以我从谷歌搜索开始。这个问题(在Unix和Linux上也是如此)极大地帮助了我:如何使用主机名从LAN访问计算机。至此,我已经尝试了经过验证的答案中的所有内容。我考虑过要使用该hosts文件,但这意味着我必须告诉我的室友来配置他们的机器,而我不想让他们这样做。我试图在我的路由器(NETGEAR WNR1000v2(又名N150))上为Pi保留DHCP租约,并且在保留有效的同时,主机名解析无效。这种挫败的我,因为我告诉我的路由器Pi的IP 主机名,但它仍然不提供此信息到我的LAN上的客户端。

由于这两种方法不起作用,我决定dnsmasq在Pi 上安装。配置似乎很简单,我很乐于学习新工具。我安装并使其运行正常(似乎)。我可以dignslookup郫县的昵称(这是我在设置/etc/hostsoberonhomenet),并得到正确的结果。我可以对Internet之类的名称执行相同的操作,yahoo.com并获得正确的答案,因为我在中设置了Google的8.8.8.88.8.4.4作为备份服务器/etc/dnsmasq.conf。看到这个:

me@oberon~$ dig oberon

; <<>> DiG 9.8.4-rpz2+rl005.12-P1 <<>> oberon
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 10787
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0

;; QUESTION SECTION:
;oberon.                                IN      A

;; ANSWER SECTION:
oberon.                 0       IN      A       192.168.1.151

;; Query time: 10 msec
;; SERVER: 127.0.0.1#53(127.0.0.1)
;; WHEN: Sun Oct  6 18:59:18 2013
;; MSG SIZE  rcvd: 40

请注意,SERVERis 127.0.0.1oberon正在查找自己的IP地址。这是我期望看到的。如果我这样做,输出是相同的dig oberon @localhost。由于此输出,我认为这dnsmasq很好。因此,将其提升到一个新的水平,我希望LAN上的所有客户端都能够输入oberon他们的浏览器并进入oberon的索引页面。为此,我知道我需要配置我的路由器(如果严格偏离Unix和Linux领域,我深表歉意)。

我有一个相当熟悉的Netgear WNR1000v2。我已经配置了端口转发,以便可以通过SSH进入Pi,并且在其他设置中也有介绍。我知道在开始这个项目之前,我是从ISP获取DNS服务器的,但是现在我想主要使用这些DNS服务器,但也要192.168.1.151用作最后检查。因此,我将路由器的DNS配置更改为以下内容:

我的路由器的新DNS配置。 当我说前两个条目是由我的ISP提供时,请相信我

因此,使用此配置,我希望能够nslookup oberon在(Windows)桌面上进行操作并得到的结果192.168.1.151。但这不会发生。这是发生了什么:

C:\Users\me>nslookup oberon
Server:  UnKnown
Address:  fe80::226:f2ff:fefa:bea

*** UnKnown can't find oberon: Non-existent domain

重置或dnsflushingWindows计算机上的网络适配器均未更改。

现在,这就是为什么我有点在这里扯头发:

C:\Users\me>nslookup oberon 192.168.1.151
Server:  oberon.lan
Address:  192.168.1.151

Name:    oberon
Address:  192.168.1.151

显然,dnsmasq工作正常。如果我告诉Windows框用来192.168.1.151解析名称oberon,那么一切都很好(该.lan域是的配置的一部分dnsmasq,因此我希望在那里可以看到它)。如果我可以让路由器告诉我的Windows计算机192.168.1.151在进行DNS查询时要使用它,那应该很好!

因此,在我看来,问题出在我的路由器上,但​​是我只是想出了解决办法,除了将DNS服务器更改为192.168.1.151像我已经拥有的那样。有人能帮我一下吗?我将尝试提供所需的更多信息。


尝试将pi设置为第一台DNS服务器,然后可以使用吗?
terdon

1
路由器是执行此操作的正确位置。如果由于某种原因您无法使路由器成为Pi的名称,则可以在Pi上运行dnsmasq并让路由器将Pi用作DNS服务器。看来您的问题是正确配置了路由器。
吉尔(Gilles)'所以

在更新路由器上的DNS设置后,是否要在客户端上更新DHCP租约?DNS配置以DHCP租约发送,因此必须获得新的租约才能获取新设置。作为替代解决方案,您可能还会研究mDNS / zeroconf / avahi。
Patrick

Answers:


2

您的问题在于您对这些DNS服务器的使用方式的误解,我不知道Windows用于选择要查询的DNS服务器的方法的确切细节,但我押注它的主要>辅助>第三/总是/。即使它不是循环运行的,您仍然要查询3次中无用的服务器2次。

将会发生的是将查询主服务器。如果超时(可能是一两秒),将查询下一个服务器。DNS不是一个“共识”系统,如果要查询一台远程服务器,则从其作为Internet DNS服务器的角度来看,它将最终发现您的主机名权威性地不存在的结果。

您需要自己的LAN dns作为主要DNS服务器。其他服务器将提供合适的备份服务器,但我会考虑将其完全删除。

还要注意,您的反向dns(IP到名称查找)解析为“ hostname.lan”,但您的前向解析测试仅使用主机名。您还应该在某个位置设置hostname.lan的正向解析。尽管可以有许多对主机的“从名称到地址”的正向查找,但是可以预期IP会对名称进行反向查找,从而对IP记录具有匹配的名称。这并不总是很关键,只是有时会使日志文件发牢骚,但是有些事情对此比其他事情更敏感。

另外,一旦完成所有操作,别忘了删除所有放置在其上的主机文件树突(我不知道这是否与dnsmasq有关,从未使用过,我使用ISC-BIND名称进行了相似但更复杂的配置服务器,您可以配置转发到正在使用的其他服务器,或者简单地将其用作非转发DNS服务器,该服务器自行进行全名解析(这是我设置的)。

毋庸置疑,正如您最初推测的那样,您进行设置的过程非常遥远,几乎每个合理开发的公司LAN和许多过度开发的家庭LAN都将具备这种设置。


1
感谢您的帮助!我了解您在说DNS如何不是共识系统,因此我将Pi设置为路由器中的主DNS服务器。然后,我在Windows计算机上续订了DHCP租约。但是,nslookup oberon仍然无法正常工作。我在原始帖子的文字中没有提到的一件事是,当nslookup发生故障时,它表示使用的服务器是fe80IPv6地址-我知道这是保留的本地链接地址。但是我不知道这对DNS意味着什么。我的Windows框是否正在自我查询?dnsflush不会改变这种行为。
c.anna

不管怎样,LAN主机名解析在我的iOS设备上也不起作用。我还没有提到它们,因为我对Windows具有更多的内省功能,但是如果我的问题确实确实是由Windows引起的,则我不希望这些设备也有同样的问题。
c.anna

另外,为了减轻您对.lan域的担心,我配置dnsmasq为自动将简单的主机名扩展为add .lan。跑步nslookup oberon.lan 192.168.1.151返回预期结果Name: oberon.lan Address: 192.168.1.151
c.anna 2013年

我想知道工作中是否存在“ windowsism”之类的东西,直接在顶级域(“ oberon。”)下命名您的主机有点奇怪,oberon.lan更有意义。要注意的一件事是,域名后缀和“搜索域”通常会附加到名称中以进行解析,例如,如果lan在搜索域中,则可以解析“ oberon”并找到为“ oberon.lan”。但是上面的查询似乎并没有显示这种情况,挖掘特别是在主机名上有终结点,但是在测试时要非常注意!
iain

修复主DNS之后,您需要重新设置dhcp窗口(重置适配器应该这样做),然后检查ipconfig /all是否显示了正在使用的正确dns服务器,如果正确,则可能需要刷新dns。但是我想不出什么,它应该可以工作。
sourcejedi 2015年

1

也许有点晚了,但是在我的无线适配器上禁用ipv6可以解决问题。


支持:总是一个好主意。除非系统裸露在外并且需要它。到目前为止(2017年9月),几乎没有满足该类别的家庭用户设备。
SDsolar
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.