BIND+Mysql兑现DNS轮询泛解析和IP视图

BIND+Mysql实现DNS轮询泛解析和IP视图

文档内容:

1.关于本文档

2.Bind+Mysql+Mysql-bind环境搭建

3.Bind配置

4.Mysql数据库设置

5.常见问题解决

文档正文:

1. 关于本文档

      本文档用于DNS和BIND结合配置域名解析和其他更深化的服务,如DNS轮询和squid反向加速结合做简单的流量动态均衡,泛解析和apachemod_rewrite结合做虚拟多级域名,应用IP视图做流量处理。偶尔涉及到源码修正是为更好提供服务和进行调试所用。如果有兴趣可以发邮件至文档头处的邮箱进行讨论。另外,在后面的文档中还有一个自动安装和简单配置bind+mysql+mysql-bind的脚本auto_bind_sdb.sh,可以方便使用者使用。

文档分五个部分:

      1.关于本文档,介绍文档内容和结构。

      2.Bind+Mysql+Mysql-bind环境搭建,略为介绍Bind+Mysql+Mysql-bind的获取和安装。

      3.Bind配置,初略介绍Bind用于DNS轮询,泛解析和IP视图的配置。

      4.Mysql数据库设置,正确设置Mysql数据库取代Bind的文档格式的分布式IP库。

      5.常见问题解决,在配置过程的一些常见问题解决和分析,这是文章的重点。

      如果你是带着问题前来,前往第五和第六部分即可。如果需要了解Bind,还需要参看第二和第三部分。

2. Bind+Mysql+Mysql-bind环境搭建

      1.安装Mysql

      安装mysql的文档很多,在这里不再赘述,无非是这么几个步骤:

引用

      wget mysql*.tar.gz

      tar vxzf mysql*.tar.gz && cd mysql*

      ./configure –prefix=/usr/local/mysql–with-charset=gbk >configure.log 2>&1

      make >make.log 2>&1 && makeinstall >install.log 2>&1

      然后运行mysql_install_db,注意/var/lib/mysql下的权限,然后便可以启动mysql了。需要注意的是,一定要确保mysql–uroot能直接访问进mysql (这是最简便的方法)。

      2.安装bind,使用bind的mysql sdb

我使用的bind版本是9.3.4,在bind的官网ftp上可以下载到最新稳定的bind版本.Bind的mysql sdb在sf.net上可以下载到0.1版本,似乎mysql-bind(mysqlsdb)已经停止更新了.下载到bind-9.3.4.tar.gz和mysql-bind-0.1.tgz后便可以安装了.

引用  tar vxzf bind-9.3.4.tar.gz && tarvxzf mysql-bind-0.1.tgz

cp mysql-bind/mysqldb.c bind-9.3.4/bin/named-f

cp mysql-bind/mysqldb.hbind-9.3.4/bin/named/include -f

同时,修改bind-9.3.4.tar.gz/bin/named/Makefile.in文件:



DBDRIVER_OBJS =

DBDRIVER_SRCS =

DBDRIVER_INCLUDES =

DBDRIVER_LIBS =

更改为

DBDRIVER_OBJS=mysqldb.@O@

DBDRIVER_SRCS = mysqldb.c

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

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

同时在bind-9.3.4/bin/named/main.c中,找到

/* xxdb_init(); */

在后面添加

mysqldb_init();

再找到

/* xxdb_clear(); */

在后面添加

mysqldb_clear();

./configure –prefix=/usr/local/named–enable-threads >configure.log 2>&1

make >make.log 2>&1 && makeinstall >install.log 2>&1

如此,如果没有出错,正常的bind mysqlsdb就已经添加了.初步配置好bind和建立mysql的dns数据库后便可以做测试了.

      3.启动并测试

关于bind的配置和mysql的dns数据库建立在第三和第四部分介绍.你可以先查看后面两部分再回来看bind启动和测试.

启动bind有几种模式,在调试的时候,建议采用 bind -unamed -g的方式运行,可以在终端看见详细的调试信息.也可以在mysqldb.c中加入query语句的输出和query.c中加入bind解析流程的输入,来查看bind的运行状态.

而以daemon方式运行则可以采用 bind -u named -c/etc/named.conf .建议采用named用户setuid方式运行.

如果named能够正常运作,这里的正常的运作是说named启动后没有任何fail或任何error,例如加载所有zone/db时都成功,而没有fail.那么便可以在随意一台能互相访问的机器上做测试了.设计client上的/etc/resolv.conf,在第一行添加nameservernamed_server_ip.然后便可以用安装bind时已经额外安装的工具dig/nslookup进行测试了.关于dig和nslookup命令,可以用man1 dig和man 1 nslookup查看. 最常用的dig进行正向解析:

引用dig www.mydomain.com

dig -x **.**.**.**(IP)

如果没有得到结果,却有授权信息的话,那么基本配置是正确的,问题可能在A记录或者视图是否正确上.如果连授权信息都不显示的话,那么基本配置出现了问题,如zone未能加载,db链接问题等等.可以查看调试信息分析原因.

3. Bind配置

      bind是一款开放源码的DNS服务器软件,Bind由美国加州大学Berkeley分校开发和维护的,全名为BerkeleyInternet NameDomain。它是目前世界上使用最为广泛的DNS服务器软件,也是大多数系统管理员最喜欢的DNS软件,支持各种unix平台和windows平台。

bind的配置比较繁琐,在其官方网站上有为系统管理员编写的80多页的手册,对于9.0以上的版本早有汉化版本,xplore提供下载地址在此。或者,可以直接参考鸟哥的linux私房菜中关于dns配置一章,基本上能满足所需的要求(http://linux.vbird.org/lin…

BIND+Mysql兑现DNS轮询泛解析和IP视图

相关文章:

你感兴趣的文章:

标签云: