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、内网测试
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服务器日志信息
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
以下是作者测试结果:(电脑性能弱爆了~~)
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
作者测试结果:
以上是个人关于dns服务器的一些总结,疏漏在所难免,还望指出