建立我们自己的动态域名

所谓动态域名,如oray的花生壳等提供商,其实也是标准的DNS服务,只不过他们把dns解析时间弄快点,一般60秒更新一次。

虽然花生壳等免费DDNS可以使用,但是稳定性欠佳,在使用花生壳一年多的时间里面,有时候出现解析失效的情况。 困扰着开发团队,影响工作效率。

不过在此我还是要再次感谢它们,帮助我们度过这一年多的时间。

配置自己的动态dns的原理如下 :

1、 在域名注册商那里添加一条ns记录,把一个子域名,指向我们将要配置动态dns的服务器,我们会在这台dns服务器上配置,并实现动态dns服务。

比如我们建立 clouddev.domain.com的ns记录,指向一个ip地址或者A记录, 比如 171.99.21.31. 或者 ddns.domain.com.

2、 开始配置dns服务器,设置较小的更新间隔时间,为子域名配置相应的解析。

/etc/bind/named.conf

include \"/etc/bind/named.conf.options\";
include \"/etc/bind/named.conf.local\";
include \"/etc/bind/named.conf.default-zones\";

zone \"clouddev.domain.com\" {
type master;
file \"/etc/bind/db.clouddev\";
};


/etc/bind/db.clouddev

$TTL    30
$ORIGIN clouddev.domain.com.
@ IN SOA clouddev.domain.com. root.clouddev.domain.com. (
2011042700
10
10
30
30 )
@ IN NS ddns.domain.com.
* IN A 129.96.122.12
@ IN A 129.96.122.12


3、 设置要更新的dns记录文件为全局可写,这样我们可以用一个php程序来更新dns文件.并增加一个自动装载bind9配置文件的cron
附:dns记录文件模板

$TTL    30
$ORIGIN clouddev.domain.com.
@ IN SOA clouddev.domain.com. root.clouddev.domain.com. (
2011042700
10
10
30
30 )
@ IN NS ddns.domain.com.
@ IN A %IP%
* IN A %IP%


附:php程序


<?php
define('DDNS_TPL', '/root/db.clouddev.tpl');
define('DDNS_FILE', '/etc/bind/db.clouddev');
define('SEC_KEY', 'iamaverylonglongandlonglongkey');
function get_remote_ip() {
return $_SERVER[\"HTTP_X_REAL_IP\"];
}
function get_ddns_conf() {
return str_replace(\"%IP%\", get_remote_ip(), file_get_contents(DDNS_TPL));
}
function write_to_conf($str) {
return file_put_contents(DDNS_FILE, $str);
}
if (isset($_GET['key']) && $_GET['key'] === SEC_KEY)  {
write_to_conf(get_ddns_conf());
exit('ok');
}
exit('Access denied');


附:cron

[email protected]
*/1 * * * * /usr/sbin/service bind9 reload


4、 在开发服务器上,利用curl来远程更新IP
建立一个自动更新 脚本,附:自动更新IP脚本
/root/syncddns.sh

#!/bin/sh
tm=`/bin/date`
echo $tm
url=\"http://www.domain.com/ddns.php?t=$tm&key=iamaverylonglongandlonglongkey\"
/usr/bin/curl \"$url\"


crontab -e 打开cron计划任务队列,增加自动执行任务

[email protected]
*/1 * * * * /root/syncddns.sh

分类: 开源软件 标签: DNS 更新 花生壳 服务器 记录 配置 自动更新 子域 解析 动态 发布于: 2012, 点击数: