设为首页收藏本站

LinuxTone | 运维专家网论坛 - 最棒的Linux运维与开源架构技术交流社区!

 找回密码
 注册

用新浪微博连接

一步搞定

QQ登录

只需一步,快速开始

查看: 15479|回复: 15

[bind] Bind dlz 测试手记 [复制链接]

LT管理团队

社区首席勤杂工

Rank: 9Rank: 9Rank: 9

签到
447
注册时间
2008-5-19
最后登录
2017-2-13
在线时间
1935 小时
阅读权限
200
积分
56305
帖子
2551
主题
1209
精华
25
UID
1

LT总司令

发表于 2009-3-2 00:36:58 |显示全部楼层
一.Bind-DLZ介绍
Bind-DLZ主页:http://bind-dlz.sourceforge.net/
Bind-DLZ发布软件的频率跟不上Bind9,新版本的Bind9不被官方的Bind-DLZ支持,因此有人做了跟进。
DLZ(Dynamically Loadable Zones)与传统的BIND9不同,BIND的不足之处:
  • BIND从文本文件中获取数据,这样容易因为编辑错误出现问题。
  • BIND需要将数据加载到内存中,如果域或者记录较多,会消耗大量的内存。
  • BIND启动时解析Zone文件,对于一个记录较多的DNS来说,会耽误更多的时间。
  • 如果近修改一条记录,那么要重新加载或者重启BIND才能生效,那么需要时间,可能会影响客户端查询。

二.安装配置Bind-DLZ
#mkidr /usr/local/src/bind
#cd /usr/local/src/bind
#wget http://ftp.isc.org/isc/bind9/9.6.0-P1/bind-9.6.0-P1.tar.gz
#tar zxvf bind-9.6.0-P1.tar.gz
#cd bind-9.6.0-P1
1.编译安装
  1. ./configure --with-dlz-mysql --enable-largefile --enable-threads=no --prefix=/usr/local/bind
  2. make && make install
复制代码
:采用mysql做后台数据库,千万不能用?enable-threads选项启用多线程,网上有一些朋友使用mysql做后台,谈到bind会莫名中断服务,大部分都是因为打开了多线程。
2.创建相关配置文件
  1. cd /usr/local/bind/etc/
  2. ../sbin/rndc-confgen >rndc.conf
  3. tail -n10 rndc.conf | head -n9 | sed -e s/#\//g >named.conf
复制代码
vi localhost.zone
ttl 86400
  1. @ IN SOA localhost. root.localhost. (
  2. 1997022700 ; Serial
  3. 28800 ; Refresh
  4. 14400 ; Retry
  5. 3600000 ; Expire
  6. 86400 ) ; Minimum
  7. IN NS localhost.
  8. 1 IN PTR localhost.
复制代码
dig > named.root

3.在named.conf中添加DLZ相关的设置
#vi named.conf //在后面添加如下
dlz "Mysql zone" {
   database "mysql
   {host=127.0.0.1 dbname=dns ssl=false port=3306 user=root pass= }      //数据库相关连接账号,注意填写正确.
   {select zone from dns_records where zone = '%zone%' limit 1}
   {select ttl, type, mx_priority, case when lower(type)='txt' then concat('\"', data, '\"')
        else data end from dns_records where zone = '%zone%' and host = '%record%'
        and not (type = 'SOA' or type = 'NS')}
   {select ttl, type, mx_priority, data, resp_person, serial, refresh, retry, expire, minimum
        from dns_records where zone = '%zone%' and (type = 'SOA' or type='NS')}
   {select ttl, type, host, mx_priority, data, resp_person, serial, refresh, retry, expire,
        minimum from dns_records where zone = '%zone%' and not (type = 'SOA' or type = 'NS')}
   {select zone from xfr_table where zone = '%zone%' and client = '%client%'}
   {update data_count set count = count + 1 where zone ='%zone%'}";
};

4. 创建DNS数据库
  1. CREATE DATABASE dns;
复制代码
建一个表dns_records
  1. use dns;
  2. DROP TABLE IF EXISTS `dns_records`;
  3. CREATE TABLE `dns_records` (
  4.   `id` int(10) unsigned NOT NULL auto_increment,
  5.   `zone` varchar(255) NOT NULL,
  6.   `host` varchar(255) NOT NULL default '@',
  7.   `type` enum('MX','CNAME','NS','SOA','A') NOT NULL,
  8.   `data` varchar(255) default NULL,
  9.   `ttl` int(11) NOT NULL default '800',
  10.   `mx_priority` varchar(255) default NULL,
  11.   `refresh` int(11) default NULL,
  12.   `retry` int(11) default NULL,
  13.   `expire` int(11) default NULL,
  14.   `minimum` int(11) default NULL,
  15.   `serial` bigint(20) default NULL,
  16.   `resp_person` varchar(255) default NULL,
  17.   `primary_ns` varchar(255) default NULL,
  18.   PRIMARY KEY  (`id`),
  19.   KEY `id` (`id`),
  20.   KEY `type` (`type`),
  21.   KEY `host` (`host`),
  22.   KEY `zone` (`zone`)
  23. ) ENGINE=MyISAM AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;
