美文网首页Linux网络资源树莓派
2018-06-09 智能DNS、编译安装bind、压力测试

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

作者: 阿丧小威 | 来源:发表于2018-06-09 16:44 被阅读27次

    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个请求。
    

    相关文章

      网友评论

        本文标题:2018-06-09 智能DNS、编译安装bind、压力测试

        本文链接:https://www.haomeiwen.com/subject/kypteftx.html