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