zoukankan      html  css  js  c++  java
  • DNS Delegate和Forwarder的区别

    一. DNS的委派

    所谓DNS委派就是一个DNS服务器将某些区域的解析委托给其他DNS服务器负责.

    区域中的子域过多时,维护起来不方便,还用遇到域名查询的瓶颈,通过在区域中新建委派,可以将子域名委派到其它服务器维护。

    子域文件在父域文件中; 委派有独立的区域文件。

    DNS委派: DNS服务器把一个区域的子域委派给另外一台DNS服务器来管理,这样当客户端向DNS提交查询请求时,根域的DNS服务器会把这种请求转发给维护其子域的DNS服务器。

    二. DNS的转发

    转发DNS是一种特殊的递归。如果本地的缓存记录中没有相应域名结果时,其将查询请求转发给另外一台DNS服务器,由另外一台DNS服务器来完成查询请求。

    当你设置了转发器后,所有非本域的和在缓存中无法找到的域名查询都将转发到设置的DNS转发器上,由这台DNS来完成解析工作并做缓存,因此这台转发器的缓存中记录了丰富的域名信息。因而对非本域的查询,很可能转发器就可以在缓存中找到答案,避免了再次向外部发送查询,减少了流量。只有当服务器是非授权的,并且缓存中没有相关记录时,才会进行转发。

    1、完全转发:当DNS服务器收到查询请求的时候会先看看是不是查询本域的信息,本地缓存是否有数据,如果不能使用本地数据解析DNS会将查询请求发送给转发器,此时是以递归查询的方式发送给转发器的,而在标准的DNS解析中,DNS服务器将以迭代查询的形式发送给另一个DNS服务器。

        所谓的 forwarder,就是当某一台 NS 主机遇到非本机负责的 zone ( slave zone 也属于本机负责的范围) 查询请求的时候,将不直接向 "." zone 查询,而把请求转交给指定的 forwarder (一台或多台) 主机代为查询。我们知道,当DNS服务器接到客户端主机的查询请求时,首先会检查这个查询是否属于本机管辖,否则将转向 "." zone 再逐级的查询下去,最后再把查询结果告诉客户端。在这个过程之中,DNS服务器还会将查询到的结果存放到缓存中。只要缓存中的 TTL 没过期,在下次遇到同样查询的时候,就可以直接将结果响应给客户端,而无需再重复上次的查询流程。如果DNS服务器上指定了forwarder,那这个DNS发现缓存中没有记录时,将不向 "." 查询,而是向 forwarder 送出同样的请求(转发),然后等待查询结果,即把逐级往下查询这个耗费精力的动作,交给 forwarder 负责。但无论这个结果是自己直接查询得来的,还是 forwarder 送回来的,DNS服务器都会保存一份数据在缓存中。这样,以后的相同查询就快多了,这对于DNS所服务的客户端而言查询效率会提高很多。
       当forwarder没有返回答案时,奔DNS会自己去远端请求。但是如果配置了forward only;   则他仅仅处理转发,而不自己查询。


    2、部分转发(只转发解析某个域的DNS):假设有两个域,a.com和b.com,a.com这个域是经过授权(向上级注册,也就是.com知道他的存在)的,而b.com这个域没有经过授权,此时如果a.com中的一台主机要访问www.b.com就会出现访问不了,但是如果a.com知道b.com这个域的DNS主机是谁,即便b.com没有经过授权,这时a.com的DNS可以设一个部分转发,将本域所有要求解析b.com域的请求全部都发给b.com这个域的DNS主机就可以了。
    部分转发一般用于访问未经授权的DNS域。配置格式
    zone “b.com” IN {
     type forward;
     forwarders {IP;};

     }

    注意:
    1.转发服务器的查询模式必须允许递归查询,否则无法正确完成转发
    2.转发服务器列表如果是多个DNS服务器,则会依次尝试,直到获得查询信息为止
    3.配置区域委派时,如果使用转发服务器,有可能会产生区域引用的错误
    #作为转发服务器,千万不要出现转发循环。
    配置转发服务器技巧:
    1).转发列表配置精简
    对于配置有转发器的DNS服务器,可将查询发送至多个不同的位置,如果配置转发服务器配置过多,则会增加查询的时间,应根据需要使用转发器,例如:将本地无法解析的DNS信息转发至其他域名服务器。

    2).避免链接转发器
    如果配置了DNS服务器server1将查询请求转发给DNS服务器server2,则不要在为server2配置其他转发服务器。如果其他转发服务器进行了错误的配置,将查询转发给server1,那么可能导致错误。

    3).减少转发器负荷
    如果大量的DNS服务器使用这些转发器进行域名信息查询,则会增加转发器的工作量,降低解析的效率,所以建议使用一个以上的转发器实现负载。

    4).避免转发器配置错误
    DNS服务器会按照转发器配置文件设置的顺序来转发域名,如果国内的域名服务器,错误的将第一个转发器配置为美国的DNS服务器地址,则所有本地无法解析的查询均会发送至指定美国的DNS服务器,这会降低网络上名称解析的效率

     三. Forwarder的设置

    forwarder转发功能只需要在named.conf中配置即可:

    # cat /etc/named/named.conf
    options {
                 listen-on port 53 { any; };
                 listen-on-v6 port 53 { ::1; };
                 directory "/var/named";
                 dump-file "/var/named/data/cache_dump.db";
                 statistics-file "/var/named/data/named_stats.txt";
                  memstatistics-file "/var/named/data/named_mem_stats.txt";
                  allow-query { any; };
                  recursion yes;
                  forward first;
                  forwarders {            #即访问非kevin.cn域名时将解析转发到这几个DNS地址(分别为阿里的DNS、google的DNS)上进行解析。
                         223.5.5.5;          #注意这里转发的是DNS地址,没有指定DNS转发域名。
                         223.6.6.6;
                         8.8.8.8;
                         8.8.4.4;
                   };
                   };
    zone "grace.cn" {                       #访问grace.cn域名时,将解析请求转到192.168.51.39(即grace.cn域名的DNS地址),注意这个不能写在上面的forwarder处,否则转发无效!
                  type forward;                #注意这里转发配置中制定了转发的域名,即forwad转发区(forward zone)设置,这是bind9之后的新特性。
                  forwarders { 192.168.51.39; };
    };

    forward first | only;
    forward指令用于设置DNS转发的工作方式:
    1)forward first设置优先使用forwarders DNS服务器做域名解析,如果查询不到再使用本地DNS服务器做域名解析。
    2)forward only设置只使用forwarders DNS服务器做域名解析,如果查询不到则返回DNS客户端查询失败。

    转发器的配置格式是: 
    options { 
                forwarders { 192.168.10.35; 192.168.10.36; }; 
    };

    这里需要注意的是:
    转发器本身不用做任何设置,而是对需要转发器的其他DNS server做以上配置。还有,如果该DNS Server无法联系到转发器,那么BIND会自己尝试解析。

    
    

    如果要禁止BIND在无法联系到转发器时不做任何操作,那么还可以使用forward only命令,这样BIND只能使用区的权威数据和缓存来响应查询了(在连接不到转发器的情况下)。 
    options { 
                forwarders { 192.168.10.35; 192.168.10.36; }; 
                forward only; 
    };

     
    在BIND8.2以后引入了一个新的特性:转发区(forward zone),它允许把DNS配置成只有查找特定域名的时候才使用转发器。( BIND 9从9.1.0才开始有转发区功能 )例如,你可以使你的服务器将所有对 kevin.cn 结尾的域名查询都转发给 kevin.cn 的两台名字服务器: 
    zone "kevin.cn" { 
              type forward; 
              forwarders { 110.50.80.208; 110.50.80.209; }; 
    };
    
    这样的功能有什么用呢?
    假设kevin.cn和你的网络有一个私有的连接,而kevin.cn又没有连接上Internet ,那么你从Internet 是无法查到 kevin.cn 后缀的域名的,这时你就要使用转发区的功能了。
    
    还有一种转发区设置和刚才的设置刚好相反,它允许设置什么样的查询将不被转发,当然这只适用于在options语句中指定了转发器的DNS 。配置如下: 
    options { 
                directory "/var/named"; 
                forwarders { 192.168.10.35; 192.168.10.36; }; 
    };
    
    zone "kevin.cn" { 
              type master; 
              file "zone.kevin.cn"; 
              forwarders {}; 
    };
  • 相关阅读:
    MJExtension的一些实用技巧
    SDWebImage第三方库使用注意的一些问题
    按钮控件里面的间距问题
    C#实现全窗体范围拖动
    在 C# 中使用文件名启动应用程序
    BOM设计的一些问题及解决方案探讨----合版BOM
    用ASPOSE.Cells将HTML表格存为Excel
    PPT文件太大时可以考虑另存为PPTX格式
    不小心装了个瑞星
    ERP实施顾问--理解客户的解决方案与实际需求
  • 原文地址:https://www.cnblogs.com/lixinjjy/p/10921912.html
Copyright © 2011-2022 走看看