[转帖]在centos6.3上用bind和mysql搭建DNS服务器的过程及遇到的问题_VMware, Unix及操作系统讨论区_Weblogic技术|Tuxedo技术|中间件技术|Oracle论坛|JAVA论坛|Linux/Unix技术|hadoop论坛_联动北方技术论坛  
网站首页 | 关于我们 | 服务中心 | 经验交流 | 公司荣誉 | 成功案例 | 合作伙伴 | 联系我们 |
联动北方-国内领先的云技术服务提供商
»  游客             当前位置:  论坛首页 »  自由讨论区 »  VMware, Unix及操作系统讨论区 »
总帖数
1
每页帖数
101/1页1
返回列表
0
发起投票  发起投票 发新帖子
查看: 3987 | 回复: 0   主题: [转帖]在centos6.3上用bind和mysql搭建DNS服务器的过程及遇到的问题        下一篇 
zhang.chen
注册用户
等级:少校
经验:1145
发帖:69
精华:1
注册:2013-10-31
状态:离线
发送短消息息给zhang.chen 加好友    发送短消息息给zhang.chen 发消息
发表于: IP:您无权察看 2013-11-4 16:27:39 | [全部帖] [楼主帖] 楼主

这两天在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



赞(0)    操作        顶端 
总帖数
1
每页帖数
101/1页1
返回列表
发新帖子
请输入验证码: 点击刷新验证码
您需要登录后才可以回帖 登录 | 注册
技术讨论