复制代码
5.在在终端启动调试bind服务
[root@lemp ~]# /usr/local/bind/sbin/named -uroot -g -d 1
/usr/local/bind/sbin/named: error while loading shared libraries: libmysqlclient.so.16 //出错

#ln -s /usr/local/mysql/lib/mysql/libmysqlclient.so.16 /usr/lib/  //建立链链接即可.
#ldconfig

# /usr/local/bind/sbin/named -uroot -g -d 1  //无报错信息,继续如下.

三.添加相关记录并进行测试.
1.#zone anlegen:

--soa
  1. INSERT INTO dns_records (zone,host,type,serial,refresh,retry,expire,minimum,primary_ns,resp_person)
  2. VALUES ('linuxtone.org', '@', 'SOA', 2009030200, 172800, 800, 1209600, 3600 , 'ns1.linuxtone.org', 'root.linuxtone.org.');
复制代码
--linuxtone.org redirection for any host to linuxtone.org.
  1. INSERT INTO dns_records (zone,host,type,DATA)
  2. VALUES ('linuxtone.org', '*', 'CNAME', 'linuxtone.org.');
复制代码
--nameserver for zone
  1. INSERT INTO dns_records (zone,host,type,DATA)
  2. VALUES ('linuxtone.org', '@', 'NS', 'ns1.linuxtone.org.');
复制代码
--toplevel-ip-address of zone itself
  1. INSERT INTO dns_records (zone,host,type,DATA)
  2. VALUES ('linuxtone.org', '@', 'A', '192.168.0.103');
复制代码
2.#host anlegen:
--ip nameserver (resp_person can be NULL)
  1. INSERT INTO dns_records (zone,host,type,DATA,resp_person)
  2. VALUES ('linuxtone.org', 'ns1', 'A', '192.168.0.103', 'root.linuxtone.org.');
复制代码
A:www.linuxtone.org
  1. INSERT INTO dns_records (zone,host,type,DATA)
  2. VALUES ('linuxtone.org', 'www', 'A', '192.168.0.108');
复制代码
A:bbs.linuxtone.org
  1. INSERT INTO dns_records (zone,host,type,DATA)
  2. VALUES ('linuxtone.org', 'bbs', 'A', '192.168.0.109');
复制代码
3.#host alias anlegen:
--ns2 directs to ns1
  1. INSERT INTO dns_records (zone,host,type,DATA,resp_person)
  2. VALUES ('linuxtone.org', 'ns2', 'CNAME', 'ns1.linuxtone.org.', 'root.linuxtone.org.');
复制代码
alias:man.linuxtone.org cname www
  1. INSERT INTO dns_records (zone,host,type,DATA)
  2. VALUES ('linuxtone.org', 'man', 'CNAME', 'www');
复制代码
alias: host.linuxton.org cname bbs
  1. INSERT INTO dns_records (zone,host,type,DATA)
  2. VALUES ('linuxtone.org', 'host', 'CNAME', 'bbs.linuxtone.org.');
复制代码
4.#mailserver anlegen:
--ns2 directs to ns1
  1. INSERT INTO dns_records (zone,host,type,DATA,mx_priority, resp_person)
  2. VALUES ('linuxtone.org', '*', 'MX', 'mail.linuxtone.org.', '80', 'root.linuxtone.org.');
复制代码
四.相关表结构及bind查询测试.
1.表结构:


2.查询测试(增加记录实时生效,再也不要像以前一样重启相关配置文件了.)


附:
我的表结构和相关数据:{请下载}
named.conf配置文件:

四.启动脚本(增加named进程数,提高性能!)
1.创建多个named.conf配置文件
  1. for i in `seq 1 8`
  2. do
  3. cp named.conf named1$i.conf
  4. done
复制代码


2.启动脚本
[root@lemp etc]# vi /etc/init.d/named
#!/bin/bash
# named a network name service.
# chkconfig: 345 35 75
# description: a name server
# http://www.linuxtone.org

