DNS(二)之bind的视图功能

摘要:
bind观点的工作原理是,在中国当前的网络环境下,多个运营商共存,运营商之间存在一定的网络互操作性问题。如果来自不同运营商或地区的所有用户都通过一个简单的a记录被分配到一个计算机室,那么对于一些互联网用户来说,存在大的访问延迟或数据包丢失的问题。然后bind提供了视图技术来解决这个问题。DNS视图意味着同一资源记录的DNS请求源IP地址不同,分配给解析器的解析结果也不同。也就是说,它可以提供这样的功能。

bind视图工作原理

在我国目前的网络环境下面,多个运营商并存,运营商之间的存在一定的网络互通问题,如果把来自不同的运营商或者地域的所有用户通过简单的A记录分配到一个机房,那么就存在部分网民访问延时大或者丢包的问题。那么bind里面就提供了视图(Dns view ) 技术来解决这个问题,DNS视图就是对同一个资源记录根据的DNS请求来源IP地址不同,分配到解析器的解析结果也不同,也就是说它可以提供这样的功能。

  • 对于山东省的中国电信的DNS请求,可以把用户引导到部署在山东省中国电信机房的服务器上。
  • 对于无法匹配到某个具体运营商或者国外的用户,可以把用户引导到指定的一组默认服务器上。
    所以以上的功能,都是为了实现用户的就近访问,也就是让用户访问到对他来说网络质量较好的服务器上。
关于视图的配置

我们在这里配置的是模拟环境,环境如下:
DNS(二)之bind的视图功能第1张

都是采用Centos6.6系统,yum安装的bind服务。

dns服务器的named配置如下:

