首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >利用DNSMasq实现本地主机名解析

利用DNSMasq实现本地主机名解析
EN

Unix & Linux用户
提问于 2013-10-06 23:23:31
回答 2查看 19.1K关注 0票数 10

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

现在我知道我不是第一个想这么做的人,所以我开始用谷歌搜索。同样在Unix & Linux上,这个问题对我帮助很大:如何使用局域网主机名使机器可访问。在这一点上,我已经尝试了所有经过验证的答案。我考虑过使用hosts文件,但这意味着我必须告诉我的室友配置他们的机器,我不希望他们这样做。我试图为我的路由器上的Pi预订一个DHCP租约( NETGEAR WNR1000v2 (又名N150)),虽然保留有效,但是主机名解析不起作用。这种情况让我很沮丧,因为我告诉我的路由器Pi的IP和它的主机名,但是它仍然没有向我的LAN上的客户端提供这个信息。

由于这两种方法不起作用,我决定在Pi上安装dnsmasq。配置起来似乎很简单,我很乐意学习一个新的工具。我安装好了,而且运行得很好(看起来)。我可以dignslookup Pi的昵称(在/etc/hosts中设置为oberonhomenet),并得到正确的结果。对于yahoo.com这样的互联网名称,我也可以这样做,并得到正确的答案,因为我在/etc/dnsmasq.conf中将谷歌的8.8.8.88.8.4.4设置为备份服务器。见此:

代码语言:javascript
复制
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

注意,SERVER127.0.0.1oberon正在查找自己的IP地址。这正是我所期望看到的。如果我执行dig oberon @localhost,输出也是相同的。由于这个输出,我认为dnsmasq运行得很好。因此,为了将其提升到更高的水平,我希望局域网上的所有客户都能够在浏览器中键入oberon,并被带到oberon的S索引页面。为此,我知道我需要配置我的路由器(如果这偏离了Unix & Linux的范围,我很抱歉)。

我有一个网具WNR1000v2,我非常熟悉。我已经配置了端口转发,这样我就可以将SSH放入Pi中,我还在其他设置中查看过。我知道在我开始这个项目之前,我从ISP那里得到了我的DNS服务器,但是现在我想主要使用那些DNS服务器,但也使用192.168.1.151作为最后一次检查。因此,我将路由器的DNS配置更改为:

因此,有了这个配置,我希望能够在我的(Windows)桌面上执行nslookup oberon,并获得192.168.1.151的结果。但这种情况不会发生。这就是发生的事情:

代码语言:javascript
复制
C:\Users\me>nslookup oberon
Server:  UnKnown
Address:  fe80::226:f2ff:fefa:bea

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

重置或dnsflushing我的Windows机器上的网络适配器不会改变任何东西。

这就是我为什么要扯掉头发的原因:

代码语言:javascript
复制
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配置的一部分,因此我希望在那里看到它)。如果我能让我的路由器告诉我的192.168.1.151机器当它进行DNS查询时使用它,我应该是好的!

因此,在我看来,问题似乎在我的路由器,但我只是不知道做什么,除了改变DNS服务器,包括192.168.1.151,就像我已经有。这里有人能帮我吗?我将尽力提供任何进一步的信息。

EN

回答 2

Unix & Linux用户

发布于 2013-10-07 14:05:55

您的问题在于您对这些DNS服务器的使用方式的误解,我不知道windows用于选择要查询哪个DNS服务器的具体细节,但我打赌它的主要>次要>第三/始终/。即使它不是而且是循环的,你仍然会在3次中的2次查询一个没有帮助的服务器。

将会发生的情况是,将查询主服务器。如果超时,这可能是一两秒钟,下一个服务器将被查询。DNS不是一个“协商一致”系统,如果其中一个远程服务器被查询,它最终会发现您的主机名权威地不存在,从它作为internet DNS服务器的角度来看。

您需要自己的LAN dns作为主DNS服务器。其他人会做合适的备份服务器,但我会考虑完全放弃。

同样值得注意的是,您的反向dns (IP到name查找)解析为"hostname.lan“,但是您的前向解析测试只有主机名。您还应该在某个地方设置hostname.lan的正向解析。虽然主机可以有许多“地址名称”正向查找,但预期IP会反向查找某个名称,而该名称又会与该IP记录具有匹配的名称。它并不总是很关键,有时只会让日志文件发牢骚,但有些事情比其他事情更敏感。

此外,不要忘记删除任何你已经安装好的主机文件,一旦你开始工作(我不知道这是否与dnsmasq相关,从未使用过它,我有一个类似但更复杂的配置,使用ISC-BIND服务器,您可以像您使用的那样配置转发到其他服务器,或者简单地使用它作为一个不转发DNS服务器来完成全名解析--这就是我设置的)。

不用说,正如你第一次推测的那样,在建立这种架构方面,你并不是孤军奋战,几乎每一个合理开发的企业局域网和许多过度开发的家庭局域网都会有这样的设置。

票数 2
EN

Unix & Linux用户

发布于 2015-10-21 19:10:34

也许有点晚了,但是在我的无线适配器上禁用ipv6就成功了。

票数 2
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/93870

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档