|
dns智能及日志系统
本篇博客将介绍如何制作智能DNS,如何在dns服务器中添加日志系统,以及如何使用queryperf和dnstop进行dns压力测试
智能DNS:DNS服务器能够根据客户端来源所属的网络进行判断,并且返回一个事先定义好的IP地址的机制
智能DNS的应用:例如唯品会中的商品库存,每个用户所看到的商品商品库存都是本区域中的商品库存,不同区域的用户所看到的商品库存是不一样的。
说明:
本实验操作均在VMware10上实现(Redhat Enterprise Linux 5.8),并假设有两片区域的用户(内网用户,外网用户),这里使用inside表示内网区域,outside表示外网用户,由于主机限制,未能实现分区演示,主机中有多快网卡的朋友可以修改不同的IP进行测试, 这里仅测试了内网操作。
1、编辑dns主配置文件
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
| 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、添加数据记录文件
1
2
3
4
5
6
7
8
9
10
11
12
13
14
| 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
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
| 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服务
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、编辑主配置文件
1
2
3
4
5
6
7
8
9
10
11
12
| 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、为日志文件创建目录
1
2
3
| mkdir /var/log/named
chown named:named /var/log/named
chmod 770 /var/log/named
|
3、在从dns服务器上执行区域同步命令
1
| 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
1
2
3
4
5
6
7
8
9
| 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进行测试
1
2
3
4
5
6
7
8
| 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
1
2
3
4
5
6
7
| 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服务器中
1
2
| scp test 192.168.134.22:/root/
scp /bin/queryperf 192.168.134.22:/bin/
|
接着在主dns服务器中执行dnstop命令
接着在从dns服务器中执行queryperf命令:
1
| queryperf -d test -s 192.168.134.2
|
作者测试结果:
以上是个人关于dns服务器的一些总结,疏漏在所难免,还望指出
|
|