最近几天一直在bind9+mysql中盘旋,搞的头晕脑涨的,该死的DNS同步~呵呵,只能怪自己心急`总是搞一会儿就把bind停掉,今天起,就不停掉bind了,让他自己去同步吧,好了不废话了,我把安装步骤发出来和大家共项,有兴趣的照着做,高手给指点一二,谢谢,欢迎各种板砖,臭鸡蛋~
测试环境:ubuntu8.04
在万网花10元申请的域名服务器 ns1.edgora.cn 在这里鄙视他一下。NND这也要钱。
要解析的域名 xueku.org.cn
服务器IP地址 123.123.123.123
需要的软件包:bind9.5.tar.gz apache2 php5 php-mysql mysql-bind.tar.gz phpmyadmin.gz mysql-server libmysqlclient15-dev php5-cli
1。apache2 php5 mysql-server 我就apt-get install 安装了,ubuntu打包文件还是很不错的,当然高手可以安装源代码`修改源代码安装可以匹配自己的机器才是稳定么,呵呵我没那么高的技术,也懒的去修改源代码!本人懒。
apt-get install apache2 php5 php5-cli php5-mysql mysql-server libmysqlclient15-dev
大陆用户推荐用C99的源,我是在美国服务器上装,速度惊人,呵呵不用修改源`
2。安装 bind9.5+mysql-bind在这里我穿插一下我的郁闷的问题,我在bind官方网站在windows XP 下载的bind9 下载下来传到服务器上的,tar 解压的时候总是提示文件不全,不论下载多少次都是,所有bind9.5我是wget下载的。不知道你们安装的时候会怎么样。
tar zxvf bind9.5
tar zxvf mysql-bind
cp mysql-bind/mysqldb.c bind9.5/bin/named
cp mysql-bind/mysqldb.h bind9.5/bin/named/include/named
cd bind9.5
vim bin/named/Makefile.in 将
DBDRIVER_OBJS =
DBDRIVER_SRCS =
DBDRIVER_INCLUDES =
DBDRIVER_LIBS =
改成
DBDRIVER_SRCS =
DBDRIVER_INCLUDES =
DBDRIVER_LIBS =
改成
DBDRIVER_OBJS =
mysqldb.@O@
DBDRIVER_SRCS = mysqldb.c
DBDRIVER_INCLUDES = -I'/usr/include/mysql'
DBDRIVER_LIBS = -L'/usr/lib/mysql' -lmysqlclient -lz -lcrypt -lnsl -lm -lc -lnss_files -lnss_dns -lresolv -lc -lnss_files -lnss_dns -lresolv
DBDRIVER_SRCS = mysqldb.c
DBDRIVER_INCLUDES = -I'/usr/include/mysql'
DBDRIVER_LIBS = -L'/usr/lib/mysql' -lmysqlclient -lz -lcrypt -lnsl -lm -lc -lnss_files -lnss_dns -lresolv -lc -lnss_files -lnss_dns -lresolv
我的是 ubuntu系统 mysql 开发包路径可能不一样~大家指定自己的路径就可以了不然会报错改完后wq保存退出。
然后修改 bin/named/main.c
查找 xxdb_init();
在 注释文件 xxdb_init();
下添加 mysqldb_init();
然后查找查找 xxdb_clear();
再下面添加mysqldb_clear();
修改完后wq 保存退出,然后开始编译安装
./configure --prefix=/usr/local/named --enable-threads #--enable-threads 开启多线程处理能力
make
make install
安装完后,需要手工建立配置文件的。不像 rpm 和deb包一样会有默认文件的。
cd /usr/local/named/etc
生成 rndc 控制命令的key文件
../sbin/rndc-confgen > etc/rndc.conf
#### 从 rndc.conf 文件中提取 named.conf 用的 key 生成 named.conf 文件
cd /usr/local/named/etc
tail -10 rndc.conf | head -9 | sed 's/# //g' > named.conf
#### 此时,named.conf 内容为:
key "rndc-key" {
algorithm hmac-md5;
secret "O0SuB34RK+E3r+m5Fbh2eA==";
};
controls {
inet 127.0.0.1 port 953
allow { 127.0.0.1; } keys { "rndc-key"; };
};
#### dig 命令直接生成 named.root 文件,这个文件是很标准的东东,
#### 有了它,本地 dns 不能解的就上总部去问
cd /usr/local/named/etc
dig > named.root
配置named.conf
cd /usr/local/named/etc
tail -10 rndc.conf | head -9 | sed 's/# //g' > named.conf
#### 此时,named.conf 内容为:
key "rndc-key" {
algorithm hmac-md5;
secret "O0SuB34RK+E3r+m5Fbh2eA==";
};
controls {
inet 127.0.0.1 port 953
allow { 127.0.0.1; } keys { "rndc-key"; };
};
#### dig 命令直接生成 named.root 文件,这个文件是很标准的东东,
#### 有了它,本地 dns 不能解的就上总部去问
cd /usr/local/named/etc
dig > named.root
配置named.conf
key "rndc-key" {
algorithm hmac-md5;
secret "SNMYFWAAVeCB/udiejFdGw==";
};
algorithm hmac-md5;
secret "SNMYFWAAVeCB/udiejFdGw==";
};
controls {
inet 127.0.0.1 port 953
allow { 127.0.0.1; } keys { "rndc-key"; };
};
inet 127.0.0.1 port 953
allow { 127.0.0.1; } keys { "rndc-key"; };
};
include "named.conf.options";
zone "." {
type hint;
file "/usr/local/named/etc/named.root";
};
type hint;
file "/usr/local/named/etc/named.root";
};
zone "localhost" {
type master;
file "/usr/local/named/etc/db.local";
};
type master;
file "/usr/local/named/etc/db.local";
};
zone "127.in-addr.arpa" {
type master;
file "/usr/local/named/etc/db.127";
};
type master;
file "/usr/local/named/etc/db.127";
};
zone "0.in-addr.arpa" {
type master;
file "/usr/local/named/etc/db.0";
};
type master;
file "/usr/local/named/etc/db.0";
};
zone "255.in-addr.arpa" {
type master;
file "/usr/local/named/etc/db.255";
};
type master;
file "/usr/local/named/etc/db.255";
};
zone "xueku.org.cn" IN {
type master;
database "mysqldb edgora ludy localhost root 123";
};
这些 db.local db.127 db.0 db.255 网上很多配置,其实也没什么用。
#### 上述内容中配置自己的
#### 数据库名(edgora),表名(ludy),MYSQL主机(localhost),
#### MYSQL用户(root),MYSQL密码(123)
#### 当然,前提条件是在 mysql 建库。
#### 数据库名(edgora),表名(ludy),MYSQL主机(localhost),
#### MYSQL用户(root),MYSQL密码(123)
#### 当然,前提条件是在 mysql 建库。
这里我介绍一下,bind9.4以后新加的功能allow-query-cache。
感觉上allow-query-cache在未设置allow-recursion的情况下可以取代allow-recursion的功能,有继承关系。如果想禁止用户的递归查询请求,还需要将 allow-query-cache 选项关闭,否则用户仍然可能在 cache 中查到数据
我在这里 配置的 named.conf.options 内容如下
options {
directory "/usr/local/named/etc";
allow-query { any; };
allow-recursion { any; };
allow-query-cache {any;};
datasize 2098;
};
directory "/usr/local/named/etc";
allow-query { any; };
allow-recursion { any; };
allow-query-cache {any;};
datasize 2098;
};
我这样设置是非常不安全的,因为任何人都可以利用你的服务器来做DNS这样知道的多了,会造成严重的负载。所以大家可以建立acl规则来指定用户来使用你的DNS服务器。因为我测试就不这么做了,给大家一个例子。
例子:
acl "trusted"{
192.168.6.0/24;
options {
directory "/usr/local/named/etc";
allow-query { any; };
allow-recursion { trusted; };
allow-query-cache {trusted;};
datasize 2098;
};
4.安装phpmyadmin
directory "/usr/local/named/etc";
allow-query { any; };
allow-recursion { trusted; };
allow-query-cache {trusted;};
datasize 2098;
};
4.安装phpmyadmin
tar zxvf phpmyadmin.gz
mv phpmyadmin /var/www
我mysql有点不信任自己记得代码,所有用phpmyadmin比较安全,也简单。
找到 /libraries/config.default.php文件(config.default.php复制到phpmyadmin目录下,然后更名为config.inc.php),该文件有如下项目(2-8)须自行配置,windows用写字板(不要用记事本,这是UTF8编码)进行编辑,在
linux下直接用vim编辑.
查找 $cfg['PmaAbsoluteUri'] 修改为你将上传到空间的phpMyAdmin的网址
如:$cfg['PmaAbsoluteUri'] = 'http://123.123.123.123/phpmyadmin
查找 $cfg['Servers'][$i]['host'] = 'localhost';(通常用默认,也有例外,可以不用修改)
查找 $cfg['Servers'][$i]['auth_type'] = 'config';
在自己的机子里调试用config;如果在网络上的空间用cookie,这里我们既然在前面已经添加了网址,就修改成cookie ,这里建议使用cookie.
查找 $cfg['Servers'][$i]['user'] = 'root'; // MySQL user(mysql用户名,自己机里用root;)
查找 $cfg['Servers'][$i]['pass
word'] = ''; // MySQL password (mysql用户的密码,自己的服务器一般都是mysql用户root的密码)
查找 $cfg['Servers'][$i]['only_db'] = ''; // If set to a db-name, only(你只有一个数据就设置一下;如果你在本机或想架设服务器,那么建议留空) .查找 $cfg['DefaultLang'] = 'zh'; (这里是选择语言,zh代表简体中文的意思,这里不知道填gbk对否)
设置完毕后保存
如果出现“配置文件现在需要绝密的短语密码(blowfish_secret)”那么请在$cfg['blowfish_secret'] = ' ';的等号里面设置你网站的cookie,例如:$cfg['blowfish_secret'] = '任意字符';这是因为你的“$cfg['Servers'][$i]['auth_type'] = 'cookie'的原因。
哎我的phpmyadmin麻烦了点,高手见量`
![](https://i-blog.csdnimg.cn/blog_migrate/65e1deb3b7ec0219318b79e9ca8d96ef.png)
相信大家如何建立数据库就不用说了吧,输入root 密码 123
进去后设置一下mysql的安全吧。然后建立一个数据库
![](https://i-blog.csdnimg.cn/blog_migrate/0b9b79c37735ca5095b99303aa8137a1.png)
好了`然后插入表了,因为时间问题我就不多说了。直接插代码了,我的表名ludy
CREATE TABLE ludy (
name varchar(255) default NULL,
ttl int(11) default NULL,
rdtype varchar(255) default NULL,
rdata varchar(255) default NULL
) TYPE=MyISAM;
name varchar(255) default NULL,
ttl int(11) default NULL,
rdtype varchar(255) default NULL,
rdata varchar(255) default NULL
) TYPE=MyISAM;
####以下是正向解析示范可以直接倒入
INSERT INTO mydomain VALUES ('xueku.org.cn', 259200, 'SOA', 'xueku.org.cn. root.xueku.org.cn 200505101 28800 7200 86400 28800');
INSERT INTO ludy VALUES ('xueku.org.cn', 259200, 'NS', 'ns1.edgora.cn.');
INSERT INTO ludy VALUES ('xueku.org.cn', 259200, 'MX', '10 mail.xueku.org.cn.');
INSERT INTO ludy VALUES ('ns1.edgora.cn', 259200, 'A', '123.123.123.123');
INSERT INTO ludy VALUES ('xueku.org.cn', 259200, 'A', '123.123.123.123');
INSERT INTO mydomain VALUES ('xueku.org.cn', 259200, 'SOA', 'xueku.org.cn. root.xueku.org.cn 200505101 28800 7200 86400 28800');
INSERT INTO ludy VALUES ('xueku.org.cn', 259200, 'NS', 'ns1.edgora.cn.');
INSERT INTO ludy VALUES ('xueku.org.cn', 259200, 'MX', '10 mail.xueku.org.cn.');
INSERT INTO ludy VALUES ('ns1.edgora.cn', 259200, 'A', '123.123.123.123');
INSERT INTO ludy VALUES ('xueku.org.cn', 259200, 'A', '123.123.123.123');
INSERT INTO ludy VALUES ('www.xueku.org.cn', 259200, 'A', '123.123.123.123');
5.启动 bind测试它是否正常工作
root@edgora:/usr/local/named/etc# ../sbin/named -g
04-Jul-2008 02:58:03.821 starting BIND 9.5.0 -g
04-Jul-2008 02:58:03.822 found 1 CPU, using 1 worker thread
04-Jul-2008 02:58:03.827 loading configuration from '/usr/local/named/etc/named.conf'
04-Jul-2008 02:58:03.828 listening on IPv6 interfaces, port 53
04-Jul-2008 02:58:03.831 binding TCP socket: address in use
04-Jul-2008 02:58:03.832 listening on IPv4 interface lo, 127.0.0.1#53
04-Jul-2008 02:58:03.856 binding TCP socket: address in use
04-Jul-2008 02:58:03.856 listening on IPv4 interface eth0, 75.125.197.202#53
04-Jul-2008 02:58:03.906 binding TCP socket: address in use
04-Jul-2008 02:58:03.963 default max-cache-size (33554432) applies
04-Jul-2008 02:58:03.990 automatic empty zone: 254.169.IN-ADDR.ARPA
04-Jul-2008 02:58:03.991 automatic empty zone: 2.0.192.IN-ADDR.ARPA
04-Jul-2008 02:58:03.991 automatic empty zone: 255.255.255.255.IN-ADDR.ARPA
04-Jul-2008 02:58:03.991 automatic empty zone: 0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.IP6.ARPA
04-Jul-2008 02:58:03.991 automatic empty zone: 1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.IP6.ARPA
04-Jul-2008 02:58:03.991 automatic empty zone: D.F.IP6.ARPA
04-Jul-2008 02:58:03.991 automatic empty zone: 8.E.F.IP6.ARPA
04-Jul-2008 02:58:03.991 automatic empty zone: 9.E.F.IP6.ARPA
04-Jul-2008 02:58:03.991 automatic empty zone: A.E.F.IP6.ARPA
04-Jul-2008 02:58:03.992 automatic empty zone: B.E.F.IP6.ARPA
04-Jul-2008 02:58:04.005 default max-cache-size (33554432) applies: view _bind
04-Jul-2008 02:58:04.025 /usr/local/named/etc/named.conf:7: couldn't add command channel 127.0.0.1#953: address in use
04-Jul-2008 02:58:04.026 ignoring config file logging statement due to -g option
04-Jul-2008 02:58:04.046 zone 0.in-addr.arpa/IN: loaded serial 1
04-Jul-2008 02:58:04.047 zone 127.in-addr.arpa/IN: loaded serial 1
04-Jul-2008 02:58:04.048 zone 255.in-addr.arpa/IN: loaded serial 1
04-Jul-2008 02:58:04.057 zone localhost/IN: loaded serial 1
04-Jul-2008 02:58:04.059 running
好没有错误`嘿嘿``测试吧。把自己的DNS设置成123.123.123.123 打开IE [url]www.xueku.org.cn[/url]
04-Jul-2008 02:58:03.821 starting BIND 9.5.0 -g
04-Jul-2008 02:58:03.822 found 1 CPU, using 1 worker thread
04-Jul-2008 02:58:03.827 loading configuration from '/usr/local/named/etc/named.conf'
04-Jul-2008 02:58:03.828 listening on IPv6 interfaces, port 53
04-Jul-2008 02:58:03.831 binding TCP socket: address in use
04-Jul-2008 02:58:03.832 listening on IPv4 interface lo, 127.0.0.1#53
04-Jul-2008 02:58:03.856 binding TCP socket: address in use
04-Jul-2008 02:58:03.856 listening on IPv4 interface eth0, 75.125.197.202#53
04-Jul-2008 02:58:03.906 binding TCP socket: address in use
04-Jul-2008 02:58:03.963 default max-cache-size (33554432) applies
04-Jul-2008 02:58:03.990 automatic empty zone: 254.169.IN-ADDR.ARPA
04-Jul-2008 02:58:03.991 automatic empty zone: 2.0.192.IN-ADDR.ARPA
04-Jul-2008 02:58:03.991 automatic empty zone: 255.255.255.255.IN-ADDR.ARPA
04-Jul-2008 02:58:03.991 automatic empty zone: 0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.IP6.ARPA
04-Jul-2008 02:58:03.991 automatic empty zone: 1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.IP6.ARPA
04-Jul-2008 02:58:03.991 automatic empty zone: D.F.IP6.ARPA
04-Jul-2008 02:58:03.991 automatic empty zone: 8.E.F.IP6.ARPA
04-Jul-2008 02:58:03.991 automatic empty zone: 9.E.F.IP6.ARPA
04-Jul-2008 02:58:03.991 automatic empty zone: A.E.F.IP6.ARPA
04-Jul-2008 02:58:03.992 automatic empty zone: B.E.F.IP6.ARPA
04-Jul-2008 02:58:04.005 default max-cache-size (33554432) applies: view _bind
04-Jul-2008 02:58:04.025 /usr/local/named/etc/named.conf:7: couldn't add command channel 127.0.0.1#953: address in use
04-Jul-2008 02:58:04.026 ignoring config file logging statement due to -g option
04-Jul-2008 02:58:04.046 zone 0.in-addr.arpa/IN: loaded serial 1
04-Jul-2008 02:58:04.047 zone 127.in-addr.arpa/IN: loaded serial 1
04-Jul-2008 02:58:04.048 zone 255.in-addr.arpa/IN: loaded serial 1
04-Jul-2008 02:58:04.057 zone localhost/IN: loaded serial 1
04-Jul-2008 02:58:04.059 running
好没有错误`嘿嘿``测试吧。把自己的DNS设置成123.123.123.123 打开IE [url]www.xueku.org.cn[/url]
能打开OK。 host -t ns xueku.org.cn 得到 ns1.edgora.cn好一切正常,现在就等你的bind9与世界各地的DNS同步了,默认的DNS就可以解析你的域名啦。写的有点仓促,呵呵如果有错误谢谢指点。nslookup xueku.org.cn也可以测试的。。
在这里 要谢谢``帮助我的人` 呵呵``让我学到了不少东西。当然要想同步的快点把TTL修改低一点 修改 3600吧呵呵``一小时同步一次。再告诉大家一个好用的测试命令
也是向别人学习的呵呵。dig @203.119.27.1 xueku.org.cn
; <<>> DiG 9.3.5rc2 <<>> @203.119.27.1 xueku.org.cn
; (1 server found)
;; global options: printcmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 1310
;; flags: qr rd; QUERY: 1, ANSWER: 0, AUTHORITY: 2, ADDITIONAL: 0
;; QUESTION SECTION:
;xueku.org.cn. IN A
;; AUTHORITY SECTION:
xueku.org.cn. 21600 IN NS ns.edgora.cn.
xueku.org.cn. 21600 IN NS ns1.edgora.cn.
;; Query time: 93 msec
;; SERVER: 203.119.27.1#53(203.119.27.1)
;; WHEN: Tue Jul 01 19:41:27 2008
;; MSG SIZE rcvd: 72
; (1 server found)
;; global options: printcmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 1310
;; flags: qr rd; QUERY: 1, ANSWER: 0, AUTHORITY: 2, ADDITIONAL: 0
;; QUESTION SECTION:
;xueku.org.cn. IN A
;; AUTHORITY SECTION:
xueku.org.cn. 21600 IN NS ns.edgora.cn.
xueku.org.cn. 21600 IN NS ns1.edgora.cn.
;; Query time: 93 msec
;; SERVER: 203.119.27.1#53(203.119.27.1)
;; WHEN: Tue Jul 01 19:41:27 2008
;; MSG SIZE rcvd: 72
dig @ns1.edgora.cn
[url]www.xueku.org.cn[/url]
; <<>> DiG 9.3.5rc2 <<>> @ns1.edgora.cn [url]www.xueku.org.cn[/url]
; (1 server found)
;; global options: printcmd
;; connection timed out; no servers could be reached
; <<>> DiG 9.3.5rc2 <<>> @ns1.edgora.cn [url]www.xueku.org.cn[/url]
; (1 server found)
;; global options: printcmd
;; connection timed out; no servers could be reached
因为我的还没有同步所以报错了。
本文转自Deidara 51CTO博客,原文链接:http://blog.51cto.com/deidara/85706,如需转载请自行联系原作者