dns智能及日志系统


    本篇博客将介绍如何制作智能DNS,如何在dns服务器中添加日志系统,以及如何使用queryperf和dnstop进行dns压力测试


智能DNS:DNS服务器能够根据客户端来源所属的网络进行判断,并且返回一个事先定义好的IP地址的机制 


智能DNS的应用:例如唯品会中的商品库存,每个用户所看到的商品商品库存都是本区域中的商品库存,不同区域的用户所看到的商品库存是不一样的。


说明:

    本实验操作均在VMware10上实现(Redhat Enterprise Linux 5.8),并假设有两片区域的用户(内网用户,外网用户),这里使用inside表示内网区域,outside表示外网用户,由于主机限制,未能实现分区演示,主机中有多快网卡的朋友可以修改不同的IP进行测试, 这里仅测试了内网操作。


1、编辑dns主配置文件

    vim /etc/named.conf
    # 编辑完成后的内容如下:
        acl innet {
                127.0.0.0/8;
                192.168.134.0/24;
        };
        
        options {
                directory "/var/named";
                allow-recursion { innet; };
        };
        
        view inside {
                match-clients { innet; };
                zone "tb.com" IN {
                        type master;
                        file "inside.tb.com.zone";
                };  
        };
        
        view outside {
                match-clients { any; };
                zone "tb.com" IN {
                        type master;
                        file "outside.tb.com.zone";
                };  
        };

    

2、添加数据记录文件

    vim inside.tb.com.zone 
    # 编辑资源记录如下:
        $TTL 43200
        @       IN      SOA     ns1.tb.com.     admin.tb.com. (
                                        2016052801
                                        1H  
                                        10M 
                                        7D  
                                        1D )
                        IN      NS      ns1 
                        IN      MX  10  mail
        ns1             IN      A       192.168.134.2
        mail            IN      A       192.168.134.4
        www             IN      A       192.168.134.3
    vim outside.tb.com.zone 
    # 编辑资源记录如下:
        $TTL 43200
        @       IN      SOA     ns1.tb.com.     admin.tb.com. (
                                        2013052801
                                        1H  
                                        10M 
                                        7D  
                                        1D )
                        IN      NS      ns1 
                        IN      MX  10  mail
        ns1             IN      A       192.168.134.2
        mail            IN      A       172.16.0.4
        www             IN      A       172.16.0.3

    

3、重启dns服务

    service named restart

4、内网测试

wKiom1dMGCmQeFh7AAH5sAREvP4633.jpg-wh_50


5、采用bind提供的弹性日志系统为dns服务器添加日志

本次操作需要主dns服务器与从dns服务器一同完成,主从dns服务器的配置参见作者上一篇博客,

这里主dns服务器的IP设置为:192.168.134.2,从dns服务器的IP设置为:192.168.134.22


简单说明:一般查询日志和安全日志不开启,信息量太大;而与更新相关的日志应该开启

    channel: 定义日志存储位置

        syslog:/var/log/messages

        file: 自定义保存日志信息的文件

        severity: critical error warning notice info(default) debug [level] dynamic

    category: 定义记录的日志类别(15种类别),定义日志源

        default,general,client,config,dispatch,dnssec,lame-servers,lame-servers

        network,notify,queries,resolver,security,update,xfer-in,xfer-out

    关系    

        channel:category 1:1

        category:channel 1:n

     即:同一日志源的日志信息可以记录在多个文件中,一个文件只能记录一个日志源的日志信息


    下面仅演示添加区域传输的日志记录,需要添加其它日志的可参照下述操作自行添加


    1、编辑主配置文件

    vim /etc/named.conf
    # 添加以下内容:
    logging {
            channel xfer-log {
                    file "/var/log/named/transfer.log" versions 3 size 10k;
                    severity dynamic;
                    print-time yes;
                    print-severity yes;
            };
    
            category xfer-out { xfer-log; };
    };


    2、为日志文件创建目录

    mkdir /var/log/named
    chown named:named /var/log/named
    chmod 770 /var/log/named

    

    3、在从dns服务器上执行区域同步命令

    dig -t axfr tb.com @192.168.134.2


    4、查看主dns服务器日志信息

    

wKiom1dMJFuRW6NAAAEIxutvqsk026.jpg


6、dns压力测试

1)通过queryperf测试(以下操作在主dns服务器中进行)

说明:bind97以后的包中都有queryperf,但是rpm在编译时未编译queryperf,因此使用queryperf需要自行下载bind97压缩包并自行安装。作者这里使用的是bind-9.7.4.tar.gz

    1、安装queryperf

    cd
    tar xf bind-9.7.4.tar.gz 
    cd bind-9.7.4
    cd contrib/
    cd queryperf
    ./configure
    make
    cp queryperf /bin/
    queryperf -h # 查看queryperf使用帮助


    2、使用queryperf进行测试

    cd
    vim test # 编辑需要查询的记录
    # 输入格式示例(通过复制黏贴的方式多添加些记录用于测试-10w左右):
        tb.com NS
        www.tb.com A
        mail.tb.com A
        ns1.tb.com A
    queryperf -d test -s 192.168.134.2

    以下是作者测试结果:(电脑性能弱爆了~~)

wKiom1dMKFnRminwAAJibmt_HCM175.jpg-wh_50

2)通过dnstop进行抓包测试

同样,系统自身并没dnstop,这里需要自行安装dnstop,作者这里使用的是dnstop-20110502.gz

简单说明:

    dnstop -4 -Q -R eth0

        -4:抓取IPv4的包

        -Q:记录查询数

        -R:记录响应数

        eth0:指定网卡


    dnstop的使用请使用man dnstop自行查看


    1、安装dnstop

    cd
    tar xf dnstop-20110502.gz
    yum install libcap-devel -y
    yum -y install libpcap-devel
    .configure
    make
    make install

    2、使用dnstop进行测试

    首先将test文件及queryperf二进制程序复制到从dns服务器中

    scp test 192.168.134.22:/root/
    scp /bin/queryperf 192.168.134.22:/bin/


     接着在主dns服务器中执行dnstop命令

    dnstop -4 -Q -R eth0


    接着在从dns服务器中执行queryperf命令:

    queryperf -d test -s 192.168.134.2

    

    作者测试结果:

wKiom1dMMKCybsmOAAB8tKdNIoU838.jpg-wh_50

    

    以上是个人关于dns服务器的一些总结,疏漏在所难免,还望指出