DNS的VIEW功能

在实际的网络应用中,我们有时希望对于同一个Domain Name能够根据不同的请求IP


地址/区域,解析到不同的对应IP地址,比如:有时对于企业内部网络和外部网络希望对同一域名解析到不同的IP地址以达到安全目的或者应用目的,又比如为了解决中国南北方电信/网通互访速度差异问题,您也会希望电信用户解析到的域名IP是位于电信网络中的服务器,网通用户亦然,使用户能够访问到临近的最快的服务器。


    而这些应用都可以通过对DNS的简单配置达到,使用DNS达到这一目的有以下的优点:


l  低成本-无需添加任何专用设备,只需通过简单配置即可; 


l  灵活性强-可随时增加/删除解析规则; 


l  有一定的可扩展能力-如果搭配Round Robin DNS可无缝快速的配置简单的负载均衡;


    下面,我们借助Bind 9(Bind 8没有这个功能哦)的这一特殊功能来实现域名的分离解析。在此例中,我们继续沿用x.centos.org作为域名,让局域网192.168.0.0/24内的机器除了192.168.0.40外都能解析到192.168.0.38,而192.168.0.40这台机器只能解析到192.169.0.39这个地址。


首先,需要修改named.conf文件,对view “internal”和view “external”这两个视图区域进行分别设置。我们将view “localhost_resolver”这个视图、key ddns key以及view视图内的slave这个区域都注释掉。然后,修改internal和external两个视图。


//


// Sample named.conf BIND DNS server 'named' configuration file


// for the Red Hat BIND distribution.


//


// See the BIND Administrator's Reference Manual (ARM) for details, in:


//   file:///usr/share/doc/bind-*/arm/Bv9ARM.html


// Also see the BIND Configuration GUI : /usr/bin/system-config-bind and


// its manual.


//


options                


{


    // Those options should be used carefully because they disable port


    // randomization


           query-source    port 53;            


         // query-source-v6 port 53;     


        


         // Put files that named is allowed to write in the data/ directory:


         directory "/var/named"; // the default     


         dump-file                  "data/cache_dump.db"; 


        statistics-file  "data/named_stats.txt"; 


        memstatistics-file  "data/named_mem_stats.txt";


};


logging                


{


/*      If you want to enable debugging, eg. using the 'rndc trace' command,


 *      named will try to write the 'named.run' file in the $directory (/var/named).


 *      By default, SELinux policy does not allow named to modify the /var/named directory,


 *      so put the default debug log file in data/ :


 */


        channel default_debug {


                file "data/named.run";


                severity dynamic;


        };      


};


//


// All BIND 9 zones are in a "view", which allow different zones to be served


// to different types of client addresses, and for options to be set for groups


// of zones.


//


// By default, if named.conf contains no "view" clauses, all zones are in the


// "default" view, which matches all clients.


//


// If named.conf contains any "view" clause, then all zones MUST be in a view;


// so it is recommended to start off using views to avoid having to restructure


// your configuration files in the future.


//


#view "localhost_resolver"     


#{


/* This view sets up named to be a localhost resolver ( caching only nameserver ).


 * If all you want is a caching-only nameserver, then you need only define this view:


 */


#       match-clients                   { localhost; };     


#       match-destinations        { localhost; };    


#       recursion yes;                   


         # all views must contain the root hints zone:


#       include "/etc/named.root.hints";


 


        /* these are zones that contain definitions for all the localhost


         * names and addresses, as recommended in RFC1912 - these names should


          * ONLY be served to localhost clients:


          */


#       include "/etc/named.rfc1912.zones";


#};


view "internal"          


