【原创】BIND9中View(视图)的用法
BIND9中View(视图)的用法
概述:
这里摘抄BIND9手册中的一段话"视图是 BIND9 的强大的新功能, 允许名称服务器根据询问者的不同有区别的回答 DNS查询。特别是当运行拆分 DNS 设置而不需要运行多个服务器时特别有用。"手册中说得很明了,只是根据不同的来源DNS服务器做出不同的回应。
应用场合:
-
需要将域名分成内网和外网两个不同的区域进行解析
-
根据不同的来源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 //随系统启动
注意事项:
- 视图语句的顺序是很重要的,一位用户的请求将会在它所匹配的第一个视图中被解答。
- 在视图语句中定义的域只对匹配视图的用户是可用的。
- 通过在多个视图中用相同名称定义一个域,不同域数据可以传给不同的用户。
许多在 named.conf的options 里的语句中给出的选项也能在视图语句中使用,仅仅用于使用那个视图解答请求的时候。