DNS视图能够智能地自动判断访问者的IP地址,然后根据不同的访问者把域名分别解析成不同的IP地址,从而让不同的IP指向在不不同网络上的主机,例如使网通用户会访问到网通服务器,电信用户会访问到电信服务器。
DNS视图的实现,主要用到acl和view两个字段。以下实验平台为Centos 6.2,环境为:
DNS服务器
主机名:itpro IP地址:192.168.56.53
客户端测试机A
主机名:pca IP地址:192.168.56.101
客户端测试机B
主机名:pcb IP地址:192.168.56.202
注:这是在内网做的实验,用的是同一网段的IP;不过,这里假设成三个网段里的三台设备:itpro是公网里的dns服务器,pca是连接电信网络的客户机,pcb是连接联通网络的客户机。
一、DNS服务器的配置
有关bind和bind-chroot的安装及使用,前一篇《RHCE培训笔记——DNS基础》已经介绍,这里不再详述。
为避免路径过长或因切换路径等而作多余的啰嗦,本文是在root目录下进行的,请注意。实际操作建议在伪目录中进行。
1.修改主配文件
内容修改后,如下:
[root@itpro ~]# cat /etc/named.conf
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
|
//
named.conf
options {
listen-on port 53 { any; };
listen-on-v6 port 53 { any; };
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
;
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;
};
};
acl cncnet { 192.168.56.101; };
#注,定义联通网段,这里只指定一个IP地址
acl telecomnet { 192.168.56.202; };
#注,定义电信网段,这里只指定一个IP地址
view telecom {
zone
"."
IN {
type
hint;
file
"named.ca"
;
};
//
注,这个zone在named.conf里默认是有的,使用view语句后,
//
要把它删掉(删掉后好像没影响,不过这是一个hint类型的zone,保留了),
//
或放进view里,否则在重启named时会有如下报错,
//
“when using
'view'
statements, all zones must be
in
views”
match-clients { telecomnet; };
recursion
yes
;
include
"/etc/named.rfc1912.zones"
;
};
view cnc {
match-clients { cncnet; };
recursion
yes
;
zone
"sq.com"
IN {
type
master;
file
"cnc.sq.com.zone"
;
allow-update { none; };
};
zone
"100.40.125.in-addr.arpa"
IN {
type
master;
file
"cnc.sq.com.local"
;
allow-update { none; };
};
};
include
"/etc/named.root.key"
;
|
注:view cnc{}本是想写成类似view telecom{}那样的格式,如
view cnc {
match-clients { cncnet; };
recursion yes;
include "/etc/named.cnc.zones";
};
并拷贝/etc/named.rfc1912.zones文件(及其权限),创建/etc/named.cnc.zones文件,再在named.cnc.zones文件里重新定义zone内容。
但配置完成后,在重启named时报错,说找到到named.cnc.zones这个文件,
[root@itpro ~]# service named restart
Stopping named: [ OK ]
Starting named:
Error in named configuration:
/etc/named.conf:63: open: /etc/named.cnc.zones: file not found
[FAILED]
将named.cnc.zones改为named.rfc1913.zones,也是找不到,由此可以确实,默认的named.rfc1912.zones文件,其名字应该是有意义的,或者是在哪个配置里进行了注册之类,不过尚未找出具体原委。没办法,只好将view cnc的zone内容,写进named.conf这个主配置文件里。其实干脆把telecom{}区域的所有配置内容也写到这个主配置文件里,会更直观。
2.配置named.rfc1912.zones文件
这个配置文件,被view telecom {}用到,
内容修改后如下:
[root@itpro ~]# cat /etc/named.rfc1912.zones
1
2
3
4
5
6
7
8
9
10
11
12
|
//
named.rfc1912.zones:
……省略部分内容……
zone
"sq.com"
IN {
type
master;
file
"sq.com.zone"
;
allow-update { none; };
};
zone
"200.96.202.in-addr.arpa"
IN {
type
master;
file
"sq.com.local"
;
allow-update { none; };
};
|
注:在文件内容后面追加以上内容。
3.针对联通用户的域名及反向域名解析记录
在/var/named/目录下,分别以named.localhost和named.loopback为模板,创建cns.sq.com.zone和cns.sq.com.local两个文件。注意,拷贝模板时,要使用cp –p命令以保留模板属性。
以下是两数据文件修改后的内容:
[root@itpro ~]# cat /var/named/cnc.sq.com.zone
1
2
3
4
5
6
7
8
9
10
|
$TTL 1D
@ IN SOA ns.sq.com root (
2 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
NS ns.sq.com.
ns A 192.168.56.101
www A 125.40.100.111
|
[root@itpro ~]#
[root@itpro ~]# cat /var/named/cnc.sq.com.local
1
2
3
4
5
6
7
8
9
10
|
$TTL 1D
@ IN SOA ns.sq.com. root (
2 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
NS ns.sq.com.
ns A 192.168.56.101
111 PTR www.sq.com.
|
4.针对电信用户的域名及反向域名解析记录
在/var/named/目录下,分别以amed.localhost和named.loopback为模板,创建sq.com.zone和sq.com.local两个文件。注意,拷贝模板时,要使用cp –p命令以保留模板属性。
以下是两数据文件修改后的内容:
[root@itpro ~]# cat /var/named/sq.com.zone
1
2
3
4
5
6
7
8
9
10
|
$TTL 1D
@ IN SOA ns.sq.com root (
3 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
NS ns.sq.com.
ns A 192.168.56.101
www A 202.96.200.111
|
[root@itpro ~]#
[root@itpro ~]# cat /var/named/sq.com.local
1
2
3
4
5
6
7
8
9
10
|
$TTL 1D
@ IN SOA ns.sq.com. root (
3 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
NS ns.sq.com.
ns A 192.168.56.101
111 PTR www.sq.com.
|
二、测试
先将客户机pca、pcb的dns都指向DNS服务器192.168.56.53。
1.在主机pca(192.168.0.101)上测试(假设此机使用的是联通的网络)
[root@itpro ~]# nslookup www.sq.com
Server: 192.168.56.101
Address: 192.168.56.101#53
Name: www.sq.com
Address: 125.40.100.111 #注,解析出的是联通的地址
[root@ pca ~]# nslookup 125.40.100.111
Server: 192.168.56.101
Address: 192.168.56.101#53
111.100.40.125.in-addr.arpa name = www.sq.com.
2.在主机pcb(192.168.0.202)上测试(假设此机使用的是电信的网络)
[root@itsec ~]# nslookup www.sq.com
Server: 192.168.56.101
Address: 192.168.56.101#53
Name: www.sq.com
Address: 202.96.200.111 #注,解析出的是电信的地址
[root@ pcb ~]# nslookup 202.96.200.111
Server: 192.168.56.101
Address: 192.168.56.101#53
111.200.96.202.in-addr.arpa name = www.sq.com.
以上结果正确,实验完满结束。
本文转自Sunshyfangtian 51CTO博客,原文链接:http://blog.51cto.com/sunshyfangtian/1197511,如需转载请自行联系原作者