• 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

     

  • 相关阅读:
    CSS3 resize 属性
    FE_UPWARD (Numerics) – C 中文开发手册
    Redis Renamenx 命令
    ASP Execute 方法
    Java面试题:什么时候用断言(assert)?
    Chrome DevTools谷歌浏览器开发者工具远程调试协议
    折叠 | Collapse (Components: Collapse) – Bootstrap 4 中文开发手册
    Java 之 数学相关类 Math、BigInteger、BigDecimal
    Java 之 Arrays 类
    Java 之 Random 类
  • 原文地址:https://www.cnblogs.com/fengyutech/p/4918251.html
Copyright © 2020-2023  润新知