-
在OpenSolaris下动态绑定域名
在我前面的博客中,谈到了如何通过使用OpenSolaris和ZFS来实现家庭NAS(Network Attached Storage)网络数据中心的实现方法。对于我们很多人来说,仅仅在家中内部的局域网使用还是不够的,还希望家中的NAS能够发挥更大的作用,无论走到哪里,只要有网络,我们便能读取和存储数据到家中的NAS中。那样,我们最为重要数据就不必随身携带了。加上NAS系统的冗余性,我们就不必担心数据会丢失了。
今天想先来谈一谈实现这个想法其中比较关键的一步:绑定动态域名。在中国,我们的家用网络多半属于ADSL或小区宽带上网。这种上网的方式使得IP地址不是固定的,而是动态的。所以在家庭网络外部,我们是无法通过IP来识别并进入家用网络的。如果固定IP地址,花费的费用不菲,另外还要经历痛苦的备案过程。
其实现在已经有很好的解决方案了,比如花生壳Oray。前一阵子我也在使用oray来绑定自己的动态域名。特别是Oray和TP-LINK合作,在tp-link中已经内置了花生壳的程序,我们需要做的只是注册一个用户就好了。但花生壳不是很稳定,几次出现了断线无法连接的问题,而且一断就是好长时间(大于3小时)。这个让我无法忍受,所以我找到了另外的解决方法:使用ddclient和dyndns.com提供的动态域名解析服务。
当然,这个dyndns.com和花生壳完成的是同一功能,只是一个是国外的服务,一个在国内。当然,个人认为dyndns更加稳定和成熟一点。由于我家使用的是OpenSolaris服务器,所以当然要选择支持它的dyndns了。
首先去sourceforge下载程序: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 hostnames, logins, and passwords 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
## enable automatic startup when booting
## check your distribution
/sbin/chkconfig –add ddclient
## start the first time by hand
/etc/rc.d/init.d/ddclient start## If you are not using daemon-mode, configure cron and dhcp or ppp
## as described below.其实挺简单的是不?
不过上面的配置主要针对的是redhat的系统中老的启动配置文件init.d,在OpenSolaris上面则使用的是SMF。Chris Gerhard写过一篇《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 Configurator的工具,也可以直接过去: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
pfexec /usr/sbin/ddclient –daemon=0 –verbose » /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/