使用bind构建高可用智能DNS服务器.docx
- 文档编号:25322917
- 上传时间:2023-06-07
- 格式:DOCX
- 页数:14
- 大小:80.46KB
使用bind构建高可用智能DNS服务器.docx
《使用bind构建高可用智能DNS服务器.docx》由会员分享,可在线阅读,更多相关《使用bind构建高可用智能DNS服务器.docx(14页珍藏版)》请在冰豆网上搜索。
使用bind构建高可用智能DNS服务器
使用bind构建高可用智能DNS服务器
作者:
陆文举luwenju@2010-12-11
应用背景:
某远程教育公司服务器放于两个BGP机房,虽然是BGP机房,但是两个机房的电信、联通出口带宽不是太理想,一个机房电信用户访问较慢,另一个机房联通用户访问较慢。
为了提高用户体验,所以采用了智能DNS来解决这个问题。
在此构建智能DNS的出发点主要有两个,一个是利用智能DNS可以控制用户的访问流向,比如当某一个机房负载较大时,我们可以利用智能DNS将负载合理的划分到另一个机房;第二个考虑到以后业务发展需求,当以后用户较大时可以在全国各地放置服务器,然后利用智能DNS来实现CDN(目前CDN是花钱购买第三方公司的)。
目前智能DNS的实现主要有两种方式,一种是使用F5公司的BIG-IPGTM,另一种是使用bind自带的view来实现。
BIG-IPGTM是一款商业产品,功能、性能极为强大,但是由于价格昂贵,中小型企业基本不会考虑花巨资购买此产品,所以只有一些门户网站将此用于核心业务,比如XX、阿里巴巴、金山;bind是一款开源程序,利用其自带的view可轻松实现智能DNS功能,其功能、性能都很好,一台普通配置的服务器,可每秒可处理2-4千查询请求。
下面我们看一下利用bind的view功能是如何实现智能DNS的。
bind的view原理:
view在bind中被称为视图功能,我们都知道DNS最基本的功能就是响应域名的查询,然后返回该域名的地址数据。
而view和常规的DNS不同,当用户访问某个域名时,智能DNS服务器上的view会先判断一下他的IP地址,然后和内部IP表做匹配,然后再返回给用户查询请求(注:
一个区域会有多个view,每个view的配置均不相同,当用户访问一个域名时,view会根据用户IP判断此用户IP属于哪个view,然后某个view再给用户返回查询请求)
环境拓扑
一、DNS-master安装及配置
1、安装bind
#tarzxvfbind-9.6.2-P2.tar.gz
#cdbind-9.6.2-P2
#./configure--prefix=/usr/local/named--enable-threads--disable-openssl-version-check
#make&&makeinstall
2、生成rndc配置文件rndc.conf
#/usr/local/named/sbin/rndc-confgen>/usr/local/named/etc/rndc.conf
3、生成主配置文件named.conf
#cd/usr/local/named/etc/
#tail-n10rndc.conf|head-n9|sed-es/#\//g>named.conf
4、生成key,用于主从view同步验证
每个视图使用一个key,用于主从直接数据传输的认证、数据加密
#/usr/local/named/sbin/dnssec-keygen-ahmac-md5-b128-nHOSTliantong
#/usr/local/named/sbin/dnssec-keygen-ahmac-md5-b128-nHOSTdianxin
#/usr/local/named/sbin/dnssec-keygen-ahmac-md5-b128-nHOSTany
查看一下key的具体内容,其中红色部分是需要添加到bind的主配置文件
#moreKliantong.+157+35810.private
Private-key-format:
v1.2
Algorithm:
157(HMAC_MD5)
Key:
3ZVlHsAwi8ZRoyHt/g+F+Q==
Bits:
AAA=
5、新建acl
收集全国联通、电信IP地址,然后新建ACL,将搜集到IP放到对应的ACL中
#mkdir/usr/local/named/var/named
#vi/usr/local/named/var/named/liantong.acl//联通用户访问时使用的ACL,可加多个联通IP地址
aclliantong{
202.102.152.3;
};
#vi/usr/local/named/var/named/dianxin.acl//电信用户访问使用的ACL,可加多个电信IP地址
acldianxin{
202.96.209.133;
};
注:
全国各地的IP地址请自行收集,然后放到对应得acl中即可
6、设置主配置文件named.conf
我们共新建了三个view,分别是liantong、dianxin、any。
其中liantong负责为联通用户处理查询请求,dianxin负责为电信用户处理查询请求,any负责处理既不是联通用也不是电信用户的查询请求
#vi/usr/local/named/etc/named.conf
key"rndc-key"{
algorithmhmac-md5;
secret"dbR9UvR6CCFl18mf5IDgMQ==";
};
controls{
inet127.0.0.1port953
allow{127.0.0.1;}keys{"rndc-key";};
};
options{
directory"/usr/local/named/var/named";
};
logging{
channelwarning{
file"warning.log"versions3size2048k;
severitywarning;
print-categoryyes;
print-severityyes;
print-timeyes;};
channelquery{
file"query.log"versions3size2048k;
severityinfo;
print-categoryyes;
print-severityyes;
print-timeyes;};
categorydefault{warning;};
categoryqueries{query;};
};
keyliantong-key{
algorithmhmac-md5;
secret"3ZVlHsAwi8ZRoyHt/g+F+Q==";
};
keydianxin-key{
algorithmhmac-md5;
secret"7aMK+a85Tcqm7snAd99Vaw==";
};
keyany-key{
algorithmhmac-md5;
secret"cX66/6wxsGl7xBKW4rFVKg==";
};
include"/usr/local/named/var/named/liantong.acl";
include"/usr/local/named/var/named/dianxin.acl";
view"liantong"{
match-clients{!
keydianxin-key;!
keyany-key;keyliantong-key;liantong;};
recursionyes;
allow-transfer{keyliantong-key;};
server192.168.0.252{keysliantong-key;};
zone"."IN{
typehint;
file"named.root";
};
zone""IN{
typemaster;
file".zone";
};
};
view"dianxin"{
match-clients{!
keyliantong-key;!
keyany-key;keydianxin-key;dianxin;};
recursionyes;
allow-transfer{keydianxin-key;};
server192.168.0.252{keysliantong-key;};
zone"."IN{
typehint;
file"named.root";
};
zone""IN{
typemaster;
file".zone";
};
};
view"any"{
match-clients{!
keyliantong-key;!
keydianxin-key;keyany-key;any;};
recursionyes;
allow-transfer{keyany-key;};
server192.168.0.252{keysliantong-key;};
zone"."IN{
typehint;
file"named.root";
};
zone""IN{
typemaster;
file".zone";
};
};
注:
关于配置文件中key的书写语法我们根据自带的rndc的key语法书写去写就行,然后把key的名字改为对应名字,key内容改成我们刚才所生成key的红色部分;配置文件中include指定的是acl;
7、生成根区域配置文件
#/usr/local/named/bin/dig-tNS.>/usr/local/named/var/named/named.root
8、撰写联通、电信、any的区域文件
#vi/usr/local/named/var/named/.zone
@3600INSOA..(
5
3600
900
1209600
3600)
3600INNS.
INA192.168.0.100
blogINA192.168.0.251
#vi/usr/local/named/var/named/.zone
@3600INSOA..(
5
3600
900
1209600
3600)
3600INNS.
INA192.168.0.100
blogINA192.168.0.252
#vi/usr/local/named/var/named/.zone
@3600INSOA..(
5
3600
900
1209600
3600)
3600INNS.
INA192.168.0.100
blogINA192.168.0.250
9、启动bind
#/usr/local/named/sbin/named-c/usr/local/named/etc/named.conf
#echo"/usr/local/named/sbin/named-c/usr/local/named/etc/named.conf">>/etc/rc.local
//加入开机自动启动
二、DNS-slave安装及配置
1、安装bind
#tarzxvfbind-9.6.2-P2.tar.gz
#cdbind-9.6.2-P2
#./configure--prefix=/usr/local/named--enable-threads--disable-openssl-version-check
#make&&makeinstall
2、生成rndc配置文件rndc.conf
#/usr/local/named/sbin/rndc-confgen>/usr/local/named/etc/rndc.conf
3、生成主配置文件named.conf
#cd/usr/local/named/etc/
#tail-n10rndc.conf|head-n9|sed-es/#\//g>named.conf
4、将DNS-master服务器上的/usr/local/named/var/named整个目录拷贝到DNS-slave服务器的/usr/local/named/var目录下
5、设置主配置文件named.conf
key"rndc-key"{
algorithmhmac-md5;
secret"4CO5ZyB2818qOYVawk8plQ==";
};
controls{
inet127.0.0.1port953
allow{127.0.0.1;}keys{"rndc-key";};
};
options{
directory"/usr/local/named/var/named";
};
logging{
channelwarning{
file"warning.log"versions3size2048k;
severitywarning;
print-categoryyes;
print-severityyes;
print-timeyes;};
channelquery{
file"query.log"versions3size2048k;
severityinfo;
print-categoryyes;
print-severityyes;
print-timeyes;};
categorydefault{warning;};
categoryqueries{query;};
};
keyliantong-key{
algorithmhmac-md5;
secret"3ZVlHsAwi8ZRoyHt/g+F+Q==";
};
keydianxin-key{
algorithmhmac-md5;
secret"7aMK+a85Tcqm7snAd99Vaw==";
};
keyany-key{
algorithmhmac-md5;
secret"cX66/6wxsGl7xBKW4rFVKg==";
};
include"/usr/local/named/var/named/liantong.acl";
include"/usr/local/named/var/named/dianxin.acl";
view"liantong"{
match-clients{!
keydianxin-key;!
keyany-key;keyliantong-key;liantong;};
recursionyes;
allow-transfer{keyliantong-key;};
server192.168.0.251{keysliantong-key;};
zone"."IN{
typehint;
file"named.root";
};
zone""IN{
typeslave;
masters{192.168.0.251;};
file".zone";
};
};
view"dianxin"{
match-clients{!
keyliantong-key;!
keyany-key;keydianxin-key;dianxin;};
recursionyes;
allow-transfer{keydianxin-key;};
server192.168.0.251{keysliantong-key;};
zone"."IN{
typehint;
file"named.root";
};
zone""IN{
typeslave;
masters{192.168.0.251;};
file".zone";
};
};
view"any"{
match-clients{!
keyliantong-key;!
keydianxin-key;keyany-key;any;};
recursionyes;
allow-transfer{keyany-key;};
server192.168.0.251{keysliantong-key;};
zone"."IN{
typehint;
file"named.root";
};
zone""IN{
typeslave;
masters{192.168.0.251;};
file".zone";
};
};
6、启动bind
#/usr/local/named/sbin/named-c/usr/local/named/etc/named.conf
#echo"/usr/local/named/sbin/named-c/usr/local/named/etc/named.conf">>/etc/rc.local
三、测试
1、故障转移测试
在同一时间,两台DNS断掉任何一台都可以提供解析
2、view功能测试
找全国各地用户,然后去ping域名,看联通用户得到的解析结果是否是192.168.0.251,看电信用户得到是否是192.168.0.252
3、主从同步测试
在主服务器上添加/删除A记录,然后增大serai值,然后执行/usr/local/named/sbin/rndcreload,看从服务器是否能得到同步
4、性能压力测试
使用bind自带工具queryperf进行性能测试(在源安装目录bind-9.6.2/contrib/queryperf下)
#moretest
A
[root@DNS-masterqueryperf]#./queryperf-dtest-s192.168.0.251
DNSQueryPerformanceTestingTool
Version:
$Id:
queryperf.c,v1.122007/09/0507:
36:
04markaExp$
[Status]Processinginputdata
[Status]Sendingqueries(beginningwith192.168.0.251)
[Status]Testingcomplete
Statistics:
Parseinputfile:
once
Endeddueto:
reachingendoffile
Queriessent:
1queries
Queriescompleted:
1queries
Querieslost:
0queries
Queriesdelayed(?
):
0queries
RTTmax:
0.000567sec
RTTmin:
0.000024sec
RTTaverage:
0.000298sec
RTTstddeviation:
0.000206sec
RTToutofrange:
0queries
Percentagecompleted:
100.00%
Percentagelost:
0.00%
Startedat:
ThuDec918:
06:
502010
Finishedat:
ThuDec918:
06:
502010
Ranfor:
0.000795seconds
Queriespersecond:
3773.584906qps
可以看出,DNS服务器每秒可处理3773次查询请求
四、总结
1、确保两台DNS服务器时钟同步,如两台服务器时间相差5分钟则无法实现同步
2、虽然通过bind-view功能实现智能DNS,但在用户访问时会面临如下情况
杭州电信用户→杭州电信DNS→联通DNS->------智能DNS,将用户请求解析到联通IP上
。
那么这种情况是我们不可控制的
3、IP地址收集困难,如想更详细的做智能DNS或者CDN,需要像第三方买IP数据(比如这类公司)
4、要定时清空DNS缓存,以免当缓存中毒时被他人恶意利用
5、防火墙要开启TCP/53、UDP/53,TCP/53用于主从DNS间的数据传输,UDP/53用于用户到DNS服务器之间的查询
五、鸣谢
在做智能DNS时遇到很多问题,在此再次感谢刘宇、洪峰二位兄弟及师父sery的帮助。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 使用 bind 构建 可用 智能 DNS 服务器