WWW を検索 NOGNOG.COM を検索

WWW.NOGNOG.COM

Last modified: Sat, 12 Jul 2008 10:32:06 +0900
Home   うにっくすさんの覚え書き   プリングルズ   MIDI   ユーザー車検   「小沢昭一の小沢昭一的こころ」のススメ   Blog  

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

    起動


      # /usr/local/sbin/named

    うにっくすさんの覚え書きについて

    Home >> うにっくすさんの覚え書き >> BIND9 - MySQLでゾーン管理