linux基本服务系列之智能DNS(二)

一、前言

上一期讲了利用BIND实现智能DNS,是一个主域名服务器,负责维护这个区域的所有域名信息,是特定的所有信息的权威信息源。看过的人知道,存储该区域的正本数据,是依靠zone文件,维护zone文件是比较繁琐的,每次都要进入系统修改文件并需要重启bind服务,今天就来说说bind+mysql的结合,减少你的维护量和避免重启风险。

安装bind和mysql

1.Mysql安装,你喜欢编译或者yum都可以;

yum -y install mysql mysql-server mysql-devel

2.安装bind和mysql-bind    ##这里我用编译安装,注意以下修改可使得bind支持mysql

解压:

tar xzf bind-9.11.1.tar.gz

tar xzf mysql-bind.tar.gz

分别复制mysql-bind的mysqldb.c和mysqldb.h到bind-9.11.1/bin/named和bind-9.11.1/bin/named/include:

cd mysql-bind

cp mysqldb.c mysqldb.h /root/bind-9.11.1/bin/named

cp mysqldb.c mysqldb.h /root/bind-9.11.1/bin/named/include

修改bind源码中的bin/named/Makefile.in文件:

DBDRIVER_OBJS = mysqldb.@O@ #注意两个@中间那个是大写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 -m32 -fasynchronous-unwind-tables -D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -fno-strict-aliasing -fwrapv

DBDRIVER_LIBS = -rdynamic -L/usr/lib/mysql -lmysqlclient -lz -lcrypt -lnsl -lm -L/usr/lib -lssl -lcrypto

注:

DBDRIVER_INCLUDES的值由命令/usr/bin/mysql_config --cflags获得。

DBDRIVER_LIBS的值由命令/usr/bin/mysql_config --libs获得。

编辑bind源文件bin/named/main.c:

在函数setup(void)里面ns_server_create()的前面添加mysqldb_init();,如:

/*

* Add calls to register sdb drivers here.

*/

/* xxdb_init(); */

mysqldb_init();

ns_server_create(ns_g_mctx, &ns_g_server);

在函数cleanup(void)里面ns_server_destroy()的后面添加mysqldb_clear(),如:

ns_server_destroy(&ns_g_server);

mysqldb_clear();

/*

* Add calls to unregister sdb drivers here.

*/

/* xxdb_clear(); */

编辑bind源文件中的bin/named/mysqldb.c文件:

更改#include <named/mysqldb.h>为#include <include/mysqldb.h>

开始安装bind:

yum -y install gcc openssl-devel

cd /tmp/bind-9.11.1

./configure --prefix=/opt/bind9/ --enable-threads --disable-openssl-version-check

make && make install

named.conf文件配置

options {

    //域名文件存放的绝对路径

    directory "/usr/local/named/var";

    //如果bind启动,自动会在/usr/local/named/var目录生成一个named.pid文件,打开文件就是named进程的ID

    pid-file "named.pid";

};

域rjkj.com的zone文件

zone "rjkj.com" IN {

    type master; //该域名服务器是主域名服务器,这个选项主要用在主备部署中

    database "mysqldb eflycloud other 127.0.0.1 root 123456";

    //定义了到那个数据库、那个数据表获取正向记录数据

};

然后启动bind服务

/opt/bind9/sbin/named -c /opt/bind9/etc/named.conf

mysql配置

service mysqld start

mysql -u root -p  //设置mysql的密码

mysql> create database example;    //建立example数据库

use example;

CREATE TABLE ` rjkj_com ` (           //建表

`id` int(10) unsigned NOT NULL AUTO_INCREMENT,

`host` varchar(255) NOT NULL DEFAULT '@',

`type` enum('MX','CNAME','NS','SOA','A','PTR') NOT NULL,

`data` varchar(255) DEFAULT NULL,

`ttl` int(11) NOT NULL DEFAULT '800',

PRIMARY KEY (`id`)

);

insert INTO rjkj_com  (zone,host,type,data,ttl) values ('www.rjkj.com ','A','10.255.1.27',86400);     //添加几条域名解析记录

insert INTO rjkj_com  (zone,host,type,data,ttl) values ('abc.rjkj.com ','A','10.255.1.29',86400);

上面就是一个数据库和数据表的过程,也可以通过phpmyadmin处理。

从此以后,你只需要在浏览器打开phpmyadmin,对数据进行修改即可,不用进系统操作,不用重启服务,就能享受高性能又方便的智能DNS。

关注睿江云计算,获取更多干货资料:
http://www.eflycloud.com/#/home?from=RJ0024&salesID=XKKHRTRBK
 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值