{


/* This view will contain zones you want to serve only to "internal" clients


   that connect via your directly attached LAN interfaces - "localnets" .


 */


         match-clients           { 192.168.0.40; };  //设置internal区域由192.168.0.40这个地址解析。


#       match-destinations        { localnets; };


         recursion yes;


         // all views must contain the root hints zone:


         include "/etc/named.root.hints";


 


    include "/etc/named.rfc1912.zones";  //将internal视图的区域定义文件包含进来。


         // you should not serve your rfc1912 names to non-localhost clients.


 


         // These are your "authoritative" internal zones, and would probably


         // also be included in the "localhost_resolver" view above :


 


         zone "my.internal.zone" {                 


                   type master;


                   file "my.internal.zone.db";


         };


#       zone "my.slave.internal.zone" {            


#                type slave;


#                file "slaves/my.slave.internal.zone.db";


#                masters { /* put master nameserver IPs here */ 127.0.0.1; } ;


                   // put slave zones in the slaves/ directory so named can update them


#       };     


#       zone "my.ddns.internal.zone" {          


#                type master;


#                allow-update { key ddns_key; };


#                file "slaves/my.ddns.internal.zone.db";


                   // put dynamically updateable zones in the slaves/ directory so named can update them


#       };                        


};


#key ddns_key  


#{


#       algorithm hmac-md5;


#       secret "use /usr/sbin/dns-keygen to generate TSIG keys";


#};


view    "external"                   


{


/* This view will contain zones you want to serve only to "external" clients


 * that have addresses that are not on your directly attached LAN interface subnets:


 */


         match-clients           { !192.168.0.40;192.168.0.0/24;  }; //设置external视图由192.168.0.0


这个网段的机器解析,但


192.168.0.40这台主机不能解析。


#       match-destinations        { any; };


 


         recursion no;


         // you'd probably want to deny recursion to external clients, so you don't


        // end up providing free DNS service to all takers


 


         // all views must contain the root hints zone:


         include "/etc/named.root.hints";


    include “/etc/named.other.zones”;   //添加external的区域定义文件,文件名随意。


         // These are your "authoritative" external zones, and would probably


        // contain entries for just your web and mail servers:


 


         zone "my.external.zone" {


                   type master;


                   file "my.external.zone.db";


         };


};


接下来,修改internal和external视图的区域定义文件。首先,修改internal区域定义文件named.rfc1912.zones,根据需要添加正向和反响解析区域。


zone "centos.org" IN {        


         type master;           


         file "centos.org.zone";    


         allow-update { none; };  


};


 


zone "0.168.192.in-addr.arpa" IN { 


         type master;              


         file "0.168.192.zone";        


         allow-update { none; };


};


下面,将named.rfc1912.zones文件复制一份,并更名为named.other.zones(这个文件名要和named.conf里相应视图内的文件定义要一致哦!)。然后,对named.other.zones文件进行修改。


zone "centos.org" IN {        


         type master;           


         file "centos.org1.zone";    //这里修改external的正向解析文件为centos.org1.zone。


         allow-update { none; };  


};


 


zone "0.168.192.in-addr.arpa" IN { 


         type master;              


         file "0.168.1921.zone";     //这里修改external的反向解析文件为0.168.1921.zone。


         allow-update { none; };


};


下面,对区域定义中定义的文件进行配置。下面是internal的区域解析文件:


$TTL          86400                                    


@              IN SOA      x.centos.org.  root.x.centos.org. (


                                     2009101901     ; serial (d. adams)  


                                               3H             ; refresh         


                                               15M          ; retry          


                                               1W            ; expiry          


                                               1D )           ; minimum      


                 IN NS                  x.centos.org.         


            IN MX       mail.centos.org.       


X                IN A               192.168.0.39        


www        IN CNAME   x.centos.org.   //此为正向解析文件


———————————————————————————————————————


$TTL          86400                                    


@              IN SOA      x.centos.org.  root.x.centos.org. (


                                     2009101901     ; serial (d. adams)  


                                               3H             ; refresh          


                                               15M          ; retry           


                                               1W            ; expiry         


                                               1D )           ; minimum      


                 IN NS                  x.centos.org.  


39          IN PTR       x.centos.org.   //此为逆向解析文件


这里,internal的正向解析文件为centos.org.zone,逆向解析文件为0.168.192.zone;external的正向解析文件为centos.org1.zone,逆向解析文件为0.168.1921.zone。两个视图的解析文件配置方法一样,只是IP地址不同。可以先将internal的解析文件配置好,然后复制一份并更名,然后稍作修改即可。


一切修改完毕后,重启DNS服务器,然后进行测试即可。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值