1. 程式人生 > >linux基本服務系列之智慧DNS(二)

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 = [email protected]@ #注意兩個@中間那個是大寫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