if [ `id -u` -ne 0 ]
then
echo "ERROR:For bind to port 53,must run as root."
exit 1
fi
case "$1" in
start)
if [ -x /usr/local/bind/sbin/named ]; then
for i in `seq 1 8`
do
/usr/local/bind/sbin/named -c /usr/local/bind/etc/named1$i.conf -u root
echo "BIND9-named1$i server started"
done
fi
;;
stop)
kill `cat /usr/local/bind/var/named.pid` && echo . && echo 'BIND9 server stopped'
;;
restart)
echo .
echo "Restart BIND9 server"
$0 stop
sleep 10
$0 start
;;
reload)
/usr/local/bind/sbin/rndc reload
;;
status)
/usr/local/bind/sbin/rndc status
;;
*)
echo "$0 start | stop | restart |reload |status"
;;
esac
附件: 你需要登录才可以下载或查看附件。没有帐号?注册
<-sina_sign,1762622645,2a5b1a59,10->感谢大家对linuxtone的支持!</strong>

LT管理团队

社区首席勤杂工

Rank: 9Rank: 9Rank: 9

注册时间
2008-5-19
最后登录
2017-2-13
在线时间
1935 小时
阅读权限
200
积分
56305
帖子
2551
主题
1209
精华
25
UID
1

LT总司令

发表于 2009-3-2 00:39:08 |显示全部楼层
哈哈,周末了!喝了一点咖啡,睡不着.今天测试就到这里.下一个目标:
1.实现bind+dlz+mysql+view,实现智能DNS相关功能.
2.编写PHP管理页面.方便对记录进行(添加,删除,修改)等操作.
<-sina_sign,1762622645,2a5b1a59,10->感谢大家对linuxtone的支持!</strong>

使用道具 举报

LT管理团队

论坛广告杀手

Rank: 9Rank: 9Rank: 9

注册时间
2008-11-27
最后登录
2015-3-17
在线时间
171 小时
阅读权限
200
积分
7834
帖子
416
主题
66
精华
4
UID
628
发表于 2009-3-2 09:33:05 |显示全部楼层
好文 学习中

使用道具 举报

LT管理团队

向Linuxsir的哈密瓜大哥看齐 ...

Rank: 9Rank: 9Rank: 9

注册时间
2008-6-5
最后登录
2017-5-18
在线时间
1828 小时
阅读权限
200
积分
63568
帖子
715
主题
199
精华
4
UID
46

LT同学

发表于 2009-3-2 09:50:20 |显示全部楼层
强文,学习……
哈密瓜!一个热爱linux的水果!
gtalk/msn:hamgua@gmail.com
sina微博:http://weibo.com/hamgua
LTmail:hamgua@linuxtone.org
是雄鹰就有展翅飞翔的时候,不是雄鹰要制造展翅飞翔的时候!

使用道具 举报

LT管理团队

守住每一天

Rank: 9Rank: 9Rank: 9

注册时间
2008-5-30
最后登录
2017-3-31
在线时间
790 小时
阅读权限
200
积分
68280
帖子
1399
主题
190
精华
10
UID
31
发表于 2009-3-2 11:51:47 |显示全部楼层
顶。学习了哈。
<-sina_sign,1054764633,7->

使用道具 举报

LT管理团队

社区首席勤杂工

Rank: 9Rank: 9Rank: 9

注册时间
2008-5-19
最后登录
2017-2-13
在线时间
1935 小时
阅读权限
200
积分
56305
帖子
2551
主题
1209
精华
25
UID
1

LT总司令

发表于 2009-3-2 21:32:13 |显示全部楼层
更新了一下数据库表结构,添加创建ZONE和添加A记录,CNAME,MX相关SQL语句,启动脚本及性能相关的要素.
&amp;lt;-sina_sign,1762622645,2a5b1a59,10-&amp;gt;感谢大家对linuxtone的支持!&amp;lt;/strong&amp;gt;

使用道具 举报

Rank: 4

注册时间
2009-1-18
最后登录
2011-4-29
在线时间
306 小时
阅读权限
50
积分
1398
帖子
503
主题
41
精华
4
UID
1049

LT同学

发表于 2009-3-3 13:14:32 |显示全部楼层
看了一下,大概是用MYSQL表而不是配置文件来存储记录.

使用道具 举报

Rank: 1

注册时间
2009-7-7
最后登录
2009-7-7
在线时间
0 小时
阅读权限
1
积分
1
帖子
2
主题
0
精华
0
UID
4069
发表于 2009-7-7 13:37:57 |显示全部楼层
四.启动脚本(增加named进程数,提高性能!)
1.创建多个named.conf配置文件

   1. for i in `seq 1 8`
   2. do
   3. cp named.conf named1$i.conf
   4. done

