centos 6.2 bind dlz mysql 驱动,bind9 dlz mysql 配置 – daemon

1.数据库安装

yum -y install mysql-community-server mysql-community-devel

2.编译安装bind 一些基础的包,请参考前一章

./configure –with-dlz-mysql –enable-largefile –enable-threads=no –prefix=/xxx/bind –with-libtool –enable-epoll –with-openssl

make -j 8 && make -j 8 install

3.数据库初始化:

CREATE SCHEMA `bind` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci ;

CREATE TABLE IF NOT EXISTS `dns_records` (

`id` int(10) unsigned NOT NULL AUTO_INCREMENT,

`zone` varchar(255) NOT NULL,

`host` varchar(255) NOT NULL DEFAULT '@',

`type` enum('A','MX','CNAME','NS','SOA','PTR','TXT','AAAA','SVR','URL') NOT NULL,

`data` varchar(255) DEFAULT NULL,

`ttl` int(11) NOT NULL DEFAULT '3600',

`mx_priority` int(11) DEFAULT NULL,

`view` enum('any', 'CHINANET', 'Unicom', 'CNC', 'ours') NOT NULL DEFAULT "any" ,

`priority` tinyint UNSIGNED NOT NULL DEFAULT '255',

`refresh` int(11) NOT NULL DEFAULT '28800',

`retry` int(11) NOT NULL DEFAULT '14400',

`expire` int(11) NOT NULL DEFAULT '86400',

`minimum` int(11) NOT NULL DEFAULT '86400',

`serial` bigint(20) NOT NULL DEFAULT '2015050917',

`resp_person` varchar(64) NOT NULL DEFAULT 'ddns.net',

`primary_ns` varchar(64) NOT NULL DEFAULT 'ns.ddns.net.',

PRIMARY KEY (`id`),

KEY `type` (`type`),

KEY `host` (`host`),

KEY `zone` (`zone`)

) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;

插入SOA数据:

INSERT INTO `dns_records` (`zone`, `host`, `type`, `data`, `ttl`,`mx_priority`,`refresh`, `retry`, `expire`, `minimum`, `serial`, `resp_person`, `primary_ns`) VALUES(‘xieyugui.com’, ‘@’, ‘SOA’, ‘ns1.xieyugui.com.’, 10, NULL, 600, 3600, 86400,10, 2017060801, ‘root.xieyugui.com.’, ‘ns1.xieyugui.com.’);

插入@ NS数据:

INSERT INTO `dns_records` (`zone`, `host`, `type`, `data`) VALUES(‘xieyugui.com’, ‘@’, ‘NS’, ‘ns1.xieyugui.com.’),(‘xieyugui.com’, ‘@’, ‘NS’, ‘ns2.xieyugui.com.’);

插入NS A数据:

INSERT INTO `dns_records` (`zone`, `host`, `type`, `data`) VALUES(‘xieyugui.com’, ‘ns1’, ‘A’, ‘192.168.10.5’),(‘xieyugui.com’, ‘ns2’, ‘A’, ‘192.168.1.111’);

插入www A记录:

INSERT INTO `dns_records` (`zone`, `host`, `type`, `data`, `ttl`, `view`) VALUES(‘xieyugui.com’, ‘www’, ‘A’, ‘192.168.1.111’, 360, ‘any’),(‘xieyugui.com’, ‘app’, ‘A’, ‘192.168.1.112’, 360, ‘CHINANET’),(‘xieyugui.com’, ‘dev’, ‘A’, ‘192.168.1.113’, 360, ‘any’),(‘xieyugui.com’, ‘db’, ‘A’, ‘192.168.1.114’, 360, ‘any’);

插入CNAME 记录:

INSERT INTO dns_records (zone,host,type,DATA,view) VALUES(‘xieyugui.com’, ‘blog’, ‘CNAME’, ‘www’,’CNC’);

5.etc 目录结构

[root@TEST_MASTER etc]# ls

aclkeysnamed.confrndc.confview.confzone

vim named.conf

include “/xxx/bind/etc/acl/CHINANET.acl”;

include “/xxx/bind/etc/acl/CNC.acl”;

include “/xxx/bind/etc/view.conf”;

vim view.conf

view “CHINANET_view” {

match-clients{ CHINANET; };

allow-query-cache { none; };

allow-recursion { none; };

allow-transfer { none; };

recursion no;

dlz “Mysql zone” {

database “mysql

{host=127.0.0.1 dbname=bind ssl=false port=3306 user=root pass=xxx}

{select zone from dns_records where zone = ‘$zone$’ andview = ‘any’ limit 1}

{select ttl,type,mx_priority,case when lower(type)=’txt’ then concat(‘\”‘,data,’\”‘) when lower(type)=‘soa’then concat_ws(‘ ‘,data,resp_person,serial,refresh,retry,expire,minimum) else data end as mydata from dns_records where zone = ‘$zone$’ and host = ‘$record$’ and view=(select view from dns_records where zone = ‘$zone$’ and host = ‘$record$’ and (view=’CHINANET’ or view=’any’) order by priority asc limit 1)}”;

};

};

view “CNC_view” {

match-clients{ CNC; };

allow-query-cache { none; };

allow-recursion { none; };

allow-transfer { none; };

recursion no;

dlz “Mysql zone” {

database “mysql

{host=127.0.0.1 dbname=bind ssl=false port=3306 user=root pass=xxx}

{select zone from dns_records where zone = ‘$zone$’ andview = ‘any’ limit 1}

{select ttl,type,mx_priority,case when lower(type)=’txt’ then concat(‘\”‘,data,’\”‘) when lower(type)=‘soa’then concat_ws(‘ ‘,data,resp_person,serial,refresh,retry,expire,minimum) else data end as mydata from dns_records where zone = ‘$zone$’ and host = ‘$record$’ and view=(select view from dns_records where zone = ‘$zone$’ and host = ‘$record$’ and (view=’CNC’ or view=’any’) order by priority asc limit 1)}”;

};

};

view “any_view”{

match-clients{ any; };

allow-query-cache { none; };

allow-recursion { none; };

allow-transfer { none; };

recursion no;

dlz “Mysql zone” {

database “mysql

{host=127.0.0.1 dbname=bind ssl=false port=3306 user=root pass=xxx}

{select zone from dns_records where zone = ‘$zone$’ andview = ‘any’ limit 1}

{select ttl,type,mx_priority,case when lower(type)=’txt’ then concat(‘\”‘,data,’\”‘) when lower(type)=‘soa’then concat_ws(‘ ‘,data,resp_person,serial,refresh,retry,expire,minimum) else data end as mydata from dns_records where zone = ‘$zone$’ and host = ‘$record$’ and view = ‘any’}”;

};

};

貌似上面的view.conf里面的select逻辑有点问题,但是整体还是能跑通的,后面有空再整理一下

8c6e5e1b8ae69cf484820f3345a28177.png

赞过:

赞 正在加载……

相关

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值