在OpenSolaris下动态绑定域名

在我前面的博客中,谈到了如何通过使用OpenSolaris和ZFS来实现家庭NAS(Network Atta­ched Sto­rage)网络数据中心的实现方法。对于我们很多人来说,仅仅在家中内部的局域网使用还是不够的,还希望家中的NAS能够发挥更大的作用,无论走到哪里,只要有网络,我们便能读取和存储数据到家中的NAS中。那样,我们最为重要数据就不必随身携带了。加上NAS系统的冗余性,我们就不必担心数据会丢失了。

今天想先来谈一谈实现这个想法其中比较关键的一步:绑定动态域名。在中国,我们的家用网络多半属于ADSL或小区宽带上网。这种上网的方式使得IP地址不是固定的,而是动态的。所以在家庭网络外部,我们是无法通过IP来识别并进入家用网络的。如果固定IP地址,花费的费用不菲,另外还要经历痛苦的备案过程。

其实现在已经有很好的解决方案了,比如花生壳Oray。前一阵子我也在使用oray来绑定自己的动态域名。特别是Oray和TP-LINK合作,在tp-link中已经内置了花生壳的程序,我们需要做的只是注册一个用户就好了。但花生壳不是很稳定,几次出现了断线无法连接的问题,而且一断就是好长时间(大于3小时)。这个让我无法忍受,所以我找到了另外的解决方法:使用ddclient和dyndns.com提供的动态域名解析服务。

当然,这个dyndns.com和花生壳完成的是同一功能,只是一个是国外的服务,一个在国内。当然,个人认为dyndns更加稳定和成熟一点。由于我家使用的是OpenSolaris服务器,所以当然要选择支持它的dyndns了。

首先去sou­r­ce­fo­rge下载程序:http://sourceforge.net/projects/ddclient/,里面有个readme文件,写着安装步骤。直接可以根据上面的提示将ddclient安装如系统。

INSTALLATION:

cp ddclient /usr/sbin/
mkdir /etc/ddclient
mkdir /var/cache/ddclient
cp sample-etc_ddclient.conf /etc/ddclient/ddclient.conf
vi /etc/ddclient/ddclient.conf
– and change host­na­mes, logins, and passwo­rds appropriately

## For those using Redhat style rc files and using daemon-mode:
cp sample-etc_rc.d_init.d_ddclient /etc/rc.d/init.d/ddclient
## ena­ble auto­ma­tic sta­r­tup when boo­ting
## check your dist­ri­bu­tion
/sbin/chkconfig –add ddclient
## start the first time by hand
/etc/rc.d/init.d/ddclient start

## If you are not using daemon-mode, con­fi­gure cron and dhcp or ppp
## as desc­ri­bed below.

其实挺简单的是不?

不过上面的配置主要针对的是redhat的系统中老的启动配置文件init.d,在OpenSolaris上面则使用的是SMF。Chris Ger­hard写过一篇《ddclient meets SMF》的文章,可以参考一下配置。不过我将使用crontab的方式来使用它,主要是使用polling的思想,隔一段时间更新一下我自己的IP,让域名尽可能保持最准确,防止偶尔断线或是更换IP造成的域名解析中断。

接下来,我们就要去dyndns.com注册一个帐号了。注册完成后,我们可以Add一个host service。域名不用很care,随便找一个就行了,我选择的是xxx.dyndns.biz。然后我们可以用自己的域名cname到这个域名,就可以使用自己的域名记住了,呵呵。另外需要注意的一点是,Service Type选择:Host with IP address。

接下来就是配置我们的ddclient了。我们去https://www.dyndns.com/support/中的tools标签中,找到一个Update Client Con­fi­gu­ra­tor的工具,也可以直接过去:https://www.dyndns.com/support/tools/clientconfig.html。选择好自己的域名和ddclient,然后确定。之后填入自己的password,然后把这个文件写入到/etc/ddclient/ddclient.conf。

接下来就是我自己想的一个应对现在IP会有变化的方法,就是通过写入crontab定期更新,保持域名和IP一直匹配。在root用户状态下键入crontab –e,启动编辑模式。新加入一行:

0,15,30,45 * * * * /xxxx/setdns.sh

设定每15分钟执行一次setdns.sh。setdns.sh文件内容如下:

echo ‘date‘ » /xxxx/dns.log
pfe­xec /usr/sbin/ddclient –daemon=0 –ver­bose » /xxxx/dns.log
echo ”

” » /xxxx/dns.log

PS.我还写了个日志文件到dns.log。接下来保存以后就可以试试看了。:)

以后再分享一些关于OpenSolaris+ZFS+Samba/CIFS+DynDNS的经验,可以从外网访问自己家用硬盘的方法,呵呵。其实挺简单的,就是配置好Samba/CIFS后,开放137、138、139、445端口就好了:)

参考文章:http://www.laurenwood.org/anyway/2009/03/opensolaris-and-ddclient/

Jan 8th, 2010 | Posted in In My Opinion, Open Source
No comments yet.

Leave a comment

XHTML: You can use these tags: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>