array(2) { ["docs"]=> array(10) { [0]=> array(10) { ["id"]=> string(3) "428" ["text"]=> string(77) "Visual Studio 2017 单独启动MSDN帮助(Microsoft Help Viewer)的方法" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(8) "DonetRen" ["tagsname"]=> string(55) "Visual Studio 2017|MSDN帮助|C#程序|.NET|Help Viewer" ["tagsid"]=> string(23) "[401,402,403,"300",404]" ["catesname"]=> string(0) "" ["catesid"]=> string(2) "[]" ["createtime"]=> string(10) "1511400964" ["_id"]=> string(3) "428" } [1]=> array(10) { ["id"]=> string(3) "427" ["text"]=> string(42) "npm -v;报错 cannot find module "wrapp"" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(4) "zzty" ["tagsname"]=> string(50) "node.js|npm|cannot find module "wrapp“|node" ["tagsid"]=> string(19) "[398,"239",399,400]" ["catesname"]=> string(0) "" ["catesid"]=> string(2) "[]" ["createtime"]=> string(10) "1511400760" ["_id"]=> string(3) "427" } [2]=> array(10) { ["id"]=> string(3) "426" ["text"]=> string(54) "说说css中pt、px、em、rem都扮演了什么角色" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(12) "zhengqiaoyin" ["tagsname"]=> string(0) "" ["tagsid"]=> string(2) "[]" ["catesname"]=> string(0) "" ["catesid"]=> string(2) "[]" ["createtime"]=> string(10) "1511400640" ["_id"]=> string(3) "426" } [3]=> array(10) { ["id"]=> string(3) "425" ["text"]=> string(83) "深入学习JS执行--创建执行上下文(变量对象,作用域链,this)" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(7) "Ry-yuan" ["tagsname"]=> string(33) "Javascript|Javascript执行过程" ["tagsid"]=> string(13) "["169","191"]" ["catesname"]=> string(0) "" ["catesid"]=> string(2) "[]" ["createtime"]=> string(10) "1511399901" ["_id"]=> string(3) "425" } [4]=> array(10) { ["id"]=> string(3) "424" ["text"]=> string(30) "C# 排序技术研究与对比" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(9) "vveiliang" ["tagsname"]=> string(0) "" ["tagsid"]=> string(2) "[]" ["catesname"]=> string(8) ".Net Dev" ["catesid"]=> string(5) "[199]" ["createtime"]=> string(10) "1511399150" ["_id"]=> string(3) "424" } [5]=> array(10) { ["id"]=> string(3) "423" ["text"]=> string(72) "【算法】小白的算法笔记:快速排序算法的编码和优化" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(9) "penghuwan" ["tagsname"]=> string(6) "算法" ["tagsid"]=> string(7) "["344"]" ["catesname"]=> string(0) "" ["catesid"]=> string(2) "[]" ["createtime"]=> string(10) "1511398109" ["_id"]=> string(3) "423" } [6]=> array(10) { ["id"]=> string(3) "422" ["text"]=> string(64) "JavaScript数据可视化编程学习(二)Flotr2,雷达图" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(7) "chengxs" ["tagsname"]=> string(28) "数据可视化|前端学习" ["tagsid"]=> string(9) "[396,397]" ["catesname"]=> string(18) "前端基本知识" ["catesid"]=> string(5) "[198]" ["createtime"]=> string(10) "1511397800" ["_id"]=> string(3) "422" } [7]=> array(10) { ["id"]=> string(3) "421" ["text"]=> string(36) "C#表达式目录树(Expression)" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(4) "wwym" ["tagsname"]=> string(0) "" ["tagsid"]=> string(2) "[]" ["catesname"]=> string(4) ".NET" ["catesid"]=> string(7) "["119"]" ["createtime"]=> string(10) "1511397474" ["_id"]=> string(3) "421" } [8]=> array(10) { ["id"]=> string(3) "420" ["text"]=> string(47) "数据结构 队列_队列实例:事件处理" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(7) "idreamo" ["tagsname"]=> string(40) "C语言|数据结构|队列|事件处理" ["tagsid"]=> string(23) "["246","247","248",395]" ["catesname"]=> string(12) "数据结构" ["catesid"]=> string(7) "["133"]" ["createtime"]=> string(10) "1511397279" ["_id"]=> string(3) "420" } [9]=> array(10) { ["id"]=> string(3) "419" ["text"]=> string(47) "久等了,博客园官方Android客户端发布" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(3) "cmt" ["tagsname"]=> string(0) "" ["tagsid"]=> string(2) "[]" ["catesname"]=> string(0) "" ["catesid"]=> string(2) "[]" ["createtime"]=> string(10) "1511396549" ["_id"]=> string(3) "419" } } ["count"]=> int(200) } 222 bindview+dlz(mysql) - 爱码网

系统准备

配置iptables

iptables -F

iptables -P OUTPUT ACCEPT

iptables -P FORWARD DROP

iptables -A INPUT -p tcp --dport 22 -j ACCEPT

iptables -P INPUT DROP

iptables -A INPUT -p tcp --dport 53 -j ACCEPT

iptables -A INPUT -p udp --dport 53 -j ACCEPT

iptables -A INPUT -p tcp --dport 3306 -j ACCEPT

iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

iptables -A INPUT -p icmp -j ACCEPT

iptables -A INPUT -i lo -p all -j ACCEPT

service iptables save

service iptables restart

关闭selinux

sed -i s/SELINUX=enforcing/SELINUX=disabled/g /etc/sysconfig/selinux

setenforce 0

 

安装配置mysql

二进制安装

yum -y install lrzsz

cd /usr/local/src

rz

tar zxvf mysql* -C /usr/local

cd /usr/local

ln -sv mysql* mysql

cd mysql

mkdir -pv /data/mysql

useradd -r -U -s /sbin/nologin -d /data/mysql mysql

chown mysql:mysql /data/mysql -R

chown mysql:mysql /usr/local/mysql -R

scripts/mysql_install_db --user=mysql --datadir=/data/mysql

chown -R root .

cp support-files/my-large.cnf  /etc/my.cnf

core=`cat /proc/cpuinfo |grep "processor" |wc -l`

sed -i "s/thread_concurrency = 8/thread_concurrency = `expr 2 \* $core`/g" /etc/my.cnf

sed -i -e '/\[mysqld\]/a \datadir = \/data\/mysql' /etc/my.cnf

cp support-files/mysql.server  /etc/rc.d/init.d/mysqld

chmod +x /etc/rc.d/init.d/mysqld

chkconfig mysqld on

ln -sv /usr/local/mysql/include /usr/include/mysql

echo '/usr/local/mysql/lib' > /etc/ld.so.conf.d/mysql.conf

ldconfig

echo -e 'PATH=/usr/local/mysql/bin:$PATH' >> /etc/profile

source /etc/profile

mysql建立表

service mysqld start

mysql_secure_ installation

mysql>create database dns_view;

mysql>use dns_view;

CREATE TABLE `dnstb` (

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

`zone` varchar(255) NOT NULL,

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

`type` enum('MX','CNAME','NS','SOA','A','PTR') NOT NULL,

`data` varchar(255) default NULL,

`ttl` int(11) NOT NULL default '600',

`view` char(20) default 'OP',

`mx_priority` int(11) default NULL,

`refresh` int(11) NOT NULL default '600',

`retry` int(11) NOT NULL default '3600',

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

`minimum` int(11) NOT NULL default '3600',

`serial` bigint(20) NOT NULL default '2011061200',

`resp_person` varchar(64) NOT NULL default 'root.foo.com.',

`primary_ns` varchar(64) NOT NULL default 'ns1.foo.com.',

`data_count` int(11) NOT NULL default '0',

PRIMARY KEY (`id`),

KEY `type` (`type`),

KEY `host` (`host`),

KEY `zone` (`zone`)

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

mysql授权:

grant all privileges on dns_view.* to root@'172.16.1.104' identified by '123456';

 

 

 

 

安装配置bind9.11

编译安装bind9.11

yum -y install gcc zlib-devel perl

cd /usr/local/src

tar zxvf bind-9.11.0-P3.tar.gz

cd bind-9.11.0-P3

./configure --prefix=/usr/local/bind --with-dlz-mysql=/usr/local/mysql --enable-treads=no --enable-largefile --disable-ipv6 --with-openssl=no

make && make install

echo -e 'PATH=/usr/local/bind/bin:/usr/local/bind/sbin:$PATH' >> /etc/profile

source /etc/profile

配置rndc

cd /usr/local/bind/etc/

echo -e "ajksdfhiwurhi23y789asd8fh23bjkfasdf2iu3jkweafsdfl" >  random

rndc-confgen -r random > rndc.conf

tail -n10 rndc.conf | head -n9 |sed -e s/#\//g  >  named.conf

配置bind

logging {

        channel query_log {

        file "/var/log/named.log" versions 3 size 20m;

        severity info;

        print-time yes;

        print-category yes;

        print-severity yes;

        };

category queries {

                query_log;

                };

category lame-servers {

                null;

                };

};

 

 

options {

        directory "/usr/local/bind/etc";

 

        forwarders {119.29.29.29;8.8.8.8;};

        forward only ;

 

 

        pid-file "named.pid";

 

        allow-query {any;};

        allow-query-cache { any; };

 

        allow-recursion { any; };

#       recursion yes;

 

        dnssec-enable no;

        dnssec-validation no;

 

 

listen-on port 53 {

                192.168.1.5;

                };

#listen-on-v6 port 53 { any;};

};

 

include "/usr/local/bind/etc/ip/dev.txt";

include "/usr/local/bind/etc/ip/prod.txt";

include "/usr/local/bind/etc/view.conf";

 

配置acl和view

mkdir ip

vi ip/dev.txt

acl dev{

10.1.1.0/24;

172.16.1.0/24;

192.168.36.0/24;

};

vi ip/prod.txt

acl prod{

172.16.2.0/24;

};

vi view.conf

view "dev" {

match-clients {dev;};

 

dlz "Mysql zone" {

database "mysql

{host=127.0.0.1 dbname=dns_view ssl=false port=3306 user=root pass=123456 }

{select zone from dnstb where zone = '$zone$' and view = 'dev' 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 dnstb where zone

= '$zone$' and host = '$record$' and (view = 'dev' or view = 'OP')}

{}

{select ttl, type, host, mx_priority, case when lower(type)='txt' then concat('\"',

data, '\"') else data end as mydata, resp_person, serial, refresh, retry, expire,

minimum from dnstb where zone = '$zone$' and view='dev'}

{select zone from xfr_table where zone = '$zone$' and client = '$client$' and

view='dev' limit 1}

{update data_count set count = count + 1 where zone ='$zone$' and view='dev'}";

};

};

 

 

view "prod" {

match-clients { prod; };

dlz "Mysql zone" {

database "mysql

{host=127.0.0.1 dbname=dns_view ssl=false port=3306 user=root pass=123456 }

{select zone from dnstb where zone = '$zone$' and view = 'prod' 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 dnstb where zone

= '$zone$' and host = '$record$' and (view = 'prod' or view = 'OP')}

{}

{select ttl, type, host, mx_priority, case when lower(type)='txt' then concat('\"',

data, '\"') else data end as mydata, resp_person, serial, refresh, retry, expire,

minimum from dnstb where zone = '$zone$' and view='prod'}

{select zone from xfr_table where zone = '$zone$' and client = '$client$' and

view='prod' limit 1}

{update data_count set count = count + 1 where zone ='$zone$' and view='prod'}";

};

};

 

view "any" {

match-clients { any;};

 

dlz "Mysql zone" {

database "mysql

{host=127.0.0.1 dbname=dns_view ssl=false port=3306 user=root pass=123456 }

{select zone from dnstb where zone = '$zone$' and view = '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 dnstb where zone

= '$zone$' and host = '$record$' and (view = 'any' or view='OP')}

{}

{select ttl, type, host, mx_priority, case when lower(type)='txt' then concat('\"',

data, '\"') else data end as mydata, resp_person, serial, refresh, retry, expire,

minimum from dnstb  where zone = '$zone$' and view='any'}

{select zone from xfr_table where zone = '$zone$' and client = '$client$' and

view='any' limit 1}

{update data_count set count = count + 1 where zone ='$zone$' and view='any'}";

};

};

 

服务使用

启动和重载配置文件

named -4 -uroot -c /usr/local/bind/etc/named.conf -d 9

rndc reload

添加dns记录

windows上安装navicat for mysql 添加DNS记录如图:

 

 

备用DNS:

步骤

安装bind和Mysql

配置rndc

配置BIND+VIEW,配置和主DNS一样,除了listen-on port 53里面的IP

配置mysql主从复制,备用DNS上的mysql为从库,设置同步的数据库为dns_view。

 

相关文章: