设为首页 收藏本站
查看: 557|回复: 0

[经验分享] bind+mysql域名解析的简单配置

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2015-1-6 08:43:45 | 显示全部楼层 |阅读模式
虽然不是干运维的,但在IT江湖打酱油也难免受到高人的影响,所以在很早就听说bind可以和数据结合使用,一直都没有时间去研究;今天恰好一个同事问到bind安装的问题,就顺便研究了一下;下面将我的操作过程共享个各位,期间查找了不少网络上的资料,在这里感谢他们。好了,下面开始我们正题,欢迎各位轻轻的拍砖,哈哈哈……。

软件准备:(本人环境)
Centos6.2
Mysql、bind-9.3.2.tar.gz、mysql-bind.tar.gz

备注:9.4.2以上版本都已经包含了DLZ补丁,本人认为就不需要mysql_bind这个驱动了,有关操作请查阅相关参考资料,这里不讨论。
安装篇 一、安装Mysql
因为后面需要使用mysql的头文件和库文件,所以我这边使用源码安装,当然,如果单独安装Headers and libraries应该也是可以的。
1、解压mysql;
2、安装mysql,这个直接看INSTALL-SOURCE安装知道就可以了,这里简单过一下。
> groupadd mysql
> useradd -g mysql mysql
> gunzip < mysql-VERSION.tar.gz | tar -xvf -
> cd mysql-VERSION
> ./configure --prefix=/usr/local/mysql
> make
> make install
> cp support-files/my-medium.cnf /etc/my.cnf
> cd /usr/local/mysql
> bin/mysql_install_db --user=mysql
> chown -R root  .
> chown -R mysql var
> chgrp -R mysql .
> bin/mysqld_safe --user=mysql &
具体查看Mysql的想安装过程。

3、注意,这样安装好以后,我们的头文件和库文件分别在:
/usr/local/mysql/include/mysql/和/usr/local/mysql/lib/mysql
其实使用rpm安装也是可以的,安装成是使用相关命令查找到需要的这两个文件目录即可

二、分别解压mysql-bind.tar.gz和bind-9.3.2.tar.gz
1、将mysql-bind.tar.gz解压,生成文件夹mysql-bind;
2、将bind-9.3.2.tar.gz 解压,生成文件夹bind-9.3.2;
3、将mysql-bind里面主要有mysqldb.c和mysqldb.h两个文件,分别拷贝到bind源文件的bin/named和bin/named/include/named/目录下
4、编辑bind源文件目录的bin/named/Makefile.in文件,修改如下几个字段:
DBDRIVER_OBJS = mysqldb.@O@
DBDRIVER_SRCS = mysqldb.c
DBDRIVER_INCLUDES = -I'/usr/local/mysql/include/mysql/'   #mysql安装3的内容
DBDRIVER_LIBS = -L'/usr/local/mysql/lib/mysql' -lmysqlclient -lz -lcrypt -lnsl -lm -lc -lnss_files -lnss_dns -lresolv -lc -lnss_files -lnss_dns -lresolv

5、编辑bind源文件bin/named/main.c
5.1、在main.c开头包含mysqldb.h,#include <named/mysqldb.h>
5.2、在main.c文件中的函数setup(void)里面ns_server_create()的前面添加mysqldb_init();
5.3、在函数cleanup(void)里面ns_server_destroy()的后面添加mysqldb_clear();
备注:相关区域会有提示信息

6、编译安装bind
>./configure --prefix=/usr/local/named
程序将安装到/usr/local/named/下
还有其他选项可以选择使用:
--enable-threads:开启多线程处理能力
--disable-openssl-version-check:禁止openssl版本的检查
--enable-largefile:启用大文件支持
--disable-ipv6:关闭ipv6支持
>make
>make install

配置篇7、生成etc中相关配置文件;
通过上面完成编译安装后,在程序的安装目录/usr/local/named中发现没有etc文件夹,更没有本应该放在其下的rndc.conf和named.conf配置文件,我们通过一些方法生成这两个重要的文件。
7.1、在named目录下建立etc文件夹;
>mkdir  etc
7.2、生成rndc.conf文件
>sbin/rndc-confgen  /dev/urandom  >  rndc.conf
7.3、生成name.conf文件
将rndc.conf文件拷贝一份,命名为name.conf;
使用vim编辑name.conf;
文件中有提示语:
# Use with the following in named.conf, adjusting the allow list as needed:
按照提示,将该提示以上的(没有被注释的部分)全部删除或注释掉,将其下的被注释信息全部取消注释;
7.4、生成rndc.key文件(该文件貌似没用,可以在启动时提示需要改文件是建立)
>rndc-confgen  -r  /dev/urandom  -a
(自动生成到named的etc目录下)
更权限:
>chomd  644  rndc.key