[root@localhost etc]# cat /etc/named.conf
options {
	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";
	recursion yes;

	dnssec-enable yes;
	dnssec-validation yes;

	/* 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;
        };
        channel query_log {          #开启请求日志
             file "/var/log/dns/query.log" versions  5  size  30m;
             severity  info;    
             print-time yes;
             print-category yes;
       };
       category queries {
            query_log;
      };
};

view  "view_localnet_45" {
    match-clients {            # 使用match-clients指令,指定匹配来自这些用户的ip
       localnet45;             # 写的是acl配置文件定义的aclname
    };
     zone  "ljf.com"  {
        type master;
        file "ljf.com.zone45";   #不同的匹配规则我这里写的是用不同的域名文件,方便管理
    };

};

view "view_localnet_141" {
    match-clients {
        localnet141;
    };
     zone "ljf.com"  {
       type master;
       file "ljf.com.zone141";
    };
};

#include "/etc/named.rfc1912.zones";           # 注释掉这条,因为开启view以后,所有的zone必须包含在view里面,不然启动报错。
include "/etc/named.root.key";
include "/etc/named/acl/localnet141.conf";     # 引入acl配置文件
include "/etc/named/acl/LocalNet45.conf";      # 引入acl配置文件

下面我们看看ACL的配置文件:

[root@localhost named]# cat /etc/named/acl/localnet141.conf
acl "localnet141" {
192.168.141.0/24;     #针对192.168.141的网段
};
You have new mail in /var/spool/mail/root
[root@localhost named]# cat /etc/named/acl/LocalNet45.conf
acl "localnet45" {     # 定义acl的名字,方便named.conf里面的match-clients 去调用
192.168.45.0/24;       # 针对192.168.45的网段
};

再看下zone的file内容 :

[root@localhost named]# cat /var/named/ljf.com.zone141
$TTL 1D
@	IN SOA	@ rname.invalid. (
					0	; serial
					1D	; refresh
					1H	; retry
					1W	; expire
					3H )	; minimum
@      IN    NS   ns
www    IN   A 192.168.141.3
ns    IN    A 102.168.141.3

[root@localhost named]# cat /var/named/ljf.com.zone45
$TTL 1D
@	IN SOA	@ rname.invalid. (
					0	; serial
					1D	; refresh
					1H	; retry
					1W	; expire
					3H )	; minimum
@    IN  NS    ns
www  IN  A    192.168.45.128
test IN  A    192.168.45.2
ns   IN  A    192.168.45.129

那么就开始去验证我们刚才的配置的DNS功能
192.168.141.4上解析域名

[root@localhost ~]# dig @192.168.141.3 www.ljf.com +short
192.168.141.3

192.168.45.128上解析域名

root@leo-virtual-machine:~# dig @192.168.45.129 www.ljf.com +short
192.168.45.128

由解析结果看得出来,在不同网段解析同一个域名,解析结果确实不同,展示了bind的view功能的强大之处

总结起来就是用acl指令去圈定一批来源IP,使用view的match-clients匹配该acl,为其分配zone文件用于解析用于解析。


视图优化的技巧

相信大家可以看到,view里面的核心内容就是匹配来源IP,那么问题来了,这些ip哪里来的?毫无疑问,肯定是自己通过dns请求日志去收集的
日志配置我在这里在贴下:

[root@localhost named]# cat /etc/named.conf
'''''
logging {
        channel default_debug {
                file "data/named.run";
                severity dynamic;
        };
        channel query_log {          #开启请求日志
             file "/var/log/dns/query.log" versions  5  size  30m;
             severity  info;    
             print-time yes;
             print-category yes;
       };
       category queries {
            query_log;
      };
};
'''''

日志格式如下

[root@localhost named]# cat /var/log/dns/query.log
06-Nov-2016 11:56:43.045 queries: client 192.168.45.128#40987: view view_localnet_45: query: www.ljf.com IN A +E (192.168.45.129)
06-Nov-2016 11:56:43.518 queries: client 192.168.45.128#60098: view view_localnet_45: query: www.ljf.com IN A +E (192.168.45.129)
'''''''''

免责声明:文章转载自《DNS(二)之bind的视图功能》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇PC电脑端如何多开Skype,一步搞定!shiro-会话管理下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

使用DNSPod来处理网站的均衡负载(转)

add by zhj:配置倒是蛮简单的,其实就是把域名与多个IP进行关联,在数据库中实现这个应该也是蛮简单的。 原文:http://kb.cnblogs.com/page/75571/ 首先介绍下DNSPod。DNSPod 是一款免费智能DNS产品。DNSPod 可以为同时有电信、网通、教育网服务器的网站提供智能的解析,让电信用户访问电信的 服务器,网通的...

用网线在两台电脑间传送文件

  材料:一根普通的网线(简单地说就是平时我们使用的连接笔记本和路由器的线,不是双绞线),两台WIN7系统的笔记本,就这些了。 步骤1:将两台电脑用网线连接起来。 步骤2:这时分别修改两台电脑上的数据。单击控制面板——查看网络状态和任务——查看活动网络——本地连接——属性——Internet 协议版本4,在弹出的对话窗中做如下修改: 第一台笔记本作如下修...

ESP8266 mDNS

https://circuits4you.com/2017/12/31/esp8266-mdns/ 本教程介绍如何使用ESP8266进行多播DNS?在网络世界中,很难记住每个网站和计算机的IP地址,解决这个问题域名系统(DNS)用于制作人类可理解的名称。在ESP8266中使用ESP作为Web服务器时,很难记住ESP8266的IP地址,并且在DHCP模式下很...

css设置文字中间的小竖线

主要css属性是border-right border-right:1px solid gray; padding-right:10px; padding-left:10px; <div data-bind="foreach:RequestListAll"> <a data-bind="text:PositionName...

Ubuntu 能PING IP但不能PING主机域名的解决方法

------------------------------------------------------------------------------- ------------------------------------------------------------------------------- vi /etc/nsswitch.co...

win2012基础服务

目录 1 防火墙 2 远程连接 win同时只能单用户登录 rdesktop&mstsc 单用户多连接 3 系统准备工具sysprep封装系统-安全策略 4 cmd常用命令 5 文件共享 samba协议 基于smb右键共享 服务器管理器smb/nfs 6 AD域 2012r2安装AD域 新建组和用户 win7加入域 域用户凭据...