Centos 安装bind9.3.1使用mariadb存储域名

Centos 安装bind9.3.1使用mariadb存储域名

2017, Oct 17    

环境:

- CentOS Linux release 7.2.1511 (Core)
- 3.10.0-327.el7.x86_64

- BIND 9.3.1

- mysql  Ver 15.1 Distrib 5.5.56-MariaDB, for Linux (x86_64) using readline 5.1(yum install)

-  mysql-bind-0-1.tgz 附加软件包,bind连接mysql的SDB驱动,需要跟随bind一起编译,下载地址: https://sourceforge.net/projects/mysql-bind/ ##  ```bash wget  https://ftp.isc.org/isc/bind/9.3.1/bind-9.3.1.tar.gz tar zxf bind-9.3.1.tar.gz chown -R root:root bind-9.3.1

tar -xzf mysql-bind-0-1.tgz

cd mysql-bind-0.1/

cp -a mysqldb.c ../bind-9.3.1/bin/named/

cp -a mysqldb.h ../bind-9.3.1/bin/named/include/ cd ../bind-9.3.1/

yum install mysql-devel -y #安装mysql lib include库

vim bin/named/Makefile.in #将 DBDRIVER_OBJS =

DBDRIVER_SRCS =

DBDRIVER_INCLUDES =

DBDRIVER_LIBS =

#修改为 DBDRIVER_OBJS = mysqldb.@O@

DBDRIVER_SRCS = mysqldb.c

DBDRIVER_INCLUDES = -I’/usr/include/mysql’

DBDRIVER_LIBS = -L’/usr/lib64/mysql/’ -lmysqlclient -lz -lcrypt -lnsl -lm -lc -lnss_files -lnss_dns -lresolv -lc -lnss_files -lnss_dns - lresolv

vim bind-9.9.11/bin/named #添加 #include “mysqldb.h”

找到/*

  • Add calls to register sdb drivers here. / / xxdb_init(); / #添加 mysqldb_init(); 找到 /
  • Add calls to unregister sdb drivers here. / / xxdb_clear(); */ #添加 mysqldb_clear();

#开始编译 ./configure –prefix=/usr/local/named –sysconfdir=/etc/named/ –disable-ipv6 –disable-chroot –enable-threads –libdir=/var/lib/named

make make install

`如果make发现问题,先检查上边的步骤然后再重新 configure再make试试 `


