![resolv.conf 中的搜索域是否仅用于 A/AAAA 查询?](https://linux22.com/image/707713/resolv.conf%20%E4%B8%AD%E7%9A%84%E6%90%9C%E7%B4%A2%E5%9F%9F%E6%98%AF%E5%90%A6%E4%BB%85%E7%94%A8%E4%BA%8E%20A%2FAAAA%20%E6%9F%A5%E8%AF%A2%EF%BC%9F.png)
用户提供的来自 resolv.conf 的搜索域是否仅用于 A/AAAA 查询?
它们还有其他用途吗?
答案1
看man resolv.conf
每次当本地domain
(可能还有 中指定的其他域search
) 不是 FQDN 时,它都会被附加到查询中的主机名中。
了解了这一点,您可以轻松测试它是否适用于其他 RR 类型。您可以使用任何现有记录(如TXT
DKIM 选择器等)进行测试。假设我们有SSH 指纹 SSHFP
記錄someserver.example.com
:
nslookup
> set domain=example.com
> set type=SSHFP
> someserver
在这个例子中,我们实际上会得到一个答案someserver.example.com SSHFP
(而不是someserver
作为 FQDN 处理),演示了如何它适用于任何 RR 类型。
请注意,您只能nslookup
使用resolv.conf
用作其初始配置文件的版本进行测试。替代方案dig
始终将所有查询视为 FQDN,即
dig someserver SSHFP
;; QUESTION SECTION:
;someserver. IN SSHFP
答案2
首先,操作系统解析器库实现了实际的搜索功能,这意味着它的使用取决于实际正在使用的操作系统(或其他)库,并且名称服务器软件根本不需要了解它。
即,当应用程序查找名称时,调用标准getaddrinfo
、gethostbyname
(已弃用)等函数,解析器库将根据需要对指定名称的不同变体进行单独查找。
现在,getaddrinfo
(gethostbyname
当这些实际上最终使用 DNS 时,解析器库可能配置为使用其他来源)专门查找地址记录(A
/ AAAA
),因此问题归结为其他解析器库代码是否也使用搜索或者其用途仅限于这些相当狭窄的目的功能。
由于有很多变量(即,给定的应用程序实际使用什么 DNS 查找功能?),这个问题的简短回答是“视情况而定”。
快速浏览一下 oldschool libc resolv 库中提供的其他函数,使用res_query
/函数的应用程序将不会搜索,而使用/ 的res_nquery
应用程序将会搜索。res_search
res_nsearch