《DNS与BIND(第5版)》

您所在的位置:网站首页 dns转发器 《DNS与BIND(第5版)》

《DNS与BIND(第5版)》

2023-11-06 07:12| 来源: 网络整理| 查看: 265

本节书摘来自异步社区《DNS与BIND(第5版)》一书中的第10章,第10.5节,作者: 【美】Joseph Davies 更多章节内容可以访问云栖社区“异步社区”公众号查看。

10.5 转发机制

某些网络连接不希望发送过多的流量到外界去,可能是因为对外的连接速率低、延迟高;例如,远程办公室通过卫星连接到公司的网络。在这些情况下,可能需要将对外的DNS流量限制到最低。BIND提供了一种解决此问题的机制:转发器(forwarder)。

如果需要将名称解析分流至特定的名称服务器,那么转发器也是很有用的。例如,如果网络中只有一台主机连接到Internet,并且该主机是名称服务器,则可以将其配置为其他名称服务器的转发器,这样它们就可以查询Internet上的域名了。(本书第11章讨论防火墙时,将会更多地用到转发器。)

如果给网站指定了一个或多个服务器作为转发器,则名称服务器会把所有对外的DNS查询先发送给转发器。也就是说,转发器负责处理站点所有对外的DNS查询,并建立充足的信息缓存。对于任何对外部区域的查询,转发器几乎都能在缓存中找到答案,这样就能避免其他服务器对外发送查询。让一个名称服务器成为转发器非常简单:只要修改站点上所有其他服务器,将它们的查询指向转发器即可。

当一个primary或slave名称服务器被配置为使用转发器时,其操作模式将会稍有变化。如果解析器查询的记录已经存在于名称服务器的权威数据或缓存数据中,名称服务器就会用其作为应答;这部分操作没有变化。然而,如果该记录不在数据库中,名称服务器会向转发器发送查询,在等待短暂的周期而没有收到应答后,才会继续正常的操作,开始执行迭代(iterative)的名称解析过程。这种操作模式称为转发优先(forward first)。最主要的不同在于:名称服务器会向转发器发送一个递归(recursive)的查询,希望能直接得到应答。而在其他任何时候,名称服务器只会向其他名称服务器发送非递归的查询。

例如,在BIND 8和9的名称服务器上,用forwarders子语句指定区域movie.edu的转发器。wormhole.movie.edu和toystory.movie.edu都是该网站的转发器。除了转发器本身,应该在所有名称服务器的配置文件中加入如下forwarders子语句:

a href=https://yqfile.alicdn.com/2978adeabacdbdc3c0230f11fea37ad7c27cc152.png" >

当使用转发器时,请尽量使站点配置保持简洁。否则最终有可能得到一个非常混乱的配置。

警告

避免转发器形成链。不要配置为:名称服务器A转发给服务器B,而服务器B又转发给服务器C(最糟糕的是C又转发回服务器A)。这将导致过长的解析延迟并使配置变得脆弱,因为链中的任何转发器出现故障都会妨碍或中断名称解析。10.5.1 给名称服务器更多限制有时需要给名称服务器更多限制,让它们在转发器宕机或没有应答时,甚至不会试图联系外部的服务器。这可以通过将名称服务器配置成forward-only模式来实现。以forward-only模式工作的名称服务器,只是使用转发器的名称服务器的另一种形态。它仍通过查询自己的权威数据和缓存数据来应答。工作在forward-only模式的名称服务器配置文件应该包含如下内容:

9c0424d81383c5bbeba2e2bbb6b5dbba64b1021d

如果要使用forward-only模式,则必须配置转发器,否则是没有意义的。在BIND 之前的版本上配置名称服务器工作在forward-only模式时,如果打算让转发器的IP地址出现一次以上,可以参考如下配置:

4894117d77a14bcf417715ea4272a4ae15b5a6ff

