系统环境: ubuntu12.04 server
软件版本: Bind9.9.2-2
Lnmp0.9-full
系统安装
只选择Openssh,如果你不需要远程的话也可以不要,千万不要选择自动安装的mysql和DNS server。
Mysql
然后执行lnmp自动安装,安装完后mysql是我们主要用的服务。
然后进phpmyadmin建立一个数据库dns,然后建立以下表格:
create table `records`( `id` int(10) unsigned NOT NULL auto_increment, `zone` varchar(255) NOT NULL, `ttl` int(11) NOT NULL default '600', `type` varchar(255) NOT NULL default 'A', `host` varchar(255) NOT NULL, `mx_priority` int(11) default NULL, `data` text, primary key (`id`), key `type` (`type`), key `host` (`host`), key `zone` (`zone`));
字段说明:
Id不解释
Zone是动态域名的一级域名
Ttl是域名生存周期 我设置为10分钟 600s
Type是解析的种类,我架设的这个主要是动态域名服务,所以只支持A记录,其他记录的支持可以参考最后标注的文档
Host是动态域名的前缀,如xxx.china.com 这个就是xxx
Mx_priority 这个是优先级,默认为空即可
Data就是IP地址记录了
然后插入一条测试数据
INSERT INTO `records` (`id`, `zone`, `ttl`, `type`, `host`, `mx_priority`, `data`) VALUE (1, 'dengsir.com', 600, 'A', 'www', NULL, '8.8.8.8');
Bind:
解压下载的bind源码,然后进入它的目录
配置bind:
./configure --prefix=/usr/local/bind --enable-largefile --enable-threads=no --with-dlz-mysql
说明: with-dlz-mysql这个很重要,意思是开启mysql连接服务 bind-dlz
然后编译和安装
make
make install
进入安装目录生产key和配置文件
cd /usr/local/bind/sbin ./rndc-confgen >../etc/rndc.conf cd ../etc tail -10 rndc.conf | head -9 | sed s/#\ //g > named.conf
然后在named.conf中加入
dlz "Mysql zone" { database "mysql {host=localhost dbname=dns user=root pass=mysql} {select zone from records where zone = '$zone$'} {select ttl, type, mx_priority, data from records where zone = '$zone$' and host = '$record$'}"; };
上面的数据库地址 名称 用户名 密码可自己按照自己的设置修改
然后链接一个mysql的库文件给Bind
ln -s /usr/local/mysql/lib/mysql/libmysqlclient.so.16 /usr/lib/
这个文件可能叫xxx.so.16 也可能是其他,比如18,这个视mysq版本而定,我的是16
最后测试一下:
我们用显示信息的参数启动一下
/usr/local/bind/sbin/named -uroot -d1 -g &
如果没问题的话 上面添加的域名就可以被这个服务器解析了。
如果没问题后,可以去除参数添加进开机项
vi /etc/rc.local
在文件中的exit 0 前加入一下一行即可
/usr/local/bind/sbin/named
最后
优化一下前台php完成动态ip更新即可完成ddns服务器的架设。
参考文档:
http://bbs.chinaunix.net/thread-2301472-1-1.html
http://blog.chinaunix.net/uid-24690947-id-3069277.html
http://bind-dlz.sourceforge.net/mysql_driver.html
转载请注明出处:
浙公网安备 33010602011771号