《DNS与BIND(第5版)》——10.8 名称服务器地址排序

10.8 名称服务器地址排序

有时,轮询调度和其他任何配置顺序都不符合要求。当与一台具有多个网络接口、并且因此具有多个IP地址的主机(也称为multihomed host,多宿主主机)联系时,根据主机地址选择特定的网络接口可能会有更好的性能。这不是rrset-order子语句能做到的。

如果这台多宿主主机在本地,并且和某台主机共享一个网络或子网,则多宿主主机的一个地址会距这台主机比较“近”。如果多宿主主机在远程网络中,可能使用其中一个网络接口会有更好的性能。不过,通常这和使用哪个地址没有多大关系。从前,10网段(也就是以前的ARPAnet骨干网),总会比其他的远程地址都要“近”些。现在的Internet发展迅猛,因此通过不同的网络访问远程的多宿主主机,大概都不会有明显的差别,但是本节仍会予以介绍。

在介绍名称服务器地址排序之前,应该先看看由解析器进行的地址排序是否更符合需求。(参阅本书节“sortlist指令”。)由于解析器和名称服务器可能位于不同的网络,所以让解析器来优化地址排序对本地主机更为理想。在名称服务器上进行地址排序也没问题,但是在BIND 8的早期版本中,名称服务器的地址排序功能被移除了,主要因为开发者认为该功能没有用。BIND 8.2恢复并增强了该功能。BIND 9.1.0是BIND 9中第一个支持地址排序功能的版本。

地址排序的关键在于一个称为sortlist的options子语句。sortlist子语句以地址匹配列表作为参数。然而,和作为访问控制列表使用的地址匹配列表不同,sortlist对地址匹配列表有非常特别的解释。地址匹配列表中的每个条目,本身就是具有一个或两个元素的地址匹配列表。

如果某个条目只有一个元素,那么它会被用来核对查询者的IP地址。如果查询者的地址匹配,则名称服务器会对发送给查询者的应答进行排序,以使任何匹配该元素的地址都被放在最前面。令人费解吧?下面有一个例子:

这个排序列表中只有一条包含一个元素的条目。该列表会将位于网络192.249.249/24的地址排在应答的最前面,并发送给同样位于该网络的查询者。因此,如果位于192.249.249.101的客户端查询一个拥有两个地址(192.249.249.87和192.253.253.87)的域名,那么名称服务器将会把192.249.249.87排在应答的最前面。
如果一个条目包含两个元素,则第一个元素被用来匹配查询者的IP地址。如果查询者的地址匹配,名称服务器会对发送给查询者的应答进行排序,以使任何匹配第二个元素的地址都被放在最前面。第二个元素实际上可以是一个包含许多元素的地址匹配列表,在这种情况下,应答中的第一个地址就是第一个匹配该列表的地址。下面是一个简单的例子:

这个排序列表会作用在位于192.249.249/24的查询者上,并且发送给它们的应答会将它们自己的网络地址排在最前面,接着才是位于192.253.253/24的地址。
排序列表中的元素,可以是简单的子网甚至是单独的主机。

时间: 2024-09-20 05:37:02

《DNS与BIND(第5版)》——10.8 名称服务器地址排序的相关文章

《DNS与BIND(第5版)》——第7章 BIND的维护7.1 控制名称服务器

第7章 BIND的维护 爱丽丝继续喘着气说:"可是,在我住的地方, 只要快快地跑一会儿,你总能跑到另外一个地方的." "那可真是个慢吞吞的地方!" 王后说:"你瞧,在我们这儿,得拼命地跑,才能保持在原地. 要是想到别的地方,得再快一倍才行!" 本章将讨论关于如何维护名称服务器的相关内容.包括如何控制名称服务器,如何修改区域数据文件,以及如何保持root提示文件是最新的.还将列出常见syslog错误信息并解释BIND的统计数据. 本章不会涉及如何排

《DNS与BIND(第5版)》——10.7 轮询调度(Round-Robin)负载分配

10.7 轮询调度(Round-Robin)负载分配 自BIND 4.9发布之后,名称服务器已经正式支持一些过去必须通过补丁才能实现的负载分配功能.Bryan Beecher曾给BIND 写过一个补丁,以实现他所谓的"轮转地址记录(shuffle address records)".这是一组特殊类型的地址记录,名称服务器会在响应查询时轮转其中的地址.例如,域名foo.bar.baz有3个"可轮转"IP地址:192.168.1.1,192.168.1.2和192.16

《DNS与BIND(第5版)》——10.12 系统优化

