DNS智能解析

参考《DNS BIND之ACL、View、ZONE介绍

  想了解DNS智能解析,就必须先知道DNS的视图功能(view)和访问控制列表(acl)。

一、控制列表(acl)

  acl是在named.conf中的一个配置语句,它定义了一份访问控制列表,里面包含了一些用IP表示的主机,这个访问列表可以被其他语句使用,其表示所定义的主机。

acl acl-name {
	address_match_list;
};

  address_match_list表示一个IP地址集。其中,none、any、localhost和localnets这4个内定的关键字有特别含义,分别表示没有主机、任何主机、本地网络接口IP和本地子网IP。一个具体的例子如下所示。

acl "someips" {             	//定义一个名为someips的ACL  
	10.0.0.1; 192.168.23.1; 192.168.23.15;      //包含3个单个IP  
};

acl "complex" {             	//定义一个名为complex的ACL  
	"someips";                	//可以包含其他ACL  
	10.0.15.0/24;               //包含10.0.15.0子网中的所有IP  
	!10.0.16.1/24;              //非10.0.16.1子网的IP  
	{10.0.17.1;10.0.18.2;};   	//包含了一个IP组  
	localhost;                	//本地网络接口IP(含实际接口IP和127.0.0.1)  
};

zone "example.com" {  
	type slave;  
	file "slave.example.com";  
	allow-notify {"complex";};    //在此处使用了前面定义的complex访问列表  }; 

二、视图功能

  view语句定义了视图功能,其允许DNS服务器根据客户端的不同有区别地回答DNS查询,每个视图定义了一个被特定客户端子集能够访问的DNS名称空间。

  • 视图(view)语句的定义:
view view_name [class] {
	match-clients { address_match_list } ;
	match-destinations { address_match_list } ;
	match-recursive-only { yes_or_no } ;
	[ view_option; ...]
	zone-statistics yes_or_no ; ]
	[ zone_statement; ...]
};
  • 配置实例:
view "internal" {
	match-clients { 10.0.0.0/8; };
	// 应该与内部网络匹配.
	// 只对内部用户提供递归服务.
	// 提供example.com zone 的完全视图
	//包括内部主机地址.
	recursion yes;
	zone "example.com" {
		type master;
		file "example-internal.db";
	};
};

view "external" {
	match-clients { any; };
	// 拒绝对外部用户提供递归服务
	// 提供一个example.com zone 的受限视图
	// 只包括公共可接入主机
	recursion no;
	zone "example.com" {
		type master;
		file "example-external.db";
	};
};

三、智能解析实现

  DNS智能解析能够实现不同的用户访问同一个域名,把域名解析成不同的IP地址,使用户能够访问离他最近的服务器上的数据,这样可以增加网站的响应速度。例如,当我们在刷抖音的时候,抖音会根据我们所在的地理位置,来返回一个离我们最近的资源节点,以优化用户体验。
  DNS服务器的视图通常在配置文件中是使用view实现的。把要使用某些IP地址作单独访问的zone区域,统一放在一个命名的view段落中,并且在view中定义请求的IP地址或IP地址段,把IP地址写入match-clients选项中。

acl bejingcomip{ bejing_IP; ... };
acl shenzhencomip{ shenzhen_IP; ... };

view bejingcom {
    match-clients { bejingcomip; };
    zone "ZONE_NAME" IN {
        type master;
        file "ZONE_NAME.bejingcom";
    };
};

view shenzhencom {
    match-clients { shenzhencomip; };
    zone "ZONE_NAME" IN {
        type master;
        file "ZONE_NAME.shenzhencom";
    };
};

view default {
    match-clients { any; };
    zone "ZONE_NAME" IN {
        type master;
        file "ZONE_NAME.beijingcom";
    };
};

需要注意的是:

  • 如果使用了视图的功能,那么配置文件中的所有zone区域都要必须写在视图里面,如,配置文件里默认要配置的三个区域,根、127.0.0.1、1.0.0.127.in-addr.arpa都要写入视图。
  • 在acl中定义IP地址,IP地址的写法可以是单个IP地址也可以是一个IP地址段加掩码,如:192.168.0.0/24。
  • 视图是根据配置文件从上往下匹配的,所以希望优先访问的资源记录文件,区域应该尽量写前面。
  • 如果定义的若干个视图的IP地址不全的话,那么可以在最后定义一个默认视图,match-clients选项中的IP地址写上any,代表如果此次访问的IP地址上面没有一个能匹配到,则在此处归类。
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值