备注:在RHEL6上没有caching-named这个包,所以在上面命令中用/dev/urandom构建了一个虚拟的随机数生成器。

8、配置数据信息:
8.1、创建数据库:create database mydomain ;
8.2、创建表:
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;
8.3、添加测试数据
INSERT INTO mydomain VALUES
('mydomain.com', 259200, 'SOA', 'mydomain.com. www.mydomain.com. 200309181 28800 7200 86400 28800');
INSERT INTO mydomain VALUES ('mydomain.com', 259200, 'NS', 'ns0.mydomain.com.');
INSERT INTO mydomain VALUES ('mydomain.com', 259200, 'NS', 'ns1.mydomain.com.');
INSERT INTO mydomain VALUES ('mydomain.com', 259200, 'MX', '10 mail.mydomain.com.');
INSERT INTO mydomain VALUES ('w0.mydomain.com', 259200, 'A', '192.168.1.1');
INSERT INTO mydomain VALUES ('w1.mydomain.com', 259200, 'A', '192.168.1.2');
INSERT INTO mydomain VALUES ('mydomain.com', 259200, 'Cname', 'w0.mydomain.com.');
INSERT INTO mydomain VALUES ('mail.mydomain.com', 259200, 'Cname', 'w0.mydomain.com.');
INSERT INTO mydomain VALUES ('ns0.mydomain.com', 259200, 'Cname', 'w0.mydomain.com.');
INSERT INTO mydomain VALUES ('ns1.mydomain.com', 259200, 'Cname', 'w1.mydomain.com.');
INSERT INTO mydomain VALUES ('www.mydomain.com', 259200, 'Cname', 'w0.mydomain.com.');
INSERT INTO mydomain VALUES ('ftp.mydomain.com', 259200, 'Cname', 'w0.mydomain.com.');

9、配置bind连接数据
使用vim编辑name.conf文件,在底端追加写入数据信息:
zone "mydomain.com" {
  type master;
  notify no;
  database "mysqldb dbname tablename hostname user password";
};
mydomain.com为要解析的域名,本例为插入数据库的mydomain.comt域名
dbname 为数据库名本例为mydomain,
tablename为数据表名,本例为mydomain
hostname为数据库服务器地址,本例为本机127.0.0.1
user 为可操作前面数据库表的数据库用户名,本例为root
password 为对应数据库用户名的密码,本例为 123456
10、测试服务程序
打开named测试/usr/local/named/sbin/named -g -d 1 -c /usr/local/named/etc/named.conf
或者直接 ./named  -g
如果没有出现错误信息说明安装基本正常,这是可以真正启动bind服务,用一台pc将DNS指向该服务器ping数据库中一个域名验证一下。

11、正常启动服务
./named


备注:
1、启动named,第一次运行它如果提示找不到libmysqlclient.so.15,这个文件是在mysql编译安装的时候已经生成了这个文件,可以手动拷贝他到/usr/lib/libmysqlclient.so.15,启动正常,可以解析所有域名。
2、如果启动时提示/usr/local/named/var/run/named.pid有问题,那么就手动在named下建立一个var/run/路径;
3、如果是服务器自身使用ping命令来验证,那么必须把服务器的DNS指向本机;即,编辑文件/etc/resolve..conf为
search localdomain
nameserver 127.0.0.1
4、网上有关文章有建立mysql和bind系统专用用户的操作,本文没有涉及相关内容,如需要建立请移步相关网站查询。


用数据库管理bind,有一个很大的优点就是主域名CNAME功能,也就是空主机头别名问题。数据库的管理提供了一个松散的语法检查格式,我们配置了什么,就能解析出什么,一方面容易出错,另外一方面也带来了灵活性。



运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-40275-1-1.html 上篇帖子: Navicat 2003-Can't connect to MySQL server on 'localhost'(10061) 下篇帖子: MySQL的简单备份与恢复 mysql
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表