BIND9 - MySQLでゾーン管理
MySQLを使ったゾーン管理を行うBIND9の構築について解説します。
ここではMySQLが既にデフォルトディレクトリにインストールされている事を前提としています。
用意するもの
bind-9.5.0-P1.tar.gz
公式ページ
ダウンロードページ
mysql-bind.tgz
公式ページ
ダウンロードページ
コンパイル&インストール
% tar zxvf bind-9.5.0-P1.tar.gz
% tar zxvf mysql-bind.tgz
% cp mysql-bind/mysqldb.c bind-9.5.0-P1/bin/named/
% cp mysql-bind/mysqldb.h bind-9.5.0-P1/bin/named/include/
% cp mysql-bind/zonetodb.c bind-9.5.0-P1
% cd bind-9.5.0-P1
% vi bin/named/mysqldb.c
--- bin/named/mysqldb.c.orig 2007-12-11 15:30:16.898156000 +0900
+++ bin/named/mysqldb.c 2007-12-11 17:46:03.897273000 +0900
@@ -38,7 +38,7 @@
#include <named/globals.h>
-#include <named/mysqldb.h>
+#include "include/mysqldb.h"
/*
* This file is a modification of the PostGreSQL version which is distributed
% vi bin/named/main.c
--- bin/named/main.c.orig 2008-07-12 10:10:52.914278000 +0900
+++ bin/named/main.c 2008-07-12 10:12:09.028316000 +0900
@@ -71,7 +71,7 @@
/*
* Include header files for database drivers here.
*/
-/* #include "xxdb.h" */
+#include "mysqldb.h"
/*
* Include DLZ drivers if appropriate.
@@ -690,7 +690,7 @@
/*
* Add calls to register sdb drivers here.
*/
- /* xxdb_init(); */
+ mysqldb_init();
#ifdef DLZ
/*
@@ -716,7 +716,7 @@
/*
* Add calls to unregister sdb drivers here.
*/
- /* xxdb_clear(); */
+ mysqldb_clear();
#ifdef DLZ
/*
% vi bin/named/Makefile.in
--- bin/named/Makefile.in.orig 2007-01-04 15:01:15.924433000 +0900
+++ bin/named/Makefile.in 2007-01-04 15:05:07.676705000 +0900
@@ -26,10 +26,10 @@
#
# Add database drivers here.
#
-DBDRIVER_OBJS =
-DBDRIVER_SRCS =
-DBDRIVER_INCLUDES =
-DBDRIVER_LIBS =
+DBDRIVER_OBJS = mysqldb.@O@
+DBDRIVER_SRCS = mysqldb.c
+DBDRIVER_INCLUDES = -I/usr/local/include/mysql
+DBDRIVER_LIBS = -L/usr/local/lib/mysql -R/usr/local/lib/mysql -lmysqlclient
CINCLUDES = -I${srcdir}/include -I${srcdir}/unix/include \
${LWRES_INCLUDES} ${DNS_INCLUDES} ${BIND9_INCLUDES} \
% ./configure --sysconfdir=/usr/local/etc/bind9
% make
% su
# make install
# gcc -I/usr/local/bind9/include -I/usr/local/include/mysql -g `./isc-config.sh --cflags isc dns` -c zonetodb.c
# gcc -g -o zonetodb zonetodb.o `./isc-config.sh --libs isc dns` -L/usr/local/lib/mysql -R/usr/local/lib/mysql -lmysqlclient
# cp zonetodb /usr/local/bin
データベースの作成
# mysqladmin create bind9
# mysql bind9
mysql> CREATE TABLE example_com (
-> NAME text,
-> TTL int(11) default NULL,
-> RDTYPE text,
-> RDATA text
-> ) TYPE=MyISAM;
mysql> grant all on bind9.* to bind9admin identified by 'bind9passwd';
mysql> grant all on bind9.* to bind9admin@localhost identified by 'bind9passwd';
mysql> flush privileges;
mysql> exit;
コンパイル&インストール
# /usr/local/sbin/rndc-confgen > /usr/local/etc/bind9/rndc.conf
コメントの部分はnamed.confへ書き加え、「key "rndc-key" {」のセクションはrndc.keyとして保存します。
# vi /usr/local/etc/bind9/named.conf
MySQLで管理させるゾーンを下記の通り修正します。
zone "ゾーン" {
type master;
database "mysqldb データベース名 テーブル名 ホスト 接続ID 接続パスワード";
};
zone "example.com" {
type master;
database "mysqldb bind9 example_com localhost bind9admin bind9passwd";
};
既存ゾーン(ファイル)をデータベースへコンバートする
- usage: zonetomysql origin file dbname dbtable dbuser [dbpass]
# /usr/local/bin/zonetomysql 0.0.127.in-addr.arpa localhost.rev bind9 0_0_127_in_addr_arpa bind9admin bind9passwd
# /usr/local/bin/zonetomysql example.com example.com.zone bind9 example_com bind9admin bind9passwd
# /usr/local/bin/zonetomysql 0.168.192.in-addr.arpa 192.168.0.zone bind9 0_168_192_in_addr_arpa bind9admin bind9passwd
起動