1.先装置MySQL,间接yum装置* yum -y install mysql mysql-server2.再装置一些依赖的包
yum -y install openssl openssl-devel libss-dev gcc gcc-c++ mysql-devel3.下载bind, bind官网(https://www.isc.org/)wget ftp://ftp.isc.org/isc/bind9/bind-9.10.3-P2/bind-9.10.3-P2.tar.gz4.下载mysql-bind 补丁源码wget http://nchc.dl.sourceforge.net/project/mysql-bind/mysql-bind/mysql-bind-0.2%20src/mysql-bind.tar.gz5.解压bind和mysql-bind源码压缩文件 tar zxvf bind-9.10.3-P2.tar.gz tar zxvf mysql-bind.tar.gz6.将mysql-bind源码目录下的mysqldb.c 和 mysqldb.h拷贝到bind源码目录下的bin/named和bin/named/include/ 目录下 cd mysql-bind cp -f mysqldb.c mysqldb.h ../bind-9.10.3-P2/bin/named/ cp -f mysqldb.c mysqldb.h ../bind-9.10.3-P2/bin/named/include/7.批改bind源码目录下bin/named/Makefile.in文件 cd ../bind-9.10.3-P2 vim bin/named/Makefile.in 将以下几行: DBDRIVER_OBJS = DBDRIVER_SRCS = DBDRIVER_INCLUDES = DBDRIVER_LIBS = 批改为: DBDRIVER_OBJS = mysqldb.@O@ DBDRIVER_SRCS = mysqldb.c DBDRIVER_INCLUDES = -I/usr/include/mysql -g -pipe -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -m64 -D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -fno-strict-aliasing -fwrapv -fPIC -DUNIV_LINUX -DUNIV_LINUX DBDRIVER_LIBS = -rdynamic -L/usr/lib64/mysql -lmysqlclient -lz -lcrypt -lnsl -lm -lssl -lcrypto DBDRIVER_INCLUDES 的值是通过 mysql_config --cflags 命令获取的 DBDRIVER_LIBS 的值是通过 mysql_config --libs 命令获取的8.批改bind源码目录下bin/named目录下的main.c文件 vim bin/named/main.c 退出 #include "mysqldb.h" 如下:#include <config.h>#include "mysqldb.h"#include <ctype.h>#include <stdlib.h>#include <string.h> 而后在正文代码段 /* xxdb_init(); */ 后退出 mysqldb_init(); 在正文代码段 /* xxdb_clear(); */后退出 mysqldb_clear();9.批改mysqldb.c批改mysqldb.c中的#include <named/mysqldb.h>为 #include <include/mysqldb.h>10.装置bind ./configure --prefix=/usr/local/bind --enable-threads # 指定装置目录和开启多线程的解决能力 make make install11.配置bind cd /usr/local/bind-9.10/etc /usr/local/bind/sbin/rndc-confgen -r /dev/urandom>rndc.conf cat rndc.conf|tail |head -9 |sed "s/^#//g">named.conf # 生成配置文件12.创立一个数据库############这版不太好用 Create database mydomain; 创立一张数据表 CREATE TABLE dnsrecord ( name varchar(255) default NULL, ttl int(11) default NULL, rdtype varchar(255) default NULL, rdata varchar(255) default NULL )TYPE=MyISAM; 插入一些测试数据 INSERT INTO dnsrecord VALUES ('test.net', 259200, 'SOA', 'test.net. www.test.net 200505101 28800 7200 86400 28800'); INSERT INTO dnsrecord VALUES ('test.net', 259200, 'NS', 'ns1.test.net.'); INSERT INTO dnsrecord VALUES ('ns1.test.net', 259200, 'A', '192.168.2.2'); INSERT INTO dnsrecord VALUES ('www.test.net', 259200, 'A', '192.168.2.1');##########################好使###############################DROP TABLE IF EXISTS 10_outside;CREATE TABLE 10_outside ( name varchar(255) default NULL, ttl int(11) default NULL, rdtype varchar(255) default NULL, rdata varchar(255) default NULL);---- Dumping data for table `10_outside`--LOCK TABLES 10_outside WRITE;INSERT INTO 10_outside VALUES ('25.71.210.10.in-addr.arpa',3600,'PTR','cas1.test.mydomain.com.cn.');INSERT INTO 10_outside VALUES ('10.in-addr.arpa',3600,'SOA','test.mydomain.com.cn. zhengyu.staff.mydomain.com.cn. 20070319 1800 600 604800 600');INSERT INTO 10_outside VALUES ('10.in-addr.arpa',3600,'NS','cas1.test.mydomain.com.cn.');INSERT INTO 10_outside VALUES ('10.in-addr.arpa',3600,'NS','cas2.test.mydomain.com.cn.');INSERT INTO 10_outside VALUES ('10.in-addr.arpa',3600,'NS','cas3.test.mydomain.com.cn.');INSERT INTO 10_outside VALUES ('27.71.210.10.in-addr.arpa',3600,'PTR','cas2.test.mydomain.com.cn.');UNLOCK TABLES;---- Table structure for table `test_mydomain_com_cn_outside`--DROP TABLE IF EXISTS test_mydomain_com_cn_outside;CREATE TABLE test_mydomain_com_cn_outside ( name varchar(255) default NULL, ttl int(11) default NULL, rdtype varchar(255) default NULL, rdata varchar(255) default NULL);---- Dumping data for table `test_mydomain_com_cn_outside`--LOCK TABLES test_mydomain_com_cn_outside WRITE;INSERT INTO test_mydomain_com_cn_outside VALUES ('test.mydomain.com.cn',3600,'SOA','test.mydomain.com.cn. zhengyu.staff.mydomain.com.cn. 20070319 1800 600 604800 600');INSERT INTO test_mydomain_com_cn_outside VALUES ('test.mydomain.com.cn',3600,'NS','cas1.test.mydomain.com.cn.');INSERT INTO test_mydomain_com_cn_outside VALUES ('test.mydomain.com.cn',3600,'NS','cas2.test.mydomain.com.cn.');INSERT INTO test_mydomain_com_cn_outside VALUES ('test.mydomain.com.cn',3600,'NS','cas3.test.mydomain.com.cn.');INSERT INTO test_mydomain_com_cn_outside VALUES ('cas1.test.mydomain.com.cn',3600,'A','10.210.71.25');INSERT INTO test_mydomain_com_cn_outside VALUES ('cas2.test.mydomain.com.cn',3600,'A','10.210.71.27');INSERT INTO test_mydomain_com_cn_outside VALUES ('cas3.test.mydomain.com.cn',3600,'A','10.210.132.80');INSERT INTO test_mydomain_com_cn_outside VALUES ('yhzh.test.mydomain.com.cn',3600,'A','10.218.26.191');INSERT INTO test_mydomain_com_cn_outside VALUES ('yhzh.test.mydomain.com.cn',3600,'A','10.218.26.192');INSERT INTO test_mydomain_com_cn_outside VALUES ('yhzh.test.mydomain.com.cn',3600,'A','10.218.26.193');INSERT INTO test_mydomain_com_cn_outside VALUES ('yhzh.test.mydomain.com.cn',3600,'A','10.218.26.194');INSERT INTO test_mydomain_com_cn_outside VALUES ('*',3600,'A','10.210.71.1');INSERT INTO test_mydomain_com_cn_outside VALUES ('conf.test.mydomain.com.cn',3600,'CNAME','cas2.test.mydomain.com.cn.');UNLOCK TABLES;############################################13.持续配置bind vim /usr/local/bind/etc/named.conf在前面依照以下格局退出zone "mydomain.com" { type master; notify no; database "mysqldb dbname tablename hostname user password"; };mydomain.com为要解析的域名dbname 为数据库名hostname为数据库服务器地址user 为可操作后面数据库表的数据库用户名password 为对应数据库用户名的明码配置实现在命令行下运行/usr/local/bind/sbin/named -c /usr/local/bind/etc/named.conf -g查看没问题后/usr/local/bind/sbin/named -c /usr/local/bind/etc/named.conf [root@silence etc]# lsbind.keys named.conf named.root rndc.conf root.zone[root@silence etc]# cat root.zone $TTL 86400@ IN SOA ns1.mydomain.com. w1.mydomain.com ( 2018070110 1H 5M 7D 1D) IN NS ns1 IN NS ns2 IN MX 10 mx1 IN MX 20 mx2ns1 IN A 192.168.108.160ns2 IN A 192.168.108.138ns3 IN A 192.168.108.166mx1 IN A 192.168.108.138w1 IN A 192.168.1.2w0 IN A 192.168.1.1www IN A 192.168.108.160* IN A 192.168.108.166[root@silence etc]# cat named.conf key "rndc-key" { algorithm hmac-md5; secret "ZYobWCcSDr2HDCMuojc6gg=="; }; controls { inet 127.0.0.1 port 953 allow { 127.0.0.1; } keys { "rndc-key"; }; };options { listen-on port 53 { 127.0.0.1;172.16.188.123; }; directory "/data/work/bind9.9.3"; allow-query-cache { any; }; allow-query { any; }; dnssec-enable yes; dnssec-validation yes; dnssec-lookaside auto; }; zone "." { type hint; file "/data/work/bind9.9.3/etc/root.zone"; }; zone "mydomain" { type forward; forwarders { 114.114.114.114;8.8.8.8; }; forward first; }; logging { channel bind_log { file "/data/work/bind9.9.3/logs/bind.log" versions 3 size 20m; severity info; print-time yes; print-severity yes; print-category yes; }; category default { bind_log; }; }; zone "test.mydomain.com.cn" IN{ type master; notify no; database "mysqldb mydomain test_mydomain_com_cn_outside 172.16.188.123 root 111111"; }; zone "16.172.in-addr.arpa" IN{ type master; notify no; database "mysqldb mydomain 10_outside 172.16.188.123 root 111111"; };运行bind
...