为什么即使有主机文件条目,我的名称解析也能影响DNS?


15

我正在运行Ubuntu 10.04.2 LTS Desktop。作为一名Web开发人员,我自然会在/etc/hosts文件中创建一个“ me.com” 。不幸的是,在首先检查我的本地主机条目之前,我的名称解析是通过DNS进行的,我不知道为什么。

最终结果是,如果我的/etc/resolv.conf nameserver 127.0.0.1首先包含在其中,那么我将在不到一秒钟的时间内从me.com(本地)在Web浏览器中收到响应。但是,如果我没有该条目,那么如果我的ISP有点慢,我的响应有时会花费5秒钟之多。

这个问题非常麻烦,以至于我实际上不得不在这里提出一个问题(有人解决了),该问题是关于如何自动将该条目插入的/etc/resolv.conf。但是这里的一位用户(@shellholic)强烈建议(并对此进行来回评论)我应该提出这个问题。

您知道为什么我的工作站的名称解析必须先命中DNS服务器才能命中/etc/hosts文件条目吗?现在,我正在使用resolv.conf技巧


1
您可以尝试寻找/etc/nsswitch.conf。我系统上的条目不太明显,但是您可以仅files通过选择测试测试,看看是否有所作为。
belacqua 2011年

是的,你可以给我们的输出cat /etc/nsswitch.confcat /etc/host.conf?另外:如何测试(通过ping,浏览器,数据包嗅探等)?
安排

要完成@arrange的版本,您可以附加的结果吗time getent hosts me.com; hostname --fqdn; grep 'me.com' /etc/hosts; grep hosts /etc/nsswitch.conf; netstat -uln | grep ':53'; cat /etc/host.conf; wc -l /etc/hosts?不要犹豫,混淆理性。
shellholic 2011年

@shellholic ^ rationality ^理性吗?呵呵。
belacqua 2011年

@jgbelacqua:的确是
疯癫的2011年

Answers:


15

该文件/etc/nsswitch.conf将让您重新配置名称解析的顺序。默认情况下,主机文件是第一个,然后是配置的DNS。可能会有更多选择。

该文件/etc/hosts仅列出IP地址和主机名(如果需要,可以使用一个IP的多个名称)

该文件/etc/resolv.conf将列出默认的搜索域,还将依次列出要使用的名称服务器。


4
还请记住,一旦名称由Linux机器上的应用程序或服务解析,则该名称将在缓存中保留一个称为TTL(生存时间)的持续时间。因此,如果您切换解析顺序,则最好重新启动系统或清除所有缓存。
jfmessier 2011年

您如何清除“缓存”?
埃里克·约翰逊

我不确定,但是使用ifup和ifdown命令重新启动网络连接可以做到这一点。当然,重新启动应该清除缓存,但是我们正在使用Linux,对吗?
jfmessier 2012年

nscd可以缓存名称解析查询,但不考虑ttl(因此默认情况下禁用主机缓存)。systemd-resolved也将缓存条目。如果没有配置,Linux主机将不缓存DNS响应。(浏览器可能会在应用程序层进行操作)
Gert van den Berg,
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.