免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 3119 | 回复: 10
打印 上一主题 下一主题

[学习分享] 在centos6.3上用bind和mysql搭建DNS服务器的过程及遇到的问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2013-09-29 15:57 |只看该作者 |倒序浏览
本帖最后由 kernel359 于 2013-09-30 10:35 编辑

这两天在centos6.3上搭一个DNS服务器,过程中遇到了一些问题,记录一下:

系统:centos6.3
工具:bind-9.9.2
数据库:mysql



安装mysql:
sudo yum install mysql mysql-server mysql-devel
:在安装这个的时候就出现了问题,第一次在网上找时,说是安装mysql-server和php-mysql,结果导致,后面的bind没办法编译,因为它其中的代码用到了client-mysql,后面想安装client-mysql的时候,也一直没装上,浪费时间不少。

1.启动服务: /etc/rc.d/init.d/mysqld start

2.修改root密码: mysqladmin -uroot password 'yourpassword'

3.修改启动文件: /etc/rc.d/init.d/mysqld :
  --basedir=/usr --user=mysql >/dev/null --character-set-server=utf8 2>&1 &   //设置utf8编码格式

4.修改/etc/my.cnf(注:不是my.conf)
[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
user=mysql
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0
default-character-set=utf8
init_connect='SET NAMES utf8'
[client]
default-character-set=utf8

5.重启服务:/etc/init.d/mysqld restart

6、登陆mysql: mysql -u username -p

7、导入自己的数据
source xxx.sql



编译安装bind:
1、解压并进入相应的目录
2、./configure --prefix=/usr --sysconfdir=/etc/bind --with-fixed-rrset (注意 --with-fixed-rrset,它保证查询返回的顺序)
3、sudo make
4、sudo make install
注:在编译和安装的时候,可能会用到一些信赖的程序,这个时候装一下,就行。比如我的系统就是很光的,当时到要装make和gcc这类。

5、配置/etc/bind/named.conf
//我系统上连这个目录和文件都没有,是自己建的
//该文件是bind的主配文件,它里面定义了各个区,然后包含指向相应区数据的文件
//不过我用得不多,因为是自己建的,里面什么也没有,只加了一句“include "/etc/bind/named.conf.xxx";”

6、配置区文件/etc/bind/named.conf.xxx
zone "xxx" {
type master;
notify no;
database "mysqldb databasename tablename localhost root root";
//databasename:数据库名字
//tablename:要查的数据库中表名
//localhost:因为是在自己主机上,所以这么用,或者可用127.0.0.1,用其它的,比如自己机器名或者IP都不好使(不知原因)
//root(第一个):访问数据库用的户名
//root(第二个):相就用户的密码
};

7、开启bind
sudo named -g //我做的时候,因为权限问题,输出的log中,有错误,所以少不了sudo

8、测试在另一台PC上
dig @dns服务器IP xxx(要找的数据)
//@是必要的,要不然只要PC和服务器只要能ping通,就一定会有answer,而实际上并没有成功
有answer,并值不为0则成功



出现过的问题:
1、rndc.conf not found
这个文件要单独生成:
sudo ./usr/sbin/rndc-confgen > /etc/rndc.conf
//因为有权限问题,所以我没能把rndc.conf直接写进/etc/中,是写到其它地方,然后加进去的
另外把rndc.conf中的
===================
key "rndc-key" {
        algorithm hmac-md5;
        secret "NSedE4K070dUfAiHnBjqKQ==";
};

controls {
        inet 127.0.0.1 port 953
                allow { 127.0.0.1; } keys { "rndc-key"; };
};
//注释去掉,并把它们copy到/etc/bind/named.conf中
//我是放到"include "/etc/bind/named.conf.xxx";"之前的,也不对不对,但确实能用

# /usr/local/named/sbin/rndc-confgen > /usr/local/named/etc/rndc.conf
把rndc.conf 中的key信息输出到 named.conf 中

注:不能执行rndc-confgen命令是由于该命令是需要调用/dev/random,而由于rndc-confgen的默认加密位数应该是218bit,超出了random默认支持的数据量导致。

解决方法:rndc-confgen -s 127.0.0.1  -r /dev/urandom >; rndc.conf

# tail –n10 rndc.conf | head -n9 | sed -e s/#\ //g > named.conf

这里强调一下,rndc.conf与named.conf的key值必须完全一样,而且并不需要生成rndc.key,这个问题纠缠了我大约3个小时

这是网上的,我没用到,可能有人有用:http://blog.sina.com.cn/s/blog_5115e6fb0100umzm.html


2、我遇到的第二个问题是,在自己本PC上(即和DNS同一台PC上)dig的时候,能找到,可在另外一台PC上却不行time out .....not reached
这是防火墙的问题,解决办法
sudo vim /etc/sysconfig/iptables
//添加以下内容(===不要)
=======================
-A INPUT -m state --state NEW -m tcp -p tcp --dport 53 -j ACCEPT
-A INPUT -m state --state NEW -m udp -p udp --dport 53 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 953 -j ACCEPT
//以上内空添加进去
//-A INPUT -p tcp -m tcp --dport 80 -j ACCEPT,开80是搭建其它时用到了,聊以记录之
=======================
//下面这些者是在终端上的命令,不是加到iptables中的
getenforce
sudo setenforce 0
getenforce
sudo service iptables restart
sudo named -g

3、当sudo named -g的时候,出现create database: failure
这是数据库与bind连接不对有可能是用的数据驱动不对(我用的mysql,所以在区配置文件中写的是mysqldb databasename xxxxx)
还有可能是区配置文件中"mysqldb databasename tablename localhost root root;"里面那个localhost,用到时候可以换成IP,或
者127.0.0.1或者IP或者主机名试一下,我用localhost才有效;另不要把用户,密码等写错了。






以上是个人总结,其实我也只看到了皮毛,里面有些细节的东西,并不懂,另外其它人做的时候,可能出现的问题不一样,希望大家讨论
另外,如果有人能指正我其中的内容,将非常感谢!!



补充:
版主回复mysql没有授权的问题,自己查了一下,作个补充,也方便自己学习

1、进入myql: mysql -u root -p
//进入的时候,默认的是进一个mysql的数据库(另换数据库,用use xxx),这个库我理解是mysql管理数据库用的
//其中包含user,db等数据表,其中用各种权限字段,host字段对应访问的主机(可以用通配符%),user对应访问的用户,看来访问的时候,不但要求用户,还要求了访问的主机

2、进入要授权的数据库
use xxxx; //也可不进入,在授权的时候写oats.italy(如下)

3、授权
GRANT SELECT, INSERT ON oats.italy TO wj@314interactive.com;
//select,insert:是授予的操作
//oats:数据库名字
//italy:表名
//wj:用户名
//314interactive.com:主机

注:在mysql数据库中
show databases; //显示有哪些数据库
show tables; //将显示有哪些表

以上补充来自:http://tech.it168.com/a2010/0114/837/000000837456.shtml




评分

参与人数 1可用积分 +6 收起 理由
chenyx + 6 赞一个!

查看全部评分

论坛徽章:
381
CU十二周年纪念徽章
日期:2014-01-04 22:46:58CU大牛徽章
日期:2013-03-13 15:32:35CU大牛徽章
日期:2013-03-13 15:38:15CU大牛徽章
日期:2013-03-13 15:38:52CU大牛徽章
日期:2013-03-14 14:08:55CU大牛徽章
日期:2013-04-17 11:17:19CU大牛徽章
日期:2013-04-17 11:17:32CU大牛徽章
日期:2013-04-17 11:17:37CU大牛徽章
日期:2013-04-17 11:17:42CU大牛徽章
日期:2013-04-17 11:17:47CU大牛徽章
日期:2013-04-17 11:17:52CU大牛徽章
日期:2013-04-17 11:17:56
2 [报告]
发表于 2013-09-29 16:36 |只看该作者
  1. localhost:因为是在自己主机上,所以这么用,或者可用127.0.0.1,用其它的,比如自己机器名或者IP都不好使(不知原因)
复制代码
这个你需要检查下mysql的授权表.本机上localhost和127都可以,其他的,你需要做授权.
另外,不建议直接用mysql的root用户,可以在mysql里面用普通用户做查询.

论坛徽章:
33
荣誉会员
日期:2011-11-23 16:44:17天秤座
日期:2014-08-26 16:18:20天秤座
日期:2014-08-29 10:12:18丑牛
日期:2014-08-29 16:06:45丑牛
日期:2014-09-03 10:28:58射手座
日期:2014-09-03 16:01:17寅虎
日期:2014-09-11 14:24:21天蝎座
日期:2014-09-17 08:33:55IT运维版块每日发帖之星
日期:2016-04-17 06:23:27操作系统版块每日发帖之星
日期:2016-04-18 06:20:00IT运维版块每日发帖之星
日期:2016-04-24 06:20:0015-16赛季CBA联赛之天津
日期:2016-05-06 12:46:59
3 [报告]
发表于 2013-09-29 17:23 |只看该作者
bind 9.9.2 支持 mysql 了 ?

论坛徽章:
21
白羊座
日期:2013-08-23 15:49:17金牛座
日期:2013-10-08 17:00:03处女座
日期:2013-10-12 11:54:11CU十二周年纪念徽章
日期:2013-10-24 15:41:34午马
日期:2013-11-27 14:07:21巨蟹座
日期:2013-12-04 10:56:03水瓶座
日期:2013-12-04 15:58:00亥猪
日期:2014-05-24 16:02:3115-16赛季CBA联赛之辽宁
日期:2016-11-07 13:52:53戌狗
日期:2013-08-23 16:15:31白羊座
日期:2013-08-24 21:59:24巨蟹座
日期:2013-08-25 16:34:24
4 [报告]
发表于 2013-09-30 09:16 |只看该作者
这两个是结合一起用吗?

论坛徽章:
0
5 [报告]
发表于 2013-09-30 09:54 |只看该作者
回复 2# chenyx

非常谢谢指导!!
问题确实是这样,mysql里面没有授权,以前还不知道有这个,再次感谢!
另外,root权限确实太大,用其它用户好点。
   

论坛徽章:
0
6 [报告]
发表于 2013-09-30 09:55 |只看该作者
q1208c 发表于 2013-09-29 17:23
bind 9.9.2 支持 mysql 了 ?


可以吧,至少我这是用的这个,而且能搭起来。

论坛徽章:
0
7 [报告]
发表于 2013-09-30 09:55 |只看该作者
zongg 发表于 2013-09-30 09:16
这两个是结合一起用吗?

是的,可以。

论坛徽章:
21
白羊座
日期:2013-08-23 15:49:17金牛座
日期:2013-10-08 17:00:03处女座
日期:2013-10-12 11:54:11CU十二周年纪念徽章
日期:2013-10-24 15:41:34午马
日期:2013-11-27 14:07:21巨蟹座
日期:2013-12-04 10:56:03水瓶座
日期:2013-12-04 15:58:00亥猪
日期:2014-05-24 16:02:3115-16赛季CBA联赛之辽宁
日期:2016-11-07 13:52:53戌狗
日期:2013-08-23 16:15:31白羊座
日期:2013-08-24 21:59:24巨蟹座
日期:2013-08-25 16:34:24
8 [报告]
发表于 2013-09-30 10:06 |只看该作者
回复 7# kernel359


    哈哈,我out  了, 谢谢分享。

论坛徽章:
0
9 [报告]
发表于 2013-09-30 11:31 |只看该作者
回复 8# zongg

看来以前也做过这个呀,能给点建议吗?因为我这个也是表面上能通过了,里面的细节,还是很多不太明白


   

论坛徽章:
21
白羊座
日期:2013-08-23 15:49:17金牛座
日期:2013-10-08 17:00:03处女座
日期:2013-10-12 11:54:11CU十二周年纪念徽章
日期:2013-10-24 15:41:34午马
日期:2013-11-27 14:07:21巨蟹座
日期:2013-12-04 10:56:03水瓶座
日期:2013-12-04 15:58:00亥猪
日期:2014-05-24 16:02:3115-16赛季CBA联赛之辽宁
日期:2016-11-07 13:52:53戌狗
日期:2013-08-23 16:15:31白羊座
日期:2013-08-24 21:59:24巨蟹座
日期:2013-08-25 16:34:24
10 [报告]
发表于 2013-09-30 11:38 |只看该作者
回复 9# kernel359


    我只做过bind 主从,并没有结合mysql 一起用过。不太了解这种模式。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP