Bind 视图:在主配置文件中,可以指定多个view,使用Bind提供 view指令可以实现根据不同的IP范围来对同一个域名进行解析(启用了view,则所有的区域包括根区域都要定义在view中;view 是有先后次序的)。

example:

1,修改/etc/named.conf文件

//
// named.conf
//
// Provided by Red Hat bind package to configure the ISC BIND named(8) DNS
// server as a caching only nameserver (as a localhost DNS resolver only).
//
// See /usr/share/doc/bind*/sample/ for example named configuration files.
//

options {
//      listen-on port 53 { 127.0.0.1; };
//      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     { localhost; };
         recursion yes;

//      dnssec-enable yes;
//      dnssec-validation yes;
//      dnssec-lookaside auto;

       /* Path to ISC DLV key */
//      bindkeys-file "/etc/named.iscdlv.key";

//      managed-keys-directory "/var/named/dynamic";
};

logging {
         channel default_debug {
         file "data/named.run";
         severity dynamic;
       };
};

//zone "." IN {
//        type hint;
//        file "named.ca";
//};

include "/etc/named.rfc1912.zones";
//include "/etc/named.root.key";

2,在/etc/named.rfc1912.zones 文件中定义view

view innet {
     match-clients { 192.168.1.0/24; };
zone "." IN {
     type hint;
     file "named.ca";
};
zone "localhost.localdomain" IN {
     type master;
     file "named.localhost";
     allow-update { none; };
};
zone "localhost" IN {
     type master;
     file "named.localhost";
     allow-update { none; };
};
zone "1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.ip6.arpa" IN {
     type master;
     file "named.loopback";
     allow-update { none; };
};
zone "1.0.0.127.in-addr.arpa" IN {
     type master;
     file "named.loopback";
     allow-update { none; };
};
zone "0.in-addr.arpa" IN {
     type master;
     file "named.empty";
     allow-update { none; };
};
zone "luolinux.com" IN {
     type master;
     file "luolinux.com.in"
};
};

view outnet {
     match-clients { 172.16.0.0/16; };
zone "luolinux.com" IN {
     type master;
     file "luolinux.com.out"
};
};

view default {
     match-clients { any; };
zone "luolinux.com" IN {
     type master;
     file "luolinux.com.out";
 };
};

3,在/var/named/ 目录下创建luochen.com.in 区域数据库文件

# vim /var/named/luolinux.com.in

$TTL 600   
@       IN      SOA     dns.luolinux.com. admin.luolinux.com. (
                       2016030822
                       1H
                       10M
                       2D
                       1D)
@       IN      NS      dns
@       IN      MX  10  mail
dns     IN      A       192.168.1.118
mail    IN      A       192.168.1.110
www   IN      A       192.168.1.121

4,在/var/named/ 目录下创建luochen.com.out 区域数据库文件

# vim /var/named/luolinux.com.out

$TTL 600   
@       IN      SOA     dns.luolinux.com. admin.luolinux.com. (
                       2016030822
                       1H
                       10M
                       2D
                       1D)
@       IN      NS      dns
@       IN      MX  10  mail
dns     IN      A       172.16.20.10
mail    IN      A       172.16.20.23
www   IN      A       172.16.20.54

5,修改区域数据库文件的属主和属组和权限

# chown root:named luolinux.com.in

# chown root:named luolinux.com.out

# chmod 640 luolinux.com.in

# chmod 640 luolinux.com.out

6,重读配置文件

# killall -1 named

7,再给本机配置一个地址测试使用

# ifconfig eth0:0 172.16.20.10/16 up

# ifconfig 

8,测试

# service named restart

# dig -t A www.luolinux.com @192.168.1.118

# dig -t A www.luolinux.com @172.16.20.10