Bind安全控制选项
1 2 3 4 |
Allow-transfer {}; #用于控制区域传送文件 Allow-query {}; #通常用于服务器是缓存名称服务器时,控制查询客户端 Allow-recursion {}; #用于定义递归白名单 Allow-update {}; #定义允许动态更新区域数据文件的主机白名单 |
ACL
ACL是BIND支持使用的访问控制列表,可以用在安全控制选项中也可以使用在View中,ACL定义语法如下:
1 2 3 4 5 |
acl ACL_NAME { 10.0.0.0/8 172.16.0.0/16 192.168.0.0/24 }; |
BIND中ACL访问控制列表只有定义后才能使用,通常ACL要定义在named.conf的最上方。另外BIND有四个内置的ACL,如:
any:任何主机
none:无一主机
local:本地主机
localnet:本机的所在的网络
View
Bind中的View是用来把同一个域通过多个View划分开,每一个View中可以使用不同的区域解析文件,然后通过match-clients指令匹配IP或者以及写好的ACL,就可以实现特定IP地址访问特定的区域解析文件,View语法如下:
1 2 3 4 5 6 7 |
View VIEW_NAME { Match-clients { IP | ACL_NAME; }; Zone “ywnds.com” IN { Type master; File “ywnds.unicom”; }; }; |
PS: 注意的是一旦开启View之后,DNS中所有的区域都需要应用到View中,另外也可以把安全控制选项应用到View中。
介于中国北网通南电信的大网络格局;联通和电信也是一分为二,然后在骨干区域相互连接。所以不同的ISP网络之间的访问会非常慢;这种现象直接影响到网站的访问量而智能DNS解析能够提高访问速度解决南北互联和不同ISP网络连接之间的问题提高用户体验。并且现在非常流行的CDN技术就是基于智能DNS加缓存技术来实现的。
智能DNS最好可以通过View和ACL实现的,首先把客户端IP地址规划到不同的ACL中。然后把ACL应用到不同的View中,这样就可以实现不同的IP地址解析的域名地址不同。那么就可以实现不同的IP地址访问不同的应用服务器。比如在一个双线机房中有联通和电信网络,在机房中放置两台服务器分别接入联通和电信同,同时这两台服务器的内容是相同的实时同步的,那么就可以通过部署智能DNS达到根据客户端地址走不同的线路访问服务器。下图大概给出了通过联通和电信客户端解析http://www.ywnds.com得到不同的服务器地址,继而联通和电信客户端分别走自己的网络进行访问http://www.ywnds.com服务器。提高用户体验,也让你明白了View的作用。
如下图模拟这么一个实验:
DNS配置
1)编辑主配置文件添加ACL和View
1 |
[root@bogon ~]# vim /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 |
acl telecom { //配置电信的IP段 192.168.60.100/32 }; acl unicom { //配置联通的IP段 192.168.60.200/32 }; options { directory "/var/named"; recursion no; }; view dx { //引用电信的ACL解析时用本区域定义的区域文件 match-clients { telecom; }; zone“ywnds.com”IN { type master; file“ywnds.telecom”; }; }; view wt { //引用联通的ACL解析时用本区域定义的区域文件 match-clients { unicom; }; zone“ywnds.com” IN { type master; file“ywnds.unicom”; }; }; view default { //当有的IP无法判断是属于哪个ACL时默认就访问此区域的文件并允许递归 match-clients { any; }; recursion yes; zone“ywnds.com” IN { type master; file“ywnds.default”; }; zone “.” IN { type master; file “named.ca”; }; }; |
2)编辑区域配置文件
1 |
[root@bogon ~]# vim /var/named/ywnds.telecom |
1 2 3 4 5 6 7 8 9 10 |
$TTL 1D @ IN SOA dns.ywnds.com. root.ywnds.com. ( 336 ; serial 1D ; refresh 1H ; retry 1W ; expire 3H ) ; minimum @ IN NS dns dns IN A 192.168.60.10 www IN A 172.16.60.100 |
1 |
[root@bogon ~]# chown root:named /var/named/ywnds.telecom |
1 |
[root@bogon ~]# vim /var/named/ywnds.unicom |
1 2 3 4 5 6 7 8 9 10 |
$TTL 1D @ IN SOA dns.ywnds.com. root.ywnds.com. ( 336 ; serial 1D ; refresh 1H ; retry 1W ; expire 3H ) ; minimum @ IN NS dns dns IN A 192.168.60.10 www IN A 172.16.60.200 |
1 |
[root@bogon ~]# chown root:named /var/named/ywnds.unicom |
3)重启服务
1 |
[root@bogon ~]# service named restart |
4)客户端测试
192.168.60.100客户端解析http://www.ywnds.com的IP地址应该是172.16.60.100
192.168.60.200客户端解析http://www.ywnds.com的IP地址应该是172.16.60.200
192.168.60.30客户端解析http://www.ywnds.com的IP地址应该是172.16.60.200,并且192.168.60.30可以解析外网主机,前提是DNS服务器必须可以上网。
Rndc
Rndc(remote name domain controller)远程管理BIND的工具,有很高的执行权限。在红帽系统上安装BIND的RPM包可直接使用rndc命令,其工作在TCP的953端口。
Rndc命令
1 2 3 4 5 6 7 8 9 |
rndc --help #查看rndc帮助信息 rndc status #查看DNS的基本信息 rndc reload #重新载入区域配置文件 rndc reload ZONE #重新载入某个特定区域 rndc reconfig #重读配置文件并加载新增的区域(Bind一开机进程就会把所有的区域加载进内容中) rndc querylog #关闭或开启查询日志,会记录查询信息到/var/log/messages文件中,开启此功能会有产生大量IO不建议开启,同时使用rndc status可以查看到状态信息 rndc stop #关闭DNS服务器 rndc flush #清空服务器端的缓存 rndc trace [0-3] #打开或关闭debug模式,0是关闭其余3个级别,级别越高信息越详细,使用rndc status可以查看debug级别。用来调试用的,会产生大量没有必要的IO操作,降低DNS服务器性能 |
Queryperf
Queryperf是DNS查询压力测试工具,在RedHat提供的RPM包bind没有带queryperf工具;去下载源码编译bind9.7以上的版本带有queryperf和DLZ(让bind存储时连接mysql使用的连接工具)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
[root@localhost ~]# tar xf /root/bind-9.9.2.tar.gz [root@localhost ~]# ls /root/bind-9.9.2/contrib/ dlz queryperf [root@localhost ~]# cd /root/bind-9.9.2/contrib/queryperf [root@localhost queryperf]# ./configure [root@localhost queryperf]# make [root@localhost queryperf]# cp queryperf /usr/bin/ //把编译好的命令复制到/bin下 [root@localhost queryperf]# cd [root@localhost ~]# vim test //编辑要查询的文件查询条目越多越好可以重复 www.baidu.com A baidu.com NS [root@localhost ~]# queryperf -d test -s 192.168.60.10 //指定要查询的文件和要测试的DNS地址 statistics: ……………. queries per second: |
查看查询时间和统计信息;另外top看看CPU占用率100%;压力测试时打开查询日志和关闭查询日志分别看看两者速度的区别。另外dnstop软件可以监控当前DNS服务器正在有多少个查询和DNS当前状态;安装时依赖libpcap软件包。