概述:
这里摘抄BIND9手册中的一段话“视图是 BIND9 的强大的新功能, 允许名称服务器根据询问者的不同有区别的回答 DNS查询。特别是当运行拆分 DNS 设置而不需要运行多个服务器时特别有用。”手册中说得很明了,只是根据不同的来源DNS服务器做出不同的回应。
应用场合:
(1) 需要将域名分成内网和外网两个不同的区域进行解析
(2) 根据不同的来源IP做出相对于来源IP的解析(电信的用户查询,返回电信网络的服务器地址,网通的查询返回网通服务器地址)
试验环境
DNS服务器环境
CentOS 5.2
所需要的包
| bind-chroot-9.3.4 |
将bind主程序关在家里面 |
| bind-libs-9.3.4 |
Bind程序运行库 |
| bind-9.3.4 |
Bind服务器主程序 |
| bind-utils-9.3.4 |
Bind客户端相关命令 |
| caching-nameserver-9.3.4 |
named.conf等配置文件的示例 |
网络环境
| DNS
eth0:115.12.65.254
eth1:192.168.0.254 |
WWW Server
eth0: 115.12.65.3
eth1:192.168.0.250 |
MailServer
eth0: 115.12.65.4
eth1:192.168.0.251 |
FtpServer
eth0: 115.12.65.5
eth1:192.168.0.252 |

配置
mv /etc/named.caching-nameserver.conf /etc/named.conf
#将文件名修改为程序需要的名称,实际上/etc/下的named.caching-nameserver.conf文件是个连接文件,其准确位置在/var/named/chroot/etc/目录中,由于我们安装了bind-chroot包,所有的配置文件都在/var/named/chroot/的相关目录下,这里我只需要将/etc/下的连接文件修改为named.conf文件即可,由于named守护进程查找的就是/etc/下的named.conf所以我这一步一定要做。
vi /etc/named.conf
acl "lan"{192.168.0.0/24;}; //定义本地局域网网段地址ACL
options {
listen-on port 53 { any; }; //这里可以写any或者将DNS主机的两个地址写进去
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; };
};
logging {
channel default_debug {
file "data/named.run";
severity dynamic;
};
};
view localhost_resolver {
match-clients { localhost; };
match-destinations { localhost; };
recursion yes;
include "/etc/named.rfc1912.zones";
};
//定义内网的视图
view inside{
match-clients {"lan";}; //指定匹配的地址
recursion yes;
zone "example.com" {
type master;
file "named.lan.example.com";
allow-transfer{none;};
};
zone "0.168.192.in-addr.arpa"{
type master;
file "named.192.168.0";
};
};
//定义外网的视图
view outside{
match-clients {"any";};
recursion yes;
zone "example.com"{
type master;
file "named.wan.example.com";
allow-transfer{none;};
};
zone "1.0.10.in-addr.arpa"{
type master;
file " named.115.12.65";
};
};
针对内网
vi /var/named/chroot/var/named/named.lan.example.com
$TTL 86400
@ IN SOA ns1. root.ns1. (
42 ; serial (d. adams)
3H ; refresh
15M ; retry
1W ; expiry
1D ) ; minimum
@ IN NS ns1.example.com.
@ MX 10 mail.example.com.
ns1 IN A 192.168.0.254
www IN A 192.168.0.250
bbs IN CNAME www
mail IN A 192.168.0.251
ftp IN A 192.168.0.252
vi /var/named/chroot/var/named/named.192.168.0
$TTL 86400
@ IN SOA @ root (
42 ; serial (d. adams)
3H ; refresh
15M ; retry
1W ; expiry
1D ) ; minimum
IN NS @
254 IN PTR ns1.example.com.
250 IN PTR www.example.com.
251 IN PTR mail.example.com.
252 IN PTR ftp.example.com.
针对外网
vi /var/named/chroot/var/named/named.wan.example.com
$TTL 86400
@ IN SOA ns1. root.ns1. (
42 ; serial (d. adams)
3H ; refresh
15M ; retry
1W ; expiry
1D ) ; minimum
@ IN NS ns1.example.com.
@ MX 10 mail.example.com.
ns1 IN A 115.12.65.254
www IN A 115.12.65.3
bbs IN CNAME www
mail IN A 115.12.65.4
ftp IN A 115.12.65.5
vi /var/named/chroot/var/named/named.115.12.65
$TTL 86400
@ IN SOA @ root (
42 ; serial (d. adams)
3H ; refresh
15M ; retry
1W ; expiry
1D ) ; minimum
IN NS @
254 IN PTR ns1.example.com.
3 IN PTR www.example.com.
4 IN PTR mail.example.com.
5 IN PTR ftp.example.com.
至此dns的配置文件都已经配置好了,接下来就是启动服务了;
service named restart
chkconfig named on //随系统启动
注意事项:
(1) 视图语句的顺序是很重要的,一位用户的请求将会在它所匹配的第一个视图中被解答。
(2) 在视图语句中定义的域只对匹配视图的用户是可用的。
(3) 通过在多个视图中用相同名称定义一个域,不同域数据可以传给不同的用户。
(4) 许多在 named.conf的options 里的语句中给出的选项也能在视图语句中使用,仅仅用于使用那个视图解答请求的时候。
近期评论