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


66

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

例如:

search  localdomain.com

Answers:


63

man resolv.conf

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

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

综上所述,假设与上述默认值没有变化,如果解析器中有没有点的内容,解析器将尝试添加localdomain.com到其中。

因此,可以说您只是输入http://somesite/somedocument.html浏览器。解析器将捕获该错误,并在尝试实际请求之前首先尝试解析somesite.localdomain.com-如果您实际键入的内容则等同http://somesite.localdomain.com/somedocument.html

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


10
HTTP是使用搜索选项的不良示例。由于IPv6稀缺,大量的人使用基于名称的虚拟主机。以我的经验,很少能看到虚拟主机以某种方式接受Host: somesite除之外的请求Host: somesite.localdomain.com。或者换句话说,搜索选项允许您的客户解析缩写名称,但这并不意味着您实际上就可以完成请求。
Zoredache

1
@Zoredache,您提出了一个正确的观点,但是,必须假设搜索技术将由本地系统管理员实施,该系统管理员还控制本地域名的所有主机,因此基于名称的虚拟主机可能已经配置为允许这种行为。
cnst

1
@cnst-不正确根据我的经验,总是如此。开发人员使用war文件打包的tomcat构建完整的服务器。ops / sys管理员对此机器/ vms / dns配置担心。关于谁负责这条灰线。zoredache很好地指出了这一点,以防读者确实有一个可能存在所描述问题的配置。
专利
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.