在一个庞大的网络中,由于网络的复杂性等原因造成的,我们访问某些互联网资源时,速度会非常慢,而这些资源的提供商,比如购物网站,他们为了让客户访问速度提升,于是会将多个业务服务器会放在不同的网络中,而我们期望访问到离我们最近的服务器,以达到最快的速度访问,这个时候我们的DNS服务器解析的功能就要能指向到不同网络中的对应的固定的服务器,这种功能的实现就需要用到DNS的view功能,这个时候DNS服务器起到的是分网的效果。
DNS的View功能,需要在DNS服务配置文件中来定义,在视图中需要最先需要定义的是用户所处的网段,使用acl功能来定义对应的网段名称包含哪些具体的网段,然后在view视图的定义中把这些网段添加进去后,再去添加对应的区域数据解析文件,区域数据解析文件中定义了不同的资源服务器地址例如www等等,让不同的网段用户访问分布在不同地域的服务器资源定位到不同的服务器上,然后还有很多定义的zone。
假设,使用DNS的view功能情况下,我们庞大的网络中只有一个DNS服务器,这个DNS服务器有其他的从DNS服务器,负责我们整个大的网络,那么这个DNS服务器中的网段要定义多个而且允许网段内的用户递归查询,每个网段定义对应的数据解析文件,解析文件中再定义具体的资源记录IP地址等信息,这样就达到了分网的效果,而通常情况下我们的网络中会有多个DNS服务器,这些具体的服务器一定是在具体的某个网络中,意味着其自身就受到对应网络的限制,所以其服务的网段一定是其所谓内网网段,当我们的客户端请求这个DNS服务器解析时,客户端希望访问的资源如果在这个内网中有定义,那么这个网段的DNS服务器就要固定的解析到这台服务器上,这也就意味着在DNS配置文件中通常都会将自己服务的内部网络和外部网络分开定义,而其他外部网络是由另外的DNS服务器分区域负责解析的,对于用户来讲,他们请求的DNS服务器都是为他们这些内网客户服务的,所以在DNS服务器的view视图配置中通常情况下都分为内网用户和外网用户两种,实际环境中,外网用户请求的查询也是到它所在的内网DNS服务器上查询,而不会到其他的DNS服务器发起查询请求,现在我们使用模拟的方式来验证DNS的view功能,DNS服务器在接收到内网的用户查询请求时,返回的资源记录的一个固定结果,而外网网段的用户请求返回的是其他网段内的资源的IP(实际环境中其他外网网段用户的请求会发送到对应负责它那个区域解析的服务器上,而不会发送到这台上),从某种程度上验证了我们的view视图功能,达到分网的效果。
配置时,我们将主配置文件中的定义根区域的zone行也要定义到view中。
测试环境:DNS服务器,IP:172.16.103.1
内网网段:172.16.0.0/16
外网网段:192.168.1.0/24
在DNS服务器的配置文件中定义如下内容:
要注意的是根区域的定义要放在internal网段的view视图中,外部客户端区域定义只定义查询本域的资源记录,其他的区域定义由于本区域内的DNS服务器不为其递归查询,所以可以不定义。
添加对应的内网查询数据解析文件,内容为:
添加对应的外网查询数据解析文件,内容为:
调整这两个数据解析文件的属性为640,数组为named:
# chgrp named /var/named/sueking.com.int
# chgrp named /var/named/sueking.com.ext
# chmod 640 /var/named/sueking.com.int
# chmod 640 /var/named/sueking.com.ext
使用与DNS服务器相同网段的主机测试:
# dig -t A www.sueking.com @172.16.103.1
使用其他网段的主机测试,假设主机IP地址为192.168.1.100:
# dig -t A www.sueking.com @172.16.103.1
此时返回的结果就是我们在sueking.com.ext文件中定义的www.sueking.com的主机IP,DNS的view分网效果实现。
原文:http://9164364.blog.51cto.com/9154364/1536692