linux下bind9.8+dlz+mysql 的dns服务器局域网配置
安装1.mysql
我用的二进制包安装
groupadd mysql
useradd -r -g mysql -s /sbin/nologin mysql
cd /usr/local/src
wget http://dev.mysql.com/get/Downloads/MySQL-5.6/mysql-5.6.24-linux-glibc2.5-x86_64.tar.gz
tar zxvf mysql-5.6.24-linux-glibc2.5-x86_64.tar.gz
mv mysql-5.6.24-linux2.6-x86_64 /usr/local/mysql
cd /usr/local/mysql
chown -R mysql:mysql ./
./scripts/mysql_install_db --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data
cp support-files/mysql.server /etc/init.d/mysqld
export PATH=$PATH:/usr/local/mysql/bin
service mysqld start
mysql //这里初始没有密码直接回车
//这里把root用远程访问打开后,方便管理。我用的navicat for mysql 管理
grant all privileges on *.* to root@'%' identified by 'mysqlpassword';//语序远程连接
flush privileges;
//创建bind dlz的mysql数据库及表
create database bind;
use bind;
CREATE TABLE `dns_records` (
`id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
`zone` varchar(255) NOT NULL DEFAULT '' COMMENT '区域',
`host` varchar(255) NOT NULL DEFAULT '' COMMENT '主机名',
`type` varchar(255) NOT NULL DEFAULT '' COMMENT 'DNS数据类型',
`data` varchar(255) NOT NULL DEFAULT '' COMMENT 'IP地址/主机名/完整的域名',
`ttl` int(11) NOT NULL DEFAULT '0' COMMENT '存活时间',
`mx_priority` varchar(255) NOT NULL DEFAULT '' COMMENT 'mx优先级',
`refresh` int(11) NOT NULL DEFAULT '0' COMMENT 'SOA的刷新时间记录',
`retry` int(11) NOT NULL DEFAULT '0' COMMENT 'SOA的重试时间记录',
`expire` int(11) NOT NULL DEFAULT '0' COMMENT 'SOA的过期时间记录',
`minimum` int(11) NOT NULL DEFAULT '0' COMMENT 'SOA的最短时间记录',
`serial` bigint(20) NOT NULL DEFAULT '0' COMMENT 'SOA的连续时间记录',
`resp_person` varchar(255) NOT NULL DEFAULT '' COMMENT 'SOA负责人记录',
`primary_ns` varchar(255) NOT NULL DEFAULT '' COMMENT 'SOA的主要名称服务器记录',
PRIMARY KEY (`id`),
KEY `host` (`host`),
KEY `zone` (`zone`),
KEY `type` (`type`)
) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8
#插入一条数据备测试
insertinto dns_records (zone,host,type,data,ttl,retry) values('aaa.com','www','A','192.168.199.2','86400','15');
安装2.bind
cd /usr/local/src
wget ftp://ftp.isc.org/isc/bind9/9.8.7/bind-9.8.7.tar.gz
tar zxvf bind-9.8.7.tar.gz
cd ./bind-9.8.7
./configure --prefix=/usr/local/bind9 --disable-openssl-version-check --with-dlz-mysql=/usr/local/mysql
make && make install
cd /usr/local/bind9
./sbin/rndc-confgen -a
./sbin/rndc-confgen > ./etc/named.conf
#这里先看key
cat etc/rndc.key
key "rndc-key" {
algorithm hmac-md5;
secret "hq1L847nM6A/sDQ9ZBIX5w==";
};
vi ./etc/named.conf
# Start of rndc.conf
key "rndc-key" {
algorithm hmac-md5;
secret "hq1L847nM6A/sDQ9ZBIX5w==";
};
#
controls{
inet 127.0.0.1 port 953
allow { 127.0.0.1; } keys { "rndc-key"; };
};
options {
#default-key "rndc-key";
#default-server 127.0.0.1;
#default-port 953;
directory "/usr/local/bind9/etc/";
pid-file "/usr/local/bind9/var/run/named.pid";
allow-query{any;};
allow-query-cache{ any; };
recursion yes;
version "bns-dns1";
};
# End of rndc.conf
#include "/usr/local/bind9/etc/my.acl";
acl "my" {
127.0.0.1/18;
192.168.3.0/24;#局域网网段
};
view "my"{
match-clients{my;};
dlz "Mysql zone" {
database "mysql
{host=127.0.0.1 dbname=bind ssl=false port=3306 user=root pass=mysqlpassword}
{select zone from dns_records where zone = '$zone$'}
{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$'}";
};
};
#保存即可
启动named
./sbin/named -4 -n 2 -f &
分享到: