/etc/resolv.conf 中的 sortlist 选项有什么用?

/etc/resolv.conf 中的 sortlist 选项有什么用?

resolv.conf正在阅读and meet的手册页排序列表

它有什么用呢?

手册页仅显示之后的网络\IP 地址列表排序列表关键字,而不是排序标准。如何解决映射到排序的问题?

搜索了有关这个问题的材料,但没有找到答案。

答案1

sortlist用于将 DNS 响应中匹配的 IP 地址移动到结果列表的前面,以便应用程序优先使用它们。虽然它有点过时了。如今我们对此有更好的标准,其形式为RFC 3484(见第 6 节)。

RFC 3484 比 hack 好得多sortlist,因为:

  • 它支持 IPv6 [更好]。
  • 它考虑了源地址选择。
  • 它不是特定于 DNS 的(它连接到 libc 名称服务,即上面的一层)。
  • 这是一个标准。

RFC 3484 风格的目标地址选择在 中配置/etc/gai.conf

答案2

因此,为了回答您的问题,“sortlist”是命名空间解析器的选项指令,即互联网域名空间的“客户端”部分——“服务器”端是域名服务器(DNS)。

推理“sortlist”背后的内容实际上非常简单——解析器是相当成熟的代码,无法对它向查询发出的响应进行排序。对于多宿主主机(单个主机名具有多个 IP 地址)来说,这是次优的。人们可能会发现自己处于最慢或最不可靠的界面上,而不是最快或最可靠的界面上。在 1000Base-TX 以太网统治世界之前,这一点更为重要,但它对于许多网络服务和主机管理员仍然具有价值。

“sortlist”指令设置解析器返回的地址所需的优先级(其中一个 C 库,顺便说一句)。该列表是一种控制为多宿主主机返回的地址顺序的方法。因此,如果主机有串行线路互联网协议接口 (SLIP) 和 10/100Base-TX 以太网接口,则可以将“排序列表”设置为优先使用以太网接口而不是 SLIP 接口,或相反亦然

这就是排序列表使用旧式 IP 地址命名法的原因。毕竟,解析器使用 IP。恐怕手册页中的解释有点迟钝。通过设置“排序列表”,可以设置解析器根据 IP 地址对返回结果进行排序的参数,以优先选择特定的网络接口。

GAI 接口并不简单,您应该了解它专注于 IPv6。人们可以设法实现相同的目标,但使用 GAI 前端会涉及更多的复杂性。

另一方面,在带有 Debian 的 Raspberry Pi 上使用 DNS 并不简单。 “简化”DNS 的无数尝试已经创建了如此多的抽象,以至于实际实现 DNS 比它需要的要复杂得多。

将“sortlist”指令添加到 Debian 10u5 上的“resolv.conf”文件中(巴斯特,我认为?),必须解析“resolvconf”的手册页(具体来说,解析会议(8)) 很小心。它应该可以将“/etc/dhcpcd.conf”文件中的“sortlist”设置为“dns-sortlist”,但我还没有尝试过——我只是破解了“resolv.conf”文件(但我有还关闭了 dnsmasq &c,并且当网络子系统感觉有帮助时,我不得不经常重新执行该文件)。

“排序列表”的几个示例:

解析配置文件:sortlist=192.168.1.0/255.255.255.0 这“告诉”解析器首先返回 192.168.1.0/24(即旧式子网掩码 255.255.255.0)子网上的主机名/IP;例如,这可以帮助您确保您的工作站使用以太网 LAN 而不是家庭无线网络。

解析配置文件(根据手册页,但买者自负): sort_list=192.168.1.0/255.255.255.0 192.168.10.1/255.255.255.0 这非常相似,但指示解析器将 192.168.10.0 网络上的任何主机名/IP 也移动到 192.168.1.0 上的任何主机名/IP 之后。

'/etc/network/interfaces' 中的接口节(另一个买者自负) dns-sortlist=192.168.1.0/255.255.255.0 192.168.10.1/255.255.255.0 这与 'resolvconf.conf' 的作用相同,仅适用于静态接口配置——所以它不能与 dhcp 一起使用。

人们应该注意到稍微不同的命名法,因为它们是不同的:DNS 使用单个单词“sortlist”;这解析配置文件中间件需要“resolvconf.conf”的下划线或连字符IFUP在“/etc/network/interfaces”中。

从手册页来看,现在最常见的 dhcp 配置方法似乎需要某种手动干预来设置 sortlist 参数;也许可以在 dhclient.conf ('/etc/dhcp/dhclient.conf') 中完成,但 '/etc/dhcp/dhclient-enter-hooks.d/resolvconf' 脚本不包含任何提取排序列表的代码dhcpcd.conf 中的参数,'/etc/dhcp/dhclient-exit-hooks.d/' 中也没有脚本来执行此操作。

相关内容