歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux基礎 >> 關於Linux

BIND+MySQL

使用bind-mysql模塊增加對mysql數據庫的支持   簡介:對於bind,如果想修改或增加dns記錄,是直接修改文本的,這樣的話一方面不方便管理,另一方面容易出錯,如果我們增加對mysql數據庫的支持,再配合php、perl、python等程序直接操作mysql,這對於dns的管理將會非常地方便和不易出錯。現在介紹使用mysql bind驅動模塊實現這一功能。   一、安裝mysql   安裝mysql服務器可以使用yum或源碼編譯安裝,我們這裡使用yum安裝。   yum -y install mysql mysql-server mysql-devel   二、安裝bind和mysql-bind   1、分別下載bind和mysql-bind   cd /tmp wget http://nchc.dl.sourceforge.net/project/mysql-bind/mysql-bind/mysql-bind-0.2%20src/mysql-bind.tar.gz wget http://ftp.isc.org/isc/bind9/cur/9.9/bind-9.9.1-P2.tar.gz tar xzf bind-9.9.1-P2.tar.gz tar xzf mysql-bind.tar.gz   2、分別復制mysql-bind的mysqldb.c和mysqldb.h到bind-9.9.1-P2/bin/named和bind-9.9.1-P2/bin/named/include   cd /tmp/mysql-bind cp mysqldb.c mysqldb.h /tmp/bind-9.9.1-P2/bin/named cp mysqldb.c mysqldb.h /tmp/bind-9.9.1-P2/bin/named/include   3、修改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獲得。   4、編輯bind源文件bin/named/main.c   4.1、在函數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);   4.2、在函數cleanup(void)裡面ns_server_destroy()的後面添加mysqldb_clear(),如   ns_server_destroy(&ns_g_server);         mysqldb_clear();         /*          * Add calls to unregister sdb drivers here.          */         /* xxdb_clear(); */   4.3、編輯bind源文件中的bin/named/mysqldb.c文件:   更改#include <named/mysqldb.h>為#include "include/mysqldb.h"   4.4 安裝bind   yum -y install gcc openssl-devel cd /tmp/bind-9.9.1-P2 ./configure --prefix=/usr/local/bind  --disable-openssl-version-check make && make install   三、mysql配置   啟動:service mysqld start 設置root密碼:mysqladmin -uroot password root 創建數據庫:mysql> create database dns; 創建表:   mysql> CREATE TABLE mydomain ( name varchar(255) default NULL, ttl int(11) default NULL, rdtype varchar(255) default NULL, rdata varchar(255) default NULL ) TYPE=MyISAM;   插入數據示例:   正向解析所需要的數據:   INSERT INTO mydomain    VALUES    ('mydomain.com',259200,'SOA','mydomain.com. mail.mydomain.com. 200309181 28800 7200 86400 28800'); INSERT INTO mydomain VALUES ('mydomain.com', 259200, 'NS', 'dns.mydomain.com.'); INSERT    INTO mydomain VALUES ('mydomain.com', 259200, 'MX', '10 mail.mydomain.com.'); INSERT INTO mydomain VALUES ('dns.mydomain.com', 259200, 'A', '192.168.131.129'); INSERT INTO mydomain VALUES ('mail.mydomain.com', 259200, 'A', '192.168.131.131'); INSERT INTO mydomain VALUES ('www.mydomain.com', 259200, 'A', '192.168.132'); INSERT INTO mydomain VALUES ('ftp.mydomain.com', 259200, 'A', '192.168.131.133');   反向解析所需要的數據:   INSERT INTO mydomain VALUES ('131.168.192.in-addr.arpa', 17600, 'SOA', 'mydomain.com. mail.mydomain.com. 200309181 28800 7200 86400 28800');   INSERT INTO mydomain VALUES ('131.168.192.in-addr.arpa', 17600, 'NS', 'dns.mydomain.com.');   INSERT INTO mydomain VALUES ('129.131.168.192.in-addr.arpa', 17600, 'PTR', 'dns.mydomain.com.');   INSERT INTO mydomain VALUES ('131.131.168.192.in-addr.arpa', 17600, 'PTR', 'mail.mydomain.com.');   INSERT INTO mydomain VALUES ('132.131.168.192.in-addr.arpa', 17600, 'PTR', 'www.mydomain.com.');   INSERT INTO mydomain VALUES ('133.131.168.192.in-addr.arpa', 17600, 'PTR', 'ftp.mydomain.com.'); 總結:如果正反向解析數據很多,可以分別將正向解析數據放在一個表中,而反向解析數據放另外一個表中   四、bind配置   vim /usr/local/bind/etc/named.conf   zone "mydomain.com" { #正向解析區域   type master;   notify no;   database "mysqldb dbname tablename hostname user password"; }; zone "131.168.192.in-addr.arpa" { #反向解析區域 type master; notify no; database "mysqldb dns mydomain localhost root 123456"; };   其中dbname是數據庫名,tablename是表名,hostname是mysql主機,然後就是用戶名和密碼   啟動bind:   /usr/local/bind/sbin/named   特別注意:圖中所示 五、正反向解析測試   #nslookup

Copyright © Linux教程網 All Rights Reserved