复制代码
2.启动脚本
[root@lemp etc]# vi /etc/init.d/named
#!/bin/bash
# named a network name service.
# chkconfig: 345 35 75
# description: a name server
# http://www.linuxtone.org

if [ `id -u` -ne 0 ]
then
echo "ERROR:For bind to port 53,must run as root."
exit 1
fi
case "$1" in
start)
if [ -x /usr/local/bind/sbin/named ]; then
for i in `seq 1 8`
do
/usr/local/bind/sbin/named -c /usr/local/bind/etc/named1$i.conf -u root
echo "BIND9-named1$i server started"
done
fi
;;
stop)
kill `cat /usr/local/bind/var/named.pid` && echo . && echo 'BIND9 server stopped'
;;
restart)
echo .
echo "Restart BIND9 server"
$0 stop
sleep 10
$0 start
;;
reload)
/usr/local/bind/sbin/rndc reload
;;
status)
/usr/local/bind/sbin/rndc status
;;
*)
echo "$0 start | stop | restart |reload |status"
;;
esac





lz  同时开启几个进程能够真的能够增加性能? 如果这样还不如直接用多线程   不知道你测试过没有

使用道具 举报

Rank: 9Rank: 9Rank: 9

注册时间
2008-8-26
最后登录
2011-9-23
在线时间
207 小时
阅读权限
200
积分
583
帖子
165
主题
31
精华
2
UID
227

LT粉丝

发表于 2009-7-7 14:39:59 |显示全部楼层
顶,太强了,一晚上就弄出来了

使用道具 举报

Rank: 1

注册时间
2009-7-7
最后登录
2009-7-7
在线时间
0 小时
阅读权限
1
积分
1
帖子
2
主题
0
精华
0
UID
4069
发表于 2009-7-7 16:37:45 |显示全部楼层
刚才在我的bind 9.5 上面测试了一下, 只能够同时有一个链接。 不知道是不是我们的bind配置的时候就不一样。


错误信息
说是连接数据库的时候不行。 我是用的同一个用户名访问数据库

使用道具 举报

Rank: 1

注册时间
2009-10-15
最后登录
2010-9-10
在线时间
5 小时
阅读权限
1
积分
5
帖子
6
主题
0
精华
0
UID
5913
发表于 2009-10-16 15:31:44 |显示全部楼层
本帖最后由 zerofirst 于 2009-10-16 15:35 编辑

测试了下,配置加载速度还是很不错的。
使用queryperf工具测试了下,在大量请求情况下,效率不是很高

使用道具 举报

Rank: 6Rank: 6

注册时间
2011-3-16
最后登录
2015-2-27
在线时间
38 小时
阅读权限
70
积分
8780
帖子
99
主题
5
精华
0
UID
12399
发表于 2012-10-25 16:11:56 |显示全部楼层
你好!请问有没有测试过dns主从结构中 master是bind-dlz+mysql而slave是普通的文件方式 ?这种方式是否可行

使用道具 举报

Rank: 8Rank: 8

注册时间
2009-11-16
最后登录
2017-6-9
在线时间
37 小时
阅读权限
90
积分
20928
帖子
96
主题
5
精华
0
UID
6659
发表于 2012-10-29 11:30:22 |显示全部楼层
图挂了?

使用道具 举报

Rank: 8Rank: 8

注册时间
2010-7-13
最后登录
2015-10-26
在线时间
77 小时
阅读权限
90
积分
14383
帖子
71
主题
19
精华
0
UID
9798
发表于 2012-11-6 14:35:37 |显示全部楼层
冒昧问一下,你的bind安装包明显不是bind-dlz的啊?!!是bind+mysql安装啊~~,?!

使用道具 举报

Rank: 4

注册时间
2012-5-8
最后登录
2012-12-11
在线时间
6 小时
阅读权限
50
积分
1277
帖子
14
主题
5
精华
0
UID
19969
发表于 2012-11-18 11:26:24 |显示全部楼层
我测试了,解析非常慢

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

IT运维专家网感谢您的支持

合作联系: QQ:67888954/MSN:cnseek@msn.com/mail:netseek@linuxtone.org

Archiver|手机版|感谢所有关心和支持过LinuxTone的朋友们 转载本站内容请注明原作者名及出处 ( 京ICP备08103151 )   |

GMT+8, 2017-6-25 01:22 , Processed in 0.031696 second(s), 11 queries , Apc On.

Powered by Discuz! X2

© 2001-2011 Comsenz Inc.

回顶部