在 /etc/resolv.conf 中,“搜索​​”配置选项究竟是做什么的?

Mik*_*ike 93 linux dns

如果我将选项设置为服务器本身的域名,是否意味着在查询外部互联网之前首先使用服务器本身来查找域名?即/etc/hosts会被查询?

例如:

search  example.com
Run Code Online (Sandbox Code Playgroud)

Law*_*ceC 89

man resolv.conf

搜索列表通常是根据本地域名确定的;默认情况下,它只包含本地域名。这可以通过在搜索关键字后面列出所需的域搜索路径来更改,并使用空格或制表符分隔名称。将尝试使用搜索路径的每个组件依次尝试包含少于 ndots 个点(默认为 1)的解析器查询,直到找到匹配项。对于具有多个子域的环境,请阅读下面的选项 ndots:n 以避免中间人攻击和 root-dns-servers 的不必要流量。请注意,如果列出的域的服务器不是本地的,此过程可能会很慢并且会产生大量网络流量,并且如果没有服务器可用于其中一个域,则查询将超时。

搜索列表目前仅限于六个域,总共 256 个字符。

总结上述内容,假设上述默认设置没有变化,如果解析器中没有点的东西到达,解析器将尝试添加example.com到它。

因此,假设您只需http://somesite/somedocument.html在浏览器中输入即可。解析器将捕获它并首先尝试解析somesite.example.com- 如果您实际输入,则等效http://somesite.example.com/somedocument.html- 在尝试您实际请求的内容之前。

如果您所在的 LAN 环境有自己的 DNS 服务器,这样人们就可以键入简单的名称来访问本地资源,这将很有帮助。如果您没有带有自己的 DNS 服务器的家庭或公司 LAN,那么您真的不必担心。

  • HTTP 是使用搜索选项的一个不好的例子。由于 IPv6 稀缺性,大量人使用基于名称的虚拟主机。根据我的经验,除了“Host:somesite.localdomain.com”之外,很少看到虚拟主机接受对“Host:somesite”的请求。或者换句话说,搜索选项允许您的客户解析缩写名称,但这并不意味着您实际上能够完成请求。 (14认同)

小智 15

为了解释,请考虑/etc/hosts以下条目:

192.168.1.10     web.example.com
Run Code Online (Sandbox Code Playgroud)

现在,如果我想 ping # ping web.example.com ,它将满足该请求,但是如果我执行 # ping web,它会说“暂时失败...”并且不会满足该请求。

因此,为了满足请求,我必须在/etc/resolve.confas中写入一个条目search example.com

(是的,我们也可以追加到/etc/hosts文件中)。

现在,如果您执行ping web,它会将 example.com 附加到您的请求并提供服务。