之前详细介绍了DNS及其在linux下的部署过程,今天再说下DNS的BIND高级特性-forwarder转发功能。比如下面一个案例:
1)已经在测试环境下部署了两台内网DNS环境,DNS的zone域名为kevin.cn:http://www.cnblogs.com/kevingrace/p/5570312.html
2)测试机器的DNS地址已经调整为这两台DNS地址,所以测试机访问kevin.cn域名是没有问题的。
由于业务需求,需要测试机器能访问grace.cn域名(grace.cn域名是使用别的DNS地址解析的),这就用到了DNS的BIND中的forwarder转发功能了。
通过BIND的forwarder转发功能,将测试机访问的非kevin.cn的域名都转向forwarder指定的DNS地址上。
forwarder转发功能只需要在named.conf中配置即可:
[root@uatdns01 ~]# 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;
};
};
logging {
channel default_debug {
file "data/named.run";
severity dynamic;
};
};
zone "." {
type hint;
file "named.ca";
};
zone "kevin.cn" {
type master;
file "kevin.cn_zone";
};
zone "51.168.192.in-addr.arpa" {
type master;
file "192.168.51.zone";
};
zone "50.168.192.in-addr.arpa" {
type master;
file "192.168.50.zone";
};
zone "104.168.192.in-addr.arpa" {
type master;
file "192.168.104.zone";
};
zone "grace.cn" { #访问grace.cn域名时,将解析请求转到192.168.51.39(即grace.cn域名的DNS地址),注意这个不能写在上面的forwarder处,否则转发无效!
type forward; #注意这里转发配置中制定了转发的域名,即forwad转发区(forward zone)设置,这是bind9之后的新特性。
forwarders { 192.168.51.39; };
};
========================================================================
尝试了下,无法在一个named.conf里同时配置两个或多个域的zone(即正向解析的zone),配置好并重启named服务器后,多出的那个域名解析无效。
比如内网有两个域名:kevin.cn和grace.cn,要做这两个域名的DNS解析环境,实现方案如下:
1)分别针对kevin.cn和grace.cn部署两套DNS环境 2)在其中一个域名的DNS环境中使用forwadr转发,比如在kevin.cn域名的named.conf配置中添加: zone "grace.cn" { type forward; forwarders { 192.168.51.39; }; # 该ip为grace.cn域名的DNS服务器地址 }; 3)将客户机的DNS(/etc/resolv.conf)配置成kevin.cn域名的DNS地址,这样该客户机对于kevin.cn和grace.cn域名都可以解析。
&#