DNS的分离解析


实验背景


在Internet环境中,考虑到不同地区(华北、华南、港澳台、海外……)、不同ISP服务商(移动、电信、联通、教育网……)的访问速度差异,许多大型站点(新浪、网易、腾讯、搜狐……)会分别部署多台镜像服务器,不同地区或不同ISP接入的用户会自动连接到离他们最近的镜像服务器。


针对类似这样的需求,对于这些站点的权威DNS服务器来说,如何根据客户机的来源不同而引导其访问正确的镜像服务器呢?这个就需要用到Slit DNS(分离解析)了,有时候也成为智能解析。


1.为区域tarena.com配置分离解析,针对www.tarena.com的A记录做分离测试。


2.当客户机来自192.168.4.0/24或127.0.0.0/8时,将www.tarena.com解析为192.168.4.100。


3.当客户机来自其他网络时,将www.tarena.com解析为1.2.3.4。


实验环境:

VMware Workstartion      RHEL5.9


实验方案:


使用2台RHEL 5虚拟机,为了简化实验网络结构,提供分离解析的DNS服务器配置有2个IP地址(192.168.4.5和172.16.16.5),以便不同网段的客户机可直接访问。两台RHEL 5虚拟机及Windows真机都可作为DNS客户机执行测试.



实验实现:

1.认识Split分离解析的实现方式


1)基本配置用法


针对同一个区域(tarena.com),可以在多个视图内分别定义,使用的区域地址数据文件相互独立,从而实现解析结果的分化 ——



2)将来源地址分组,定义为不同的ACL


针对大批量的地址段(单个IP、网段地址),可定义为访问控制列表,每个地址均以分号表示结束。例如“192.168.4.120;172.16.16.0/24;“,若使用”any;“可匹配任意地址。


定义访问控制列表需用到acl配置,相应的acl应该用到的地方之前先定义:


比如acl "YIDONG" { ip地址段1;ip地址段2;... 网段1;网段2;...};



2.配置分离解析的DNS服务器


1)确认服务器可接受不同客户机地址的DNS查询


为简化实验步骤,本例中直接为DNS服务器配置2个IP地址。基于物理网卡eth0和虚拟接口eth0:0,IP地址分别为192.168.4.5/24和172.16.16.5/24。


确认DNS服务器已配置的IP地址信息:




# ifconfig | grep "inet addr"

       inet addr:192.168.4.5  Bcast:192.168.4.255  Mask:255.255.255.0

       inet addr:172.16.16.5  Bcast:172.16.16.255  Mask:255.255.255.0

       inet addr:127.0.0.1  Mask:255.0.0.0


这样的话,就可以为这三个网段的客户机提供DNS查询服务了,方便下面的DNS分离解析测试。


2)建立主配置文件named.conf

 根据实验要求,定义2个视图。其中,一个视图名为“mylan“,对应来源地址为192.168.4.0/24或127.0.0.0/24的客户机;另外一个视图名为”other“,对应来源地址为其他任何地址的客户机:


#vim /var/named/chroot/etc/named.conf

options{

directory "/var/named";

};

acl "mylan"{

192.168.4.0/24;127.0.0.0/8;

};

view "mylan"

match-client { mylan; };

zone "tarena.com"  IN{

type master ;

file "tarena.com.zone.lan"

};

view "other" {

match-client { any;};

type master;

file "tarena.com.zone.other";

};

};


3)为不同视图分别建立区域地址数据文件


建立mylan视图的地址数据文件(tarena.com.zone.lan):


$TTL 86400

@ IN SOA tarena.com. admin.tarena.com.

( 2013101701

3H

15M

1W

1D

)

@ IN NS svr5.tarena.com.

svr5 IN A 192.168.4.5

svr6 IN A 192.168.4.6

www IN A 192.168.4.100

               //注意与其他视图中的差异 * IN A 192.168.4.100


建立mylan视图的地址数据文件(tarena.com.zone.other):


# vim /var/named/chroot/var/named/tarena.com.zone.lan

$TTL 86400

@ IN SOA tarena.com. admin.tarena.com. (

2013101701

3H

15M

1W

1D

)

@ IN NS svr5.tarena.com.

svr5 IN A 192.168.4.5

svr6 IN A 192.168.4.6

www IN A 1.2.3.4                     //注意与其他视图中的差异 * IN A 1.2.3.4



4)重启named服务,确认服务状态


重启named服务程序:


#service named restart


使用netstat检查监听状态,确认所涉及到的三个地址的监听都可用:


3.测试分离解析的效果


)从本机测试DNS解析


指定127.0.0.1作为DNS服务器,这样相当于来自127.0.0.0/8网段。则查询www.tarena.com时,适用于mylan视图,结果是192.168.4.100:


[root@svr5 ~]# nslookup www.tarena.com 127.0.0.1

Server: 127.0.0.1

Address: 127.0.0.1#53

Name: www.tarena.com

Address: 192.168.4.100





指定192.168.4.5作为DNS服务器,这样相当于来自192.168.4.0/24网段。则查询www.tarena.com时,同样适用于mylan视图,结果仍然是192.168.4.100



[root@svr5 ~]# nslookup www.tarena.com 192.168.4.5

Server: 192.168.4.5

Address: 192.168.4.5#53

Name: www.tarena.com

Address: 192.168.4.100


指定172.16.16.5作为DNS服务器,这样相当于来自其他地址(在any之前无任何视图可匹配)。则查询www.tarena.com时,适用于other视图,结果变成1.2.3.4:



[root@svr5 ~]# nslookup www.tarena.com 172.16.16.5

Server: 172.16.16.5

Address: 172.16.16.5#53

Name: www.tarena.com

Address: 1.2.3.4



从Windows 7真机测试DNS解析


Windows 7真机的IP地址是192.168.4.110,显然适用于mylan视图,当以192.168.4.5作为DNS服务器时,查询www.tarena.com的结果是192.168.4.100,



#nslookup www.tarena.com 192.168.4.5

名称:www.tarna.com

Address :192.168.4.100









实验总结:

注意:启用view视图设置后,不允许在view以外的地方再定义zone区段。


当客户机地址匹配“来源地址1”时,根据“视图1”中zone配置指定的地址数据文件提取查询结果;当客户机地址匹配“来源地址2”时,根据“视图2”中zone配置指定的地址数据文件提取查询结果;…… 以此类推,最后可准备一个来源地址为“any”的默认视图,匹配任意客户机地址。