Bind-DLZ with MySQL
系统环境:
系统: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的更多相关文章
- Bind+DLZ+MySQL智能DNS的正向解析和反向解析实现方法
使用文本配置文件的配置方式结合bind的最新的acl和view特性来实现智能DNS想必很多人已经很熟悉了,使用MySQL数据库来存放zone文件的方式可能也不少.对于两者都熟悉的,实现 Bind+DL ...
- Bind+DLZ构建企业智能DNS/DNS
Bind+DLZ构建企业智能DNS 目录:一.简介二.服务规划三.安装BIND及基本环境四.配置Bind-View-DLZ-MYSQL五.添加相关记录并进行测试六.配置从DNS七.补充 一.简介: ...
- bind+dlz+mysql实现区域记录动态更新
BIND-DLZ实验:http://bind-dlz.sourceforge.net/ 实验环境:RHEL4,BIND-9.5.0-P2.tar.gz(9.4.0以上版本都已含DLZ补丁),Mysql ...
- 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 ...
- bind9+dlz+mysql连接断开问题
前言 关于bind-dlz介绍:http://bind-dlz.sourceforge.net/ DLZ(Dynamically Loadable Zones)与传统的BIND9不同,BIND的不足之 ...
- BIND DNS拒绝服务漏洞 CVE-2016-2776修复
接到此漏洞之后,略微查了一下相关描述,发现漏洞影响范围很大,可能造成的影响也很严重,于是着手进行修复. 漏洞的详细信息可见如下链接: http://www.cnvd.org.cn/flaw/show/ ...
- Docker搭建MySQL主从复制
Docker搭建MySQL主从复制 主从服务器上分别安装Docker 1.1 Docker 要求 CentOS 系统的内核版本高于 3.10 [root@localhost ~]# uname -r ...
- 配置NAT回流导致外网解析到了内网IP
单位有3个域名,用量很大,2014年开始本人研究部署了Bind+DLZ +Mysql的三机智能多链路DNS,非常好用,优点是: 1.使用Mysql管理记录,配置.管理.查询方便. 2.自动判断运营商, ...
- 我要为运维说一句,我们不是网管,好不!!Are you know?
运维 运维,这里指互联网运维,通常属于技术部门,与研发.测试.系统管理同为互联网产品技术支撑的4大部门,这个划分在国内和国外以及大小公司间都会多少有一些不同. 一个互联网产品的生成一般经历的过程是:产 ...
- [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 ...
随机推荐
- MyBean - 单实例插件改进和VCL插件的改进
BeanFactory中添加VclOwners:TComponent属性, 在getBean创建VCL插件的时候,Tcomponent.Create(VclOwners) 这样在清理DLL时就会释 ...
- ubuntu下安装vmTools, 和共享文件
如果没有需要下载一个vmTools,我是下载的 然后加载到光驱,然后在ubuntu下面可以找到光驱 解压里面的文件, 我解压到 Documents下面 然后ctrl + alt + t进入控制台 cd ...
- 【电子基础】液晶显示器原理·LCD驱动基础
LCD显示器概述 ——>液晶显示器,LCD为英文 Liquid Crystal Display的缩写,它是一种数字显示技术,可以通过液晶和彩色过滤光源,并在平面面板上产生图像. ——&g ...
- Docker 入门(Mac环境)-part 1 入门基本操作
part-1 入门基本操作 Docker 安装 去官网下载对应的版本,然后点击安装就可以了: 如果环境是Linux,可以参照之前写的get started教程 查看docker版本 docker -- ...
- Windows下GUI编程——窗口
windows下创建一个基于GUI的窗口程序很简单,使用MFC或者Win32 API都可以实现.本文简单整理下windows API创建GUI应用程序的基本编码框架. 比较常见的窗口包括:桌面窗口.应 ...
- javascript检测浏览器的缩放状态实现代码 是指浏览器网页内容的百分比缩放(按Ctrl和+号键或者-号键的缩放)
这里所说的缩放不是指浏览器大小的缩放,而是指浏览器网页内容的百分比缩放(按Ctrl和+号键或者-号键的缩放).检测这种缩放有很种方法,QQ空间都通过flash来检测浏览器是否处于缩放.这里提供java ...
- 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 ...
- Python3高级用法综合举例
[本文出自天外归云的博客园] 举例 下面代码围绕一个Student类综合举例说明装饰器.生成器.动态获取/添加类成员.列表推导式.reduce函数.lambda表达式的实际应用: from funct ...
- 设计模式之原型模式(深入理解OC中的NSCopying协议以及浅拷贝、深拷贝)
原型模式:用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象.原型模式其实就是从一个对象再创建另一个可定制的对象,而且不需知道任何创建的细节. 比如说,有一个Person类,有firstN ...
- Oracle数据库密码过期
按照如下步骤进行操作:1.查看用户的proifle是哪个,一般是default: SQL>SELECT USERNAME,PROFILE FROM DBA_USERS; 2.查看指定概要文件(如 ...