名称服务器只和每个转发器联系一次,等待短暂的时间接收转发器的应答。可以通过重复列出转发器IP地址的方式,让名称服务器重复发送查询给转发器,并以此增加forward-only名称服务器等候转发器应答的总时间。

提示

使用经验:forward-only模式能够比forward-first模式(默认模式)提供更可预测的名称解析服务。如果名称服务器发送查询,而转发器很久没有应答导致超时,那时名称服务器再开始执行迭代名称解析,发送原始查询的解析器往往已经放弃或濒临放弃。于是,解析器会得到不一致的解析结果:一些查询(解析速度快的)得到了应答,而另一些则会超时。10.5.2 转发区域习惯上,所有区域要么全都使用转发器,要么全都不用转发器:使用转发器解析名称服务器自己无法解析的每条查询,或者根本不用转发器。然而,在某些情况下,能够对转发机制有更多的控制会很方便。例如,对特定的域名使用特定的转发器,而仍使用迭代方式解析其他域名。

BIND 8.2引入了一个新功能:forward zones(转发区域),该功能允许名称服务器配置成只在查询特定域名时才使用转发器。(BIND 9自版开始支持转发区域。)例如,可以将名称服务器配置为,对所有以pixar.com为结尾的域名的查询,都转发给Pixar的一对名称服务器:

882d30ac90638e584d2d430a405e61adcec84f60

为何要做如此明确的配置,而不让名称服务器遵循com名称服务器对pixar.com名称服务器的授权关系呢?想象一下,如果你和Pixar之间有一条私人连接,并且你被告知需要使用一组只能从你的网络到达的特殊名称服务器,并可以通过它们来解析所有pixar.com域名,那么就应该做上述配置。

即使转发规则被指定在zone语句中,它们仍会作用于以指定域名为结尾的所有域名。也就是说,无论所查询的域名foo.bar.pixar.com是否位于pixar.com区域,由于其以pixar.com为结尾(或者说在pixar.com域中),转发规则也同样起作用。

还有另一种不同的转发区域,和刚才的例子刚好相反。它允许指定哪些查询不使用转发机制。因此,它只适用于在options语句中指定了转发器的名称服务器,通常,options语句会作用于所有查询。

这种转发区域使用zone语句来配置,但不使用forward类型,而是使用正常区域的master、slave或stub类型,并配置forwarders子语句。为“关闭”options语句中的转发配置,要将转发器列表指定为空集:

a href=https://yqfile.alicdn.com/461a5f05f80a01c8a208d0124ed84ba23015abaf.png" >

等一下,为什么关闭所管理区域的转发功能?难道直接应答查询而不使用转发器吗?

记住,转发规则对以该区域的域名为结尾的所有域名的查询都有效。因此这条转发规则实际只作用于,对movie.edu授权的子域域名所作的查询,例如fx.movie.edu。如果没有该转发规则,这个名称服务器将把对matrix.fx.movie.edu的查询转发给192.249.249.3和192.249.249.1这两个名称服务器。有了该转发规则,名称服务器就会根据movie.edu区域提供的子域NS记录,直接查询fx.movie.edu名称服务器。

转发区域对Internet防火墙的配置有很大帮助,本书将在第11章进行探讨。

转发器选择机制

BIND 8名称服务器自开始,BIND 9名称服务器自9.3.0开始,只需要设置一次转发器列表。名称服务器不会按列表中的顺序依次查询转发器;它们将列表中的名称服务器解释为“候选”转发器,并根据往返时间选择首先查询的转发器,该往返时间由上次查询的响应时间确定。

如果转发器失效了,这样做就很有好处,尤其当出问题的就是列表中的第一个转发器时。旧版的BIND会在查询列表中的下一个转发器之前,持续盲目查询失效的转发器。而新版的BIND很快会意识到那个转发器已经失去响应,并且会尝试查询另一个。



【本文地址】


今日新闻


推荐新闻


    CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3