系统环境:

系统:centos 6.8
Mysql: 5.1
BIND: bind-9.11.-P2.tar.gz
IP地址:192.168.153.130
软件下载地址:http://ftp.isc.org/

一、安装并配置MySQL.

1.编译环境相关依赖包安装.

yum install openssl-devel openldap-devel unixODBC-devel gcc

2.安装MySQL数据库

yum -y install mysql mysql-server mysql-devel

3.验证是否安装成功

[root@localhost ~]# rpm -qi mysql-server

4.启动MySql服务

[root@localhost ~]# /etc/init.d/mysqld start

5.登录并设置密码

[root@localhost ~]# mysql -u root
mysql> show databases;
mysql> use mysql;
mysql> update user set password=password('') where user='root';

6.开放远程登录权限

mysql> GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '' WITH GRANT OPTION;
Query OK, rows affected (0.00 sec)
mysql> FLUSH PRIVILEGES;
Query OK, rows affected (0.00 sec)

7.设置开机启动(非必须)

[root@localhost ~]#chkconfig mysqld on

二、下载并安装Bind-DLZ

1.下载并解压Bind-DLZ软件包

[root@localhost opt]#wget http://ftp.isc.org/isc/bind9/9.11.0-P2/bind-9.11.0-P2.tar.gz
[root@localhost opt]#tar -zxvf bind-9.11.-P2.tar.gz

2.在64位系统上编译,您可能需要设置一些变量,以便找到适当的mysql库:

[root@localhost ~]# export CPPFLAGS="-I/usr/lib64/mysql $CPPFLAGS"
[root@localhost ~]# export LDFLAGS="-L/usr/lib64/mysql $LDFLAGS"
[root@localhost ~]# export LD_LIBRARY_PATH="/usr/lib64/mysql"

3.编译安装Bind-DLZ.

[root@localhost opt]# cd bind-9.11.-P2
[root@localhost bind-9.11.-P2]#./configure --prefix=/usr/local/bind --enable-threads \
--enable-largefile --disable-ipv6 \
--disable-openssl-version-check \
--with-dlz-mysql=yes
[root@localhost bind-9.11.-P2]# make
[root@localhost bind-9.11.-P2]# make install

4.查看版本并测试软件是否安装成功

[root@localhost bind-9.11.-P2]# /usr/local/bind/sbin/named -v
BIND 9.11.-P2 <id:>

5.配置rndc.conf和named.conf文件

生成rndc.conf:

[root@localhost ~]# cd /usr/local/bind/etc/
[root@localhost etc]# rndc-confgen -r /dev/urandom > rndc.conf

提供ca文件

[root@localhost etc]#wget -O named.ca  http://www.internic.net/domain/named.root

创建并生成named.conf

[root@localhost etc]#  tail - rndc.conf | head - | sed s/#\ //g > named.conf

生成的named.conf文件只key和controls部分,需要自己手动添加logging和options部分,完整文件如下:

[root@localhost etc]# cat named.conf
key "rndc-key" {
algorithm hmac-md5;
secret "X0k0Uz62Actu11IXrnA48A==";
};
controls {
inet 127.0.0.1 port
allow { 127.0.0.1; } keys { "rndc-key"; };
}; logging {
channel bind_log {
file "/tmp/bind.log" versions size 20m;
severity info;
print-time yes;
print-severity yes;
print-category yes;
};
category default {
bind_log; };
}; options {
listen-on port { 192.168.153.130; };
directory "/usr/local/bind";
Pid-file "named.pid";
allow-query-cache { any; };
allow-query { any; };
}; dlz "Mysql zone" {
database "mysql
{host=192.168.153.130 dbname=bind ssl=false port= user=root pass=}
{select zone from dns_records where zone = '$zone$' and view = 'any' limit }
{select ttl,type,if(mx_priority>,mx_priority,NULL),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'}";
};
[root@localhost etc]#

6.创建named用户,使bind服务以named用户运行,

[root@localhost ~]#groupadd -r -g  named
[root@localhost ~]#useradd -r -u -s /bin/nologin -d /usr/local/named -g named named
[root@localhost ~]#chown -R named:named /usr/local/bind/

7.前台启动named服务,看看配置是否正常.

[root@localhost ~]#/usr/local/bind/sbin/named -c /usr/local/bind/etc/named.conf -f -g -u named

如果以上的配置启动都没有报错,那么接下来就可以添加MySQL,这样就可以将区域信息写入到数据库中.

三、配置dlz数据库查询

1.登录MySQL,并创建库和表.

mysql> create database bind;
Query OK, row affected (0.00 sec)
> CREATE TABLE IF NOT EXISTS `dns_records` (
`id` int() unsigned NOT NULL AUTO_INCREMENT,
`zone` varchar() NOT NULL,
`host` varchar() NOT NULL DEFAULT '@',
`type` enum('A','MX','CNAME','NS','SOA','PTR','TXT','AAAA','SVR','URL') NOT NULL,
`data` varchar() DEFAULT NULL,
`ttl` int() NOT NULL DEFAULT '',
`mx_priority` int() DEFAULT NULL,
`view` enum('any', 'Telecom', 'Unicom', 'CMCC', 'ours') NOT NULL DEFAULT "any" ,
`priority` tinyint UNSIGNED NOT NULL DEFAULT '',
`refresh` int() NOT NULL DEFAULT '',
`retry` int() NOT NULL DEFAULT '',
`expire` int() NOT NULL DEFAULT '',
`minimum` int() NOT NULL DEFAULT '',
`serial` bigint() NOT NULL DEFAULT '',
`resp_person` varchar() NOT NULL DEFAULT 'ddns.net',
`primary_ns` varchar() 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= ; Query OK, rows affected (0.02 sec)

2.数据库中插入数据:

mysql> insert into bind.dns_records (zone, host, type, data, ttl) VALUES ('testinfo.com', 'www', 'A', '1.1.1.1', '');
Query OK, row affected (0.00 sec) mysql> insert into bind.dns_records (zone, host, type, data, ttl) VALUES ('testinfo.com', 'bbs', 'A', '2.2.2.2', '');
Query OK, row affected (0.00 sec) mysql> insert into bind.dns_records (zone, host, type, data, ttl) VALUES ('testinfo.com', 'm', 'A', '3.3.3.3', '');
Query OK, row affected (0.00 sec) mysql>

3.后台启动named服务:

[root@localhost ~]# /usr/local/bind/sbin/named -c /usr/local/bind/etc/named.conf -f -g -u named &

4.在/etc/resolv.conf 文件中添加本机192.168.153.130为第一dns解析地址:

[root@localhost ~]# vim /etc/resolv.conf
; generated by /sbin/dhclient-script
#search localdomain
nameserver 192.168.153.130
nameserver 192.168.153.2
nameserver 8.8.8.8

5.解析测试:本地添加的test.info.com域名通过192.168.153.130解析,外网的www.baidu.com使用第二个dns解析.

[root@localhost ~]# nslookup
> www.testinfo.com
Server: 192.168.153.130
Address: 192.168.153.130# Name: www.testinfo.com
Address: 1.1.1.1
> bbs.testinfo.com
Server: 192.168.153.130
Address: 192.168.153.130# Name: bbs.testinfo.com
Address: 2.2.2.2
> m.testinfo.com
Server: 192.168.153.130
Address: 192.168.153.130# Name: m.testinfo.com
Address: 3.3.3.3
> www.baidu.com
Server: 192.168.153.2
Address: 192.168.153.2# Non-authoritative answer:
www.baidu.com canonical name = www.a.shifen.com.
Name: www.a.shifen.com
Address: 220.181.111.188
Name: www.a.shifen.com
Address: 220.181.112.244

至此Bind-MySQL部署完成.

参考文档:

    https://itsecureadmin.com/2010/09/bind-dlz-with-mysql/

    https://www.jianshu.com/p/1318ef8865ba

    https://www.cnblogs.com/jiangxu67/p/4801230.html  

Bind-DLZ with MySQL的更多相关文章

  1. Bind+DLZ+MySQL智能DNS的正向解析和反向解析实现方法

    使用文本配置文件的配置方式结合bind的最新的acl和view特性来实现智能DNS想必很多人已经很熟悉了,使用MySQL数据库来存放zone文件的方式可能也不少.对于两者都熟悉的,实现 Bind+DL ...

  2. Bind+DLZ构建企业智能DNS/DNS

    Bind+DLZ构建企业智能DNS   目录:一.简介二.服务规划三.安装BIND及基本环境四.配置Bind-View-DLZ-MYSQL五.添加相关记录并进行测试六.配置从DNS七.补充 一.简介: ...

  3. bind+dlz+mysql实现区域记录动态更新

    BIND-DLZ实验:http://bind-dlz.sourceforge.net/ 实验环境:RHEL4,BIND-9.5.0-P2.tar.gz(9.4.0以上版本都已含DLZ补丁),Mysql ...

  4. bind智能DNS + bindUI管理系统(postgresql + bind dlz)

    # 软件环境: * Centos 7.6 * bind-9.14.1.tar.gz * postgresql 11 * python 3.7 * django 2.2.1 QPS:单节点1590 qp ...

  5. bind9+dlz+mysql连接断开问题

    前言 关于bind-dlz介绍:http://bind-dlz.sourceforge.net/ DLZ(Dynamically Loadable Zones)与传统的BIND9不同,BIND的不足之 ...

  6. BIND DNS拒绝服务漏洞 CVE-2016-2776修复

    接到此漏洞之后,略微查了一下相关描述,发现漏洞影响范围很大,可能造成的影响也很严重,于是着手进行修复. 漏洞的详细信息可见如下链接: http://www.cnvd.org.cn/flaw/show/ ...

  7. Docker搭建MySQL主从复制

    Docker搭建MySQL主从复制 主从服务器上分别安装Docker 1.1 Docker 要求 CentOS 系统的内核版本高于 3.10 [root@localhost ~]# uname -r ...

  8. 配置NAT回流导致外网解析到了内网IP

    单位有3个域名,用量很大,2014年开始本人研究部署了Bind+DLZ +Mysql的三机智能多链路DNS,非常好用,优点是: 1.使用Mysql管理记录,配置.管理.查询方便. 2.自动判断运营商, ...

  9. 我要为运维说一句,我们不是网管,好不!!Are you know?

    运维 运维,这里指互联网运维,通常属于技术部门,与研发.测试.系统管理同为互联网产品技术支撑的4大部门,这个划分在国内和国外以及大小公司间都会多少有一些不同. 一个互联网产品的生成一般经历的过程是:产 ...

  10. [docker]bind9.11-with-mysql5.6 docker容器化实战

    参考: https://www.centos.bz/2012/09/bind-with-mysql-support/ http://blog.51niux.com/?id=125 http://470 ...

随机推荐

  1. MyBean - 单实例插件改进和VCL插件的改进

      BeanFactory中添加VclOwners:TComponent属性, 在getBean创建VCL插件的时候,Tcomponent.Create(VclOwners) 这样在清理DLL时就会释 ...

  2. ubuntu下安装vmTools, 和共享文件

    如果没有需要下载一个vmTools,我是下载的 然后加载到光驱,然后在ubuntu下面可以找到光驱 解压里面的文件, 我解压到 Documents下面 然后ctrl + alt + t进入控制台 cd ...

  3. 【电子基础】液晶显示器原理·LCD驱动基础

    LCD显示器概述   ——>液晶显示器,LCD为英文 Liquid Crystal Display的缩写,它是一种数字显示技术,可以通过液晶和彩色过滤光源,并在平面面板上产生图像.   ——&g ...

  4. Docker 入门(Mac环境)-part 1 入门基本操作

    part-1 入门基本操作 Docker 安装 去官网下载对应的版本,然后点击安装就可以了: 如果环境是Linux,可以参照之前写的get started教程 查看docker版本 docker -- ...

  5. Windows下GUI编程——窗口

    windows下创建一个基于GUI的窗口程序很简单,使用MFC或者Win32 API都可以实现.本文简单整理下windows API创建GUI应用程序的基本编码框架. 比较常见的窗口包括:桌面窗口.应 ...

  6. javascript检测浏览器的缩放状态实现代码 是指浏览器网页内容的百分比缩放(按Ctrl和+号键或者-号键的缩放)

    这里所说的缩放不是指浏览器大小的缩放,而是指浏览器网页内容的百分比缩放(按Ctrl和+号键或者-号键的缩放).检测这种缩放有很种方法,QQ空间都通过flash来检测浏览器是否处于缩放.这里提供java ...

  7. LeetCode: Best Time to Buy and Sell Stock 解题报告

    Best Time to Buy and Sell Stock Say you have an array for which the ith element is the price of a gi ...

  8. Python3高级用法综合举例

    [本文出自天外归云的博客园] 举例 下面代码围绕一个Student类综合举例说明装饰器.生成器.动态获取/添加类成员.列表推导式.reduce函数.lambda表达式的实际应用: from funct ...

  9. 设计模式之原型模式(深入理解OC中的NSCopying协议以及浅拷贝、深拷贝)

    原型模式:用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象.原型模式其实就是从一个对象再创建另一个可定制的对象,而且不需知道任何创建的细节. 比如说,有一个Person类,有firstN ...

  10. Oracle数据库密码过期

    按照如下步骤进行操作:1.查看用户的proifle是哪个,一般是default: SQL>SELECT USERNAME,PROFILE FROM DBA_USERS; 2.查看指定概要文件(如 ...