10.12 系统优化 对于大多数名称服务器来说,在BIND的默认配置下就能工作得很好,然而可能其中某个还需要进一步调优.本节将讨论可以用来优化名称服务器的所有配置项. 10.12.1 区域传输区域传输会给名称服务器带来沉重的负担.所以BIND提供一些机制,可以限制slave名称服务器给master服务器带来的区域传输负载. 1.限制请求单个名称服务器传输的区域数量 在slave名称服务器上,可以限制其一次能够向单个master名称服务器请求传输的区域数量.这样master名称服务器的管理员应该会

《DNS与BIND(第5版)》——10.5 转发机制

10.5 转发机制 某些网络连接不希望发送过多的流量到外界去,可能是因为对外的连接速率低.延迟高:例如,远程办公室通过卫星连接到公司的网络.在这些情况下,可能需要将对外的DNS流量限制到最低.BIND提供了一种解决此问题的机制:转发器(forwarder). 如果需要将名称解析分流至特定的名称服务器,那么转发器也是很有用的.例如,如果网络中只有一台主机连接到Internet,并且该主机是名称服务器,则可以将其配置为其他名称服务器的转发器,这样它们就可以查询Internet上的域名了.(本书第11

《DNS与BIND(第5版)》——10.2 DNS动态更新

10.2 DNS动态更新 Internet(即通常使用TCP/IP协议的网络)如今变得愈加动态化.许多大型企业使用DHCP动态分配IP地址.几乎所有的ISP都使用DHCP为其拨号及使用线缆调制解调器(cable modem)的用户分配IP地址.为适应这种变化,DNS需要提供动态增加和删除记录的功能.RFC 2136描述了这种机制,称为DNS动态更新. BIND 8和9支持RFC 2136提出的动态更新功能.此功能允许经过授权的更新者(updater),在区域中的权威名称服务器上增加和删除资源记录

《DNS与BIND(第5版)》——7.5 日志记录

7.5 日志记录 BIND支持扩展的日志记录(logging),包括将信息写入调试文件和发送至syslog.不过,使用扩展的日志记录是有代价的:在能够有效地控制该子系统前,必须要学习很多知识.如果没有时间来实验日志记录,那么就先使用默认值,等以后有空再来研究这个主题.大部分人并不需要更改日志记录的默认行为. 日志记录有两个主要的概念:通道(channels)和类别(categories).通道用来指定日志数据的流向:syslog.文件.named的标准错误输出或是bit bucket.类别用来指

《DNS与BIND(第5版)》——10.3 DNS NOTIFY(区域变更通知)

10.3 DNS NOTIFY(区域变更通知) 习惯上,BIND中的slave通过轮询(polling)机制来决定何时需要进行区域传输.轮询间隔时间又被称为更新间隔时间(refresh interval).而区域SOA记录中的其他参数,则可以用来配置轮询机制的其他参数. 但是使用这种轮询机制,在slave检测到并且从其master名称服务器传回新的区域数据,需要等待一段更新间隔时间.对使用动态更新的环境而言,这种延迟所带来的后果是灾难性的.当区域信息变更时,如果primary名称服务器能够主动通

《DNS与BIND(第5版)》——10.11 回避伪装的名称服务器

10.11 回避伪装的名称服务器 作为名称服务器的管理员,可能会发现某些远程名称服务器用有害的信息作为应答,这些信息可能是过时的.不正确的.格式错误的,甚至是故意欺骗的.可以尝试通知对方的管理员来修复该问题.或者通过配置,让名称服务器不再查询该服务器,BIND 8和BIND 及其后续版本支持这个功能.下面是配置文件中的语句: 当然,需要填入正确的IP地址. 如果名称服务器停止查询的服务器,是一个区域唯一的服务器,那么不要指望能够查询到位于该区域的名称了.但愿,还存在其他服务器可以提供关于该区域的

《DNS与BIND(第5版)》——10.9 优先选择特定网络上的名称服务器

10.9 优先选择特定网络上的名称服务器 BIND 8的拓扑(topology)功能与sortlist有些相似,不过它仅用于选择名称服务器.(BIND 9直到版仍不支持拓扑功能.)本章前面曾介绍过,BIND会从同一区域的各权威名称服务器中,选择出往返时间(round-trip time,简称RTT)最短的名称服务器.事实上并非如此.BIND 8在比较RTT时,实际上会把远程名称服务器分配到以64毫秒为单位划分的多个时段中.第一时段其实只有32毫秒宽,从0到32毫秒.下一时段从33到96毫秒,依次