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 ...
随机推荐
- Android.mk用法整理
[时间:2016-05] [状态:Open] 输出消息 由于Android.mk使用的GNU Make的语法,可以方便的使用.ndk提供了一下三种格式的消息输出: error: debug print ...
- Java类的成员初始化顺序
Java类的成员初始化顺序 2017-06-01 代码: public class InitializeSequence { public static void main(String[] args ...
- 【FindReport】图表快速部署开发
在线帮助文档:http://help.finereport.com/ 开发部署环境:Java Tomcat 数据可视化工具 大屏动态显示
- Orcale11g单机安装与卸载
前言:本篇主要介绍Oracle11g企业版安装的准备工作,建议使用图形化界面安装,静默安装出现问题较多,初学者不好排查,本篇只给出关键步骤,最后介绍完全删除Orcale方法: Oracle Datab ...
- iOS开发:代码通用性以及其规范 第二篇(猜想iOS中实现TableView内部设计思路(附代码),以类似的思想实现一个通用的进度条)
在iOS开发中,经常是要用到UITableView的,我曾经思考过这样一个问题,为什么任何种类的model放到TableView和所需的cell里面,都可以正常显示?而我自己写的很多view却只是能放 ...
- ARKit从入门到精通(5)-ARScnView介绍
转载:http://blog.csdn.net/u013263917/article/details/73156918 AR视图,在第一小节笔者介绍过,ARKit支持3D的AR场景和2D的AR场景,A ...
- 变量使用self.foo还是_foo
selfOR_html, body {overflow-x: initial !important;}html { font-size: 14px; } body { margin: 0px; pad ...
- 【Unity笔记】使物体(船)漂浮在水面上——浮力
在官方论坛看到一个关于怎么使物体漂浮在水面上的讨论:https://forum.unity3d.com/threads/floating-a-object-on-water.31671/ 水动力系统 ...
- 俞军的PM12条
俞军的PM12条:1.PM首先是用户2.站在用户角度看待问题3.用户体验是一个完整的过程4.追求效果,不做没用的东西5.发现需求,而不是创造需求6.决定不做什么,往往比决定做什么更重要7.用户是很难 ...
- sql 字符带下划线匹配问题
SQL 中 _下划线 作用是 匹配一个任意字符. 如果我们要去掉下划线的作用 单纯只用作一个字符则需要转义成 like '%\_%' escape '\' 字段 1.order_qrsc 2.o ...