## 生成named 配置文件
```bash
cd /usr/local/named

mkdir etc

cd etc/
../sbin/rndc-confgen > rndc.conf

tail -n 10 rndc.conf | head -9 | sed 's/#/ /g' > named.conf
cat named.conf 
#建立localhost.zone文件

vi localhost.zone

$TTL    86400

$ORIGIN localhost.

@                       1D IN SOA       @ root (

                                       42              ; serial (d. adams)

                                       3H              ; refresh

                                       15M             ; retry

                                       1W              ; expiry

                                       1D )            ; minimum



                       1D IN NS        @

                       1D IN A         127.0.0.1

#建立named.local文件
vi named.local

$TTL    86400

@       IN      SOA     localhost. root.localhost.  (

                                     1997022700 ; Serial

                                     28800      ; Refresh

                                     14400      ; Retry

                                     3600000    ; Expire

                                     86400 )    ; Minimum

             IN      NS      localhost.



1       IN      PTR     localhost.

#建立根域文件named.ca  


; <<>> DiG 9.9.2-P1-RedHat-9.9.2-6.P1.fc18 <<>> +bufsize=1200 +norec @a.root-servers.net

; (2 servers found)

;; global options: +cmd

;; Got answer:

;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 25828

;; flags: qr aa; QUERY: 1, ANSWER: 13, AUTHORITY: 0, ADDITIONAL: 23



;; OPT PSEUDOSECTION:

; EDNS: version: 0, flags:; udp: 512

;; QUESTION SECTION:

;.                IN    NS



;; ANSWER SECTION:

.            518400    IN    NS    a.root-servers.net.

.            518400    IN    NS    b.root-servers.net.

.            518400    IN    NS    c.root-servers.net.

.            518400    IN    NS    d.root-servers.net.

.            518400    IN    NS    e.root-servers.net.

.            518400    IN    NS    f.root-servers.net.

.            518400    IN    NS    g.root-servers.net.

.            518400    IN    NS    h.root-servers.net.

.            518400    IN    NS    i.root-servers.net.

.            518400    IN    NS    j.root-servers.net.

.            518400    IN    NS    k.root-servers.net.

.            518400    IN    NS    l.root-servers.net.

.            518400    IN    NS    m.root-servers.net.



;; ADDITIONAL SECTION:

a.root-servers.net.    3600000    IN    A    198.41.0.4

a.root-servers.net.    3600000    IN    AAAA    2001:503:ba3e::2:30

b.root-servers.net.    3600000    IN    A    192.228.79.201

c.root-servers.net.    3600000    IN    A    192.33.4.12

d.root-servers.net.    3600000    IN    A    199.7.91.13

d.root-servers.net.    3600000    IN    AAAA    2001:500:2d::d

e.root-servers.net.    3600000    IN    A    192.203.230.10

f.root-servers.net.    3600000    IN    A    192.5.5.241

f.root-servers.net.    3600000    IN    AAAA    2001:500:2f::f

g.root-servers.net.    3600000    IN    A    192.112.36.4

h.root-servers.net.    3600000    IN    A    128.63.2.53

h.root-servers.net.    3600000    IN    AAAA    2001:500:1::803f:235

i.root-servers.net.    3600000    IN    A    192.36.148.17

i.root-servers.net.    3600000    IN    AAAA    2001:7fe::53

j.root-servers.net.    3600000    IN    A    192.58.128.30

j.root-servers.net.    3600000    IN    AAAA    2001:503:c27::2:30

k.root-servers.net.    3600000    IN    A    193.0.14.129

k.root-servers.net.    3600000    IN    AAAA    2001:7fd::1

l.root-servers.net.    3600000    IN    A    199.7.83.42

l.root-servers.net.    3600000    IN    AAAA    2001:500:3::42

m.root-servers.net.    3600000    IN    A    202.12.27.33

m.root-servers.net.    3600000    IN    AAAA    2001:dc3::35



;; Query time: 78 msec

;; SERVER: 198.41.0.4#53(198.41.0.4)

;; WHEN: Mon Jan 28 15:33:31 2013

;; MSG SIZE  rcvd: 699

最终named.conf,更多参数请参考yum install bind后生成的/etc/named.conf

key "rndc-key" {

      algorithm hmac-md5;

      secret "GBO+RH2CgwAjNpucN6fCiw==";

};

controls {

      inet 127.0.0.1 port 953

          allow { 127.0.0.1; } keys { "rndc-key"; };

  };

options {
        listen-on port 53 { any; };

        listen-on-v6 port 53 { ::1; };

        allow-query     { any; };

        allow-transfer  { none; };

        recursion yes;

        allow-recursion  { any; };    //允许递归查询

};



zone "." IN {

        type hint;

        file "/usr/local/named/etc/named.ca";

};



zone "localhost" IN {

        type master;

        file "/usr/local/named/etc/localhost.zone";

        allow-update { none; };

};



zone "0.0.127.in-addr.arpa" IN {

        type master;

        file "/usr/local/named/etc/named.local";

        allow-update { none; };

};



zone "mydomain.com" {

  type master;

  database "mysqldb dnsdb mydomain localhost root 123456";

    //database 参数解释:
    // 第一个mysqldb写死应该是指的驱动,第二个谢数据库名,第三个写表名,第四个MYSQL主机地址,第五个MYSQL用户,第六个MYSQL用户密码

};


zone "19.202.220.in-addr.arpa" {

  type master;

  database "mysqldb dnsdb ptr localhost root 123456";

};



建立数据库表结构

正向解析

CREATE TABLE `xuhui` (

  name varchar(255) default NULL,

  ttl int(11) default NULL,

  rdtype varchar(255) default NULL,

  rdata varchar(255) default NULL

) ;

插入测试数据

INSERT INTO xuhui VALUES ('xuhui.local', 259200, 'SOA', 'xuhui.local. xuhui.xuhui.local. 201710131 28800 7200 86400 28800');

INSERT INTO xuhui VALUES ('xuhui.local', 259200, 'NS', 'dns1.xuhui.local.');

INSERT INTO xuhui VALUES ('xuhui.local', 259200, 'NS', 'dns2.xuhui.local.');

INSERT INTO xuhui VALUES ('xuhui.local', 259200, 'MX', '10 mail.xuhui.local.');

INSERT INTO xuhui VALUES ('dns1.xuhui.local', 259200, 'A', '192.168.61.188');

INSERT INTO xuhui VALUES ('dns2.xuhui.local', 259200, 'A', '192.168.61.9');

INSERT INTO xuhui VALUES ('dashboard.xuhui.local', 259200, 'A', '192.168.61.138');

INSERT INTO xuhui VALUES ('dashboard.xuhui.local', 259200, 'A', '192.168.61.139');

反向解析

CREATE TABLE ptr (

  name varchar(255) default NULL,

  ttl int(11) default NULL,

  rdtype varchar(255) default NULL,

  rdata varchar(255) default NULL

) ;

插入测试数据

INSERT INTO `ptr` VALUES ('168.192.in-addr.arpa', 17600, 'SOA', 'xuhui.local. xuhui.xuhui.local. 201710131 28800 7200 86400 28800');

INSERT INTO `ptr` VALUES ('168.192.in-addr.arpa', 17600, 'NS', 'dns1.xuhui.local.');

INSERT INTO `ptr` VALUES ('68.192.in-addr.arpa', 17600, 'NS', 'dns2.xuhui.local.');

INSERT INTO `ptr` VALUES ('138.61.168.162.in-addr.arpa', 17600, 'PTR', 'dashboard.xuhui.local.');

INSERT INTO `ptr` VALUES ('188.61.168.192.in-addr.arpa', 17600, 'NS', 'dns1.xuhui.local.');

测试

启动bind

/usr/local/named/sbin/named -c /usr/local/named/etc/named.conf

测试解析

nslookup  www.mydomain.com  192.168.61.9
#192.168.61.9是你的dns地址