- 论坛徽章:
- 0
|
如何自己架设动态dns服务器
动态DNS解析自己动手做
阅读本文需要你参考这个文章http://www.chinaunix.net/jh/4/74349.html
安装动态DNS解析,你首先需要下列软件:
第一,DNS服务器后台软件,推荐使用bind9(bind9以前的版本不支持动态dns更新.),平台各种平台都可以,本文是使用windows 2000+bind9.(因为关于unix类操作系统中的文章相对比较多,所以本文就不再详细说明如何在unix系统中实现动态dns更新.本文仅仅涉及将bind9移植到windows平台中.),为了实现这个功能,你首先需要去http://www.isc.org(或http://www.bind.com(中下载相应的windows平台中的bind9好像最新的版本是9.2.3).下载下来之后解压安装就可以了,默认路径是c:\winnt\system32\dns中.
第二:配置named.conf文件,下文只仅仅涉及了一部分动态dns需要的一些部分,其他的大家可以参照网上的配置资料.
//named configure by jackywong
options {
directory "c:\winnt\system32\dns\etc\named";
version "testdns.com";
};
key "www" { //此key要使用dnssec-keygen –a hmac-md5 –b 128 HOST www生成
algorithm hmac-md5;
secret "WJEBMfFgU09zg3qGvUS3iw=="; //secret中的密码是生成的Kwww*.key中的那串东西.
};
.
.
.
zone “testdns.com” {
type master;
file “db.testdns.com”;
update-policy{
grant www name www.testdns.com. A; //与上面的key的名字对应就可以了
grant mail name mail.testdns.com. A;
grant sub subdomain testdns.com.. ANY; //身成的key可以更新testdns.com的所有子域
};
};
关于上面的这些可以看这片文章.
http://www.chinaunix.net/jh/4/74349.html
下面主要说明如何在windows中获得你的IP地址,之后上传更新.由于windows下默认的查看电脑IP地址的方法只有一种,那就是使用ipconfig,之后会分行显示很多信息,windows这样做看似比较直观,但对于如果你想通过命令行来获得你的iP地址,这样就会变得比较难了,因为特征子串比较难以获得.说到这里就应该抱怨一下”微软”了.微软自称很多东西可以在命令行方式进行,其实呢?你想在命令行下进行的东西,他都不能做.经过详细的查找终于在微软提供的resource kit中找到了一个类西grep的处理工具叫qgrep,呵呵这个工具实在是太有用了,可惜只有这一个.
不多说废话了,为了取得本机的IP地址,我们需要下列工具,大家可以在网上查找一下,应该可以很方便的找到.
Netwox515.exe 和netwib515.dll 我们使用这个工具来显示ip地址.使用这个工具你将会得到类似下面的特征串.
C:\>;netwox 1 -i
nu ip /netmask ppp point_to_point_with
1 127.0.0.1 /255.0.0.0 0
7 192.168.1.1 /255.255.255.0 0
7 192.168.88.52 /255.255.255.0 0
9 192.168.1.253 /255.255.255.0 0
呵呵,这个工具还有很强大的功能,搞网络的同志们一定要弄一个哦.
Sh.exe,一个模拟运行在windows中的shell,使用它,你就可以完成cmd无法完成的处理类unix的脚本了.(批处理对与脚本来说实在是太弱智了.)
Grep.exe这个工具就不用说了吧,大家应该都知道,如果不知道的话,呵呵,快去看看资料吧.
Cat.exe,也是一个大名鼎鼎的工具.标准的unix中全部都提供这个东东.
Cut.exe,同样也是很多unix系统的标配.
Sed.exe.用来处理文本流,功能真的是太强大了.(可惜windows从来没有提供类似这个工具,正是因为没有它,才使windows的批处理象一个畸形的东东,就使加上vbs,js都比不上这个功能强大.).
有了上面的几个东东,我们就可以开始动手写一个脚本,来获取本机的公网ip了.首先明确一点,我仅仅选择了一个比较简单的切入点,那就是凡是利用windows的拨号网络来拨号的adsl获得的公网ip均有以下特征,(目前我所知道的只有一种不是利用拨号网络来进行拨号,那就是enternet300系列.这种如何获得公网ip可能需要大家自己研究了,J).我们使用ipconfig就会看到,凡是使用拨号网络进行拨号的你所获得的ip均是255.255.255.255.不信可以看看.有了这个我们就可以非常方便的进行出处理了.下面开始写这个脚本:
#!c:/winnt/sh.exe //告诉sh.exe,以下的内容是脚本
netwox 1 –i |grep 255.255.255.255 >; c:/ip //把获得的有255.255.255.255的行输处到 c:/ip这个文件中
sed -e 's|/255.255.255.255| |g' c:/ip >;c:/swapip //处理c:/ip这个文本流,把其中的/255.255.255.255替换为多个空格,并把结果输出到 c:/swapip中
new_ip=`cat c:/swapip |cut -c4-18` //把刚才得到的文件截取从4-18的字符,为何这么做,大家可以自己想想,可获得的ip为n.n.n.n到nnn.nnn.nnn.nnn,上面那样做就是为了保证通用性.把获得ip赋值给new_ip.
cat c:/snd |sed -e "s|ipadd|$new_ip|g" >;c:/up.txt //处理c:/snd文件,把里面的ipadd替换成为new_ip的值.
c:/winnt/system32/dns/bin/nsupdate -k c:/winnt/system32/dns/bin/Ksc.+157+48890.key -v c:/up.txt //更新dns记录,里面的nsupdate执行文件是bind9中的,如果没有可以下载一个bind9,之后拷贝到相应的目录中去.
作完这些,基本的东西就已经搞定了,接下来就是怎么作定时器和如何使用上面编写的shell脚本了.定时器windows提供了一个替代品,虽说功能不是很强大,但作一些日常的工作也就够了(使用windows的计划任务,必须保证你已经启动task schedule,并且它的启动方式是自动.).做一个批处理.auto.bat,里面的内容很简单.
Sh c:/你刚才编写的脚本的名称.(一定要注意\在unix系统代表转义字符,千万不能在脚本中的路径中使用这个字符,全部用/替换.)
之后就做一个计划任务,让这个脚本,每隔10分钟运行一次.呵呵就大功告成了.
上面的脚本适合以下对象,客户端是windows系统,服务器什么平台没有什么要求..本文算是对http://www.chinaunix.net/jh/4/74349.html的一个补充吧. |
|