部分配置
配置文件name.conf
logging {
channel query_log {
file "/byread/logs/bind/query.log" versions 3 size 20m;
severity info;
print-time yes;
print-category yes;
};
category queries {
query_log;
};
include "/byread/bin/bind/etc/cmcc.ip";
include "/byread/bin/bind/etc/tel.ip";
include "/byread/bin/bind/etc/cnc.ip";
include "/byread/bin/bind/etc/view.conf";
[root@dns_telecom etc]# more cmcc.ip
acl "cmcc" {
36.128.0.0/10;
111.0.0.0/10;
112.0.0.0/10;
117.128.0.0/10;
120.192.0.0/10;
121.36.0.0/16;
121.37.0.0/16;
183.192.0.0/10;
202.0.176.0/22;
202.70.0.0/19;
203.86.0.0/19;
203.128.96.0/19;
211.103.0.0/17;
211.136.0.0/14;
211.140.0.0/15;
211.142.0.0/17;
211.142.128.0/17;
211.143.0.0/16;
218.200.0.0/14;
218.204.0.0/15;
218.206.0.0/15;
220.231.128.0/17;
221.130.0.0/15;
221.176.0.0/13;
223.64.0.0/10;
};
[root@dns_telecom etc]# more view.conf
view "cmcc_view" {
match-clients { cmcc; };
allow-query-cache { any; };
allow-recursion { any; };
allow-transfer { none; };
recursion yes;
dlz "Mysql zone" {
database "mysql
{host=****** dbname=****** ssl=false port=****** user=****** pass=****** }
{select zone from dns_records where (( host='@' and zone = '$zone$' ) or (host!='@' and type='NS' and concat(host,'.',zone)='$zone$' )) and view='cmcc' limit 1}
{select ttl, type, mx_priority, case when lower(type)='txt' then concat('\"', data, '\"') else data end as data from dns_records where zone = '$zone$' and host = '$record$' and view='cmcc' and type <> 'NS' and type <> 'SOA'}
{select ttl, type, data, resp_person, serial, refresh, retry, expire, minimum from dns_records where ((host = '@' and zone = '$zone$') OR (host != '@' and concat(host,'.',zone) = '$zone$')) and (type = 'SOA' OR type='NS') order by typ
e='SOA' desc}
{select ttl, type, host, mx_priority, case when lower(type)='txt' then concat('\"', data, '\"') else data end as data, resp_person, serial, refresh, retry, expire, minimum from dns_records where zone = '$zone$' and view='cmcc' and typ
e <> 'NS' and type <> 'SOA'}
{select zone from xfr_table where zone = '$zone$' and client = '$client$' and view='cmcc' limit 1}
{update data_count set count = count + 1 where zone ='$zone$' and view='cmcc'}";
};
};
dns_records表记录
INSERT INTO `dns_records` VALUES
(27,'client.byread.com','@','A','61.155.8.68',3600,'tel','',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'2011-03-17 11:13:06','1'),
(28,'client.byread.com','@','A','111.1.37.147',3600,'cmcc','',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'2011-03-17 11:14:27','1'),
(29,'client.byread.com','@','A','122.192.36.71',3600,'cnc','',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'2011-03-17 11:14:38','1'),
(30,'client.byread.com','sukai','A','61.155.8.68',3600,'tel','',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'2011-03-15 14:50:46','1'),
(31,'client.byread.com','sukai','A','111.1.37.147',3600,'cmcc','',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'2011-03-15 14:51:01','1'),
(32,'client.byread.com','sukai','A','122.192.36.71',3600,'cnc','',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'2011-03-15 14:51:32','1'),
(34,'client.byread.com','@','NS','ns.client.byread.com.',3600,'tel','',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'2011-03-18 15:45:45','1'),
(35,'client.byread.com','ns','A','61.155.236.134',3600,'tel','',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'2011-03-18 15:45:57','1'),
(36,'client.byread.com','@','SOA','ns.client.byread.com.',3600,'tel',NULL,10800,900,691200,50000,2011032009,'ycsk02.hotmail.com.',NULL,NULL,NULL,NULL),
(39,'client.byread.com','ns','A','61.155.236.134',3600,'cnc','',10800,900,604800,600,NULL,NULL,NULL,NULL,'2011-03-18 15:46:06','1'),
(40,'client.byread.com','ns','A','61.155.236.134',3600,'cmcc','',10800,900,604800,600,NULL,NULL,NULL,NULL,'2011-03-18 15:46:28','1');
遇到过的问题:
17-Mar-2011 13:00:39.689 client 211.137.96.204#55644: view cmcc_view: query (cache) 'client.byread.com/A/IN' denied
17-Mar-2011 13:00:23.390 mysql driver unable to return result set for findzone query
Mar 12 09:45:10 dns_telecom named[13397]: dns_rdata_fromtext: buffer-0x43e14410:1: near eof: unexpected end of input
Mar 12 09:45:10 dns_telecom named[13397]: dns_sdlz_putrr returned error. Error code was: unexpected end of input
参考文档:
http://yemaosheng.com/?p=260
http://bbs.linuxtone.org/thread-8055-1-1.html
http://blog.gmane.org/gmane.network.dns.bind9.dlz/month=20090201
http://blog.gmane.org/gmane.network.dns.bind9.dlz/month=20050601