2018-06-09 智能DNS、编译安装bind、压力测试

1、智能DNS的实现

所谓智能DNS就是让不同地区的客户端访问网站时能将就近网站的IP地址反馈到客户端,这样可以增加客户端的访问速度,比如beijing的客户去访问[www.magdu.com](https://link.jianshu.com/?t=http://www.magdu.com)网站反馈一个ip地址,henan的客户访问这个网站时反馈另外一个ip地址,实现过程如下:
在centos7上的操作
1、vim /etc/named.conf
acl beijing {                            
            192.168.25.226/24;   ---北京客户的地址
};
acl henan {
                172.18.21.106/16;  ---河南客户的地址
};
view bjview {
        match-clients {beijing;};  ---如果匹配北京的地址
        zone "magedu.com"{     ---定义区域解析库,也可以将这个内容写到/etc/named.rfc1912.zones中,将下面三行的内容换为include "/etc/named.rfc1912.zones.bj"
        type master;
        file "magedu.com.bj";   ---就走这个区域解析库文件
};
};
view hnview {
        match-clients {henan;};
        zone "magedu.com"{
        type master;
        file "magedu.com.hn";
};
include "/etc/named.rfc1912.zones";   这个文件中也可以定义其他的域,那么如果河南的客户去访问这个文件中定义的其他域,就会解析解析库文件中定义的相应地址
};
view otherview {           ---这个view是兜底用的,如果不是来自这两个地址的客户,就反馈给北京的地址
        match-clients {any;};
 zone "magedu.com"{
        type master;
        file "magedu.com.bj";
};
};
2、 vim /var/named/magedu.com.bj
$TTL 1D
@       IN SOA  dns1 admins.magedu.com. (
                                        66      ; serial
                                        1D      ; refresh
                                        1H      ; retry
                                        1W      ; expire
                                        3H )    ; minimum
                NS      dns1
dns1            A       172.18.21.107
websrv          A       192.168.25.226
www             CNAME   websrv
vim /var/named/magedu.com.hn
$TTL 1D
@       IN SOA  dns1 admins.magedu.com. (
                                        68      ; serial
                                        1D      ; refresh
                                        1H      ; retry
                                        1W      ; expire
                                        3H )    ; minimum
                NS      dns1
dns1            A       172.18.21.107
websrv          A       172.18.21.106
www             CNAME   websrv
3、测试
在centos6.9上操作,有两个ip地址,分别是定义的beijing和henan的客户地址
dig www.magedu.com @192.168.25.21   ---相当于是用我的192.168.21.226地址去访问这个dns服务器
dig www.magedu.com @172.18.21.107

总结
1、view(视图),一个bind服务器可定义多个view,每个view中可定义一个或多个zone.
2、每个view用来匹配一组客户端地址段
3、多个view内可能需要对同一个区域进行解析,但使用不同的区域解析库文件
4、 一旦启用了view,所有的zone都只能定义在view中
5、 仅在允许递归请求的客户端所在view中定义根区域
6、 客户端请求到达时,是自上而下检查每个view所服务的客户端列表

2、编译安装bind

1、安装开发包组、创建named账号
 yum groupinstall " Development Tools"
 useradd -r -m -d /var/named -s /sbin/nologin named
2、执行configure脚本并安装
 ./configure --prefix=/app/bind9 --without-openssl
 make && make install
3、将别的主机的named.ca文件拷贝到本主机
scp /var/named/named.ca 172.18.21.7:/app/bind9/etc/
chgrp named named.ca 
4、vim /etc/profile.d/env.sh 
export PATH=/app/bind9/sbin:/app/bind9/bin:$PATH
5、 编写named.conf文件
vim /app/bind9/etc/named.conf  
options {
 directory       "/var/named";
};
zone "test.com"{
        type master;
        file "test.com.zone";
};
zone "."{
        type hint;
        file "named.ca";
};
6、编写区域解析库文件
vim /var/named/test.com.zone 
$TTL 1D
@   IN   SOA dns1 admins.test.com ( 1 1d 1h 1w 1d )
                NS dns1
dns1    A       172.18.21.7
www     A       8.8.8.8
7、加添man 帮助的路径 
8、开启服务
named -u named -g -f -d 3 --- -u谁来开启服务,-f前段运行,-g前段运行并显示标准错误,有助于排错,-d是debug级别,级别越高,显示的信息越详细
  9、测试
dig www.test.com @172.18.21.7

安装rndc工具

1、生成rndc.conf文件
 rndc-confgen -r /dev/urandom >/app/bind9/etc/rndc.conf
cat /app/bind9/etc/rndc.conf
# Start of rndc.conf
key "rndc-key" {
    algorithm hmac-md5;
    secret "h5c6Wu39YsRht3YzwoK2MA==";
};

options {
    default-key "rndc-key";
    default-server 127.0.0.1;
    default-port 953;
};
# End of rndc.conf

# Use with the following in named.conf, adjusting the allow list as needed:
# key "rndc-key" {
#   algorithm hmac-md5;
#   secret "h5c6Wu39YsRht3YzwoK2MA==";
# };
# 
# controls {
#   inet 127.0.0.1 port 953
#       allow { 127.0.0.1; } keys { "rndc-key"; };
# };
# End of named.conf
这个文件相当于生成两把钥匙,分别放在这个文件和下面的文件中,使sync这个命令能够控制dns。
2、编辑named.conf文件,将上面文件中的# key "rndc-key" {行 至# End of named.conf行添加到文件中
vim /app/bind9/etc/named.conf 
options {
 directory       "/var/named";
};
zone "test.com"{
        type master;
        file "test.com.zone";
};
zone "."{
        type hint;
        file "named.ca";
};
# Use with the following in named.conf, adjusting the allow list as needed:
 key "rndc-key" {
        algorithm hmac-md5;
        secret "h5c6Wu39YsRht3YzwoK2MA==";
 };
 
 controls {
        inet 127.0.0.1 port 953
                allow { 127.0.0.1; } keys { "rndc-key"; };
 };
# End of named.conf
3、测试
rndc status  ---发现rndc命令已经可以使用了。

3、压力测试

压力测试的目的是测试某个dns服务器的性能,查看一下这个服务器一秒钟可以并发处理多少个用户的请求。dns的压力测试工具是queryperf,这个工具也需要编译安装,过程如下

1、编译安装
cd /app/bind-9.11.2/contrib/queryperf/  
./configure 
make
cp -a queryperf /app/bind9/bin/   --移动到PATH变量的路径下
2、测试
vim test.txt   ---创建一个文件,比如解析www.test.com的A记录
www.test.com A
这个文件要尽量的大才能测出来,也就是多复制几行,实验时复制了38万行。这样才能模拟并发处理多少个操作
开启服务
在另外一个终端输入如下面命令
queryperf -d test.txt -s 127.0.0.1  ---s指定测哪个主机,实验时测的本主机
DNS Query Performance Testing Tool
Version: $Id: queryperf.c,v 1.12 2007/09/05 07:36:04 marka Exp $

[Status] Processing input data
[Status] Sending queries (beginning with 127.0.0.1)
[Status] Testing complete

Statistics:

  Parse input file:     once
  Ended due to:         reaching end of file

  Queries sent:         377856 queries
  Queries completed:    377856 queries
  Queries lost:         0 queries
  Queries delayed(?):   0 queries

  RTT max:          0.085477 sec
  RTT min:              0.000586 sec
  RTT average:          0.007314 sec
  RTT std deviation:    0.011023 sec
  RTT out of range:     0 queries

  Percentage completed: 100.00%
  Percentage lost:        0.00%

  Started at:           Thu Sep 21 23:13:33 2017
  Finished at:          Thu Sep 21 23:15:52 2017
  Ran for:              138.438754 seconds

  Queries per second:   2729.409136 qps   ---可以看出一秒钟能并发处理2729个请求。
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,293评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,604评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,958评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,729评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,719评论 5 366
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,630评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,000评论 3 397
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,665评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,909评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,646评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,726评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,400评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,986评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,959评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,197评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 44,996评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,481评论 2 342

推荐阅读更多精彩内容

  • 1. 概述 在网络环境中一般用户只需要在浏览器中输入url如www.sunny.com就可以到对应服务器获取相应的...
    ghbsunny阅读 2,865评论 0 7
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,594评论 18 139
  • 一、BIND是什么 BIND是互联网应用最为广泛的DNS软件。 二、BIND的安装与使用 以下内容转自 http:...
    0_0啊阅读 3,064评论 0 0
  • 1、智能DNS的实现 所谓智能DNS就是让不同地区的客户端访问网站时能将就近网站的IP地址反馈到客户端,这样可以增...
    张大志的博客阅读 843评论 0 3
  • 我的公公宋庆诗,是我非常尊敬的一个男人。 我一直想记录一下他的故事,好让我的孩子们长大也能记得爷爷的故事。(以下我...
    SwallowT阅读 426评论 11 10