基于BIND的动态DNS服务系统的设计
工程技术武汉船舶职业技术学院学报 2008年第1期基于BIN D 的动态D NS 服务系统的设计吴 颖(武汉职业技术学院计算机系, )摘 要 动态域名实现固定域名到动态IP , , 对动态域名服务的
工程技术武汉船舶职业技术学院学报 2008年第1期
基于BIN D 的动态D NS 服务系统的设计
吴 颖
(武汉职业技术学院计算机系, )
摘 要 动态域名实现固定域名到动态IP , , 对动态域名服务的需求日益迫切。文章介绍了动态DNS , DNS 服务系统的设计方案, 详细讨论了其系统结构、关键词 动态中图分类号 文献标志码 A 文章编号 1671-8100(2008) 01-0021-05
DNS 是Internet 基石之一,DNS 负责在IP 地址(例如202. 205. 11. 11) 与域名(例如www. edu. cn ) 之间的转化, 几乎所有的Internet 的应用
客户端软件。本文对如何设计和构建动态域名服务系统进行了探讨, 分析了相应的工作原理, 并给出了系统结构图, 为此系统的进一步研究提供参考。
都使用DNS , 包括WWW 、电子邮件、F TP 、远程终端等。DNS 的核心是名字服务器(name serv 2ers ) , 它维护了一个以层次化的域名为索引的分
1 DNS 相关协议分析
1. 1 DNS 消息格式[1,4]
DNS 操作是通过发送DNS 消息来实现的, DNS 消息一般通过UDP 协议传送, 但也可以通
布式数据库。
Internet 上的域名解析一般是静态的, 即一
个域名所对应的IP 地址是静态的, 长期不变的。也就是说, 如果要在Internet 上发布网站等各种信息服务, 一般需要有一个固定的IP 地址。
随着互联网宽带接入的迅速普及发展, 很多宽带接入的用户希望能够对外提供WWW 、电子邮件、F TP 等服务, 但是ISP 分配给一般用户的是动态的IP 地址, 无法使网站的地址固定下来, 动态域名服务的出现解决了这个难题。
动态域名的功能, 就是实现固定域名到动态IP 地址之间的解析。用户每次上网得到新的IP
过TCP 协议传送。表1是标准DNS 消息格式, 在[RFC10354. 1]中定义。
表1 标准DNS 消息格式
Header Question Answer Aut hority Additional
首部字段
查询名字服务器的问题
回答问题的资源记录指向权威的资源记录包括附加信息的资源记录
首部字段(Header ) 说明剩余段信息, 以及消息类型是查询、响应还是更新等, 图1是首部字段的格式, 细节见[RFC1035]。
问题段(Question ) 中描述发给名字服务器的问题, 格式:查询类型Q T YPE 查询类QCL ASS 查询域名QNAM E 。
地址之后, 安装在用户电脑里的动态域名客户端软件就会把这个IP 地址发送到动态域名解析服务器, 更新域名解析数据库。Internet 上的其他人要访问这个域名的时候, 动态域名解析服务器会返回正确的IP 地址给他。
动态域名服务系统的核心是支持[RFC2136][1]动态域名更新协议的域名服务器,
后面三个段都包括一个可能为空的连续资源记录列表, 格式:域名 类型 类 T TL 资源数据长度 资源数据。回答段(answer ) 包括回答
并提供一套服务管理程序, 此外, 一般还需要一个
收稿日期:2007-10-26作者简介:吴 颖, 女, 讲师, 主要从事计算机应用方面的教学和科研工作。
21
© 1994-2010 China Academic Journal Electronic Publishing House. All rights reserved. http://www.cnki.net
,武汉船舶职业技术学院学报 2008年第1期
安全的可靠方法, TSIG 是“事务签名”的简写, 它使用共享密钥和单向散列函数来鉴别DNS 消息, 特别是响应和更新。
如果配置了TSIG , 名字服务器将在一个DNS 消息的附加数据部分添加一个TSIG 记录,
对DNS 消息签名, , 图1 DNS 消息头部格式
问题的资源记录; 权威段(; 。1. 2 动态更新消息格式[2]
[DNS 的安
。
1. 4 DNS 名字服务器[4]
现在Internet 上流行的DNS 服务器有B IND ,Win2000DNS ,tinyDNS 等, 这些DNS 服
动态更新的DNS 消息格式在[RFC2036]中定义, 在标准DNS 格式上加入一些必须的扩展(例如, 更新比查询操作需要更多预定义错误码) , 字段定义也发生变化, 如表2所示。
表2 动态更新DNS 消息格式
Header Zone Prerequisite Update Additional
务器的最新版本都支持动态DNS 更新。其中, B IND 是Berkeley Internet Name Domain Service
的简写,Internet 上超过60的DNS 服务器使用B IND , 它是使用最广泛的DNS 服务器, 现在由ISC 维护[5]。
B IND8版本大幅度改进了功能, 支持RFC2136中说明的动态域名更新机制、TSIG 等
首部字段指定要更新的区域前置条件
要添加或删除的资源记录RRs (资源记录) 或RRset s (有着相同域名、类或类型的一组RR ) 附加数据段
高级功能, 附带了一组常用工具以及完整的开发库。B IND 支持各种主流操作系统, 本文主要使用B IND9. 2. 1。
首部字段与表2的标准DNS 消息首部相比,
仅仅保留一个标志位Q R , 同时, 最后4项分别替换成ZOCOUN T 、PRCOUN T 、U PCOUN T 和ADCOUN T 。
前置条件字段Prerequisite 说明更新操作必须满足的条件, 有Rrset Exist s (Value Independ 2ent ) 、RRset Exist s (Value dependent ) 、RRset Dose Not Exist 、Name Is In U se 、Name Is Not In U se 共5种条件类型。
Up date 字段是最主要的扩展, 它定义下面四种操作:
1) 添加一条资源记录RR ; 2) 删除一个RRSet ; 3) 删除所有RRSet s ;
4) 从RRSet 中删除一条资源记录RR 。Zone 字段和Additional 字段的定义没有变化。
1. 3 动态更新DNS 安全性22
[3]
2 系统体系结构与工作原理
图2为系统结构图, 系统的操作流程可以这样描述:
①动态DNS 客户拨号ISP (ADSL 、ISDN 等) ,ISP 给它动态分配一个合法的IP 地址;
②动态DNS 客户通过运行在本机上的DDNS 客户端程序, 向动态DNS 服务器的服务管
理程序报告自己IP 地址的变化;
③服务管理程序按照rfc2136指定格式给DNS 服务器发请求更新该用户对应域名记录的DNS 消息,DNS 服务器更新域名记录, 将用户的
域名指向新的IP 地址。
④Internet 上的用户要通过域名访问这个DDNS 客户机上的WWW 、Ftp 等服务, 由动态DNS 服务器负责解析。
⑤现在Internet 上的用户就得到了这个DDNS 客户机的最新IP 地址, 可以用它来访问其
在[FC2845]说明的TSIG 技术是保护DNS
© 1994-2010 China Academic Journal Electronic Publishing House. All rights reserved. http://www.cnki.net
,基于BIND 的动态DNS 服务系统的设计 吴 颖
WWW 、Ftp 等服务
。
图2 DDNS 服务系统结构
动态域名服务系统由服务端程序和客户端
程序两大部分组成, 服务端程序包括三个模块:
①更新代理:负责发送动态更新DNS 消息到DNS 服务器, 请求更新域名资源记录。
②监控程序:作为service 运行, 负责和客户端的通讯, 监听客户端发来的更新请求, 验证后传递给更新代理。
③系统管理:提供管理员Web 接口的管理界面, 完成域管理、用户管理、日志维护、用户配置管理等功能。
客户端程序安装在用户电脑上, 当用户每次上网得到新的IP 地址之后, 把这个IP 地址以及自己的登陆信息发送给服务端的监控程序。
3 关键技术问题
3. 1 域名更新安全
和myddns -key. 157 11551. private , 后者内
容如下:
Private -key -format :v1. 2
Algorit hm :157(HMAC ) //HMAC -MD5算法
Key :9Dw2So YAD ==IND , , -up date 或up date -poli 2, 在B IND 配置文件中配置DNS 动态更新的片断如下:
key myddns -key {algorit hm hmac -md5;
secret “9Dw2So YAD TIjxkgprABR2A ==”;
}; //t he TSIG key zone “mcwolf. com ”{type master ;
file “db. mcwolf. com ”;
update -policy {grantmyddns -key subdo 2main mcwolf. com ;};
//allow -up date {10.10. 3. 111;}; //local 2ho st ; etc.
};
测试TSIG 可以使用BIND 附带的nsup 2date :
#nsup date –d –k myddns -key. 157 11551. p rivate
>update del b. mcwolf. com.
>update add b 100A b. mcwolf. com. >
最后一行为空表示确认更新命令。3. 2 客户端-服务端通讯协议
动态域名更新的安全性主要采用TSIG 技
术, TSIG 使用的单向散列函数是MD5的变种HMAC -MD5, 和其它散列函数不同的是它使用密钥。
在BIND 中提供了一个生成密钥的工具dns 2sec -keygen
#dnssec -keygen -a hmac -md5-b 128-n HOST myddns
结果生成:myddns-key. 157 11551. key 客户端和服务端的交互可以分三个步骤①客户端发请求给服务端, 要求获取一个加密密钥, 服务端给出一个随机生成的密钥;
②客户端用这个密钥用MD5算法加密自己的密码, 发域名更新的请求给服务端, 服务端提供相关服务, 请求有2种类型:
1) 联机请求, 客户端要求更新域名记录指向现在的地址, 可以用客户端检测的IP 地址或者服务端自动检测的IP 地址
23
© 1994-2010 China Academic Journal Electronic Publishing House. All rights reserved. http://www.cnki.net
,武汉船舶职业技术学院学报 2008年第1期
2) 脱机请求, 客户端断开前要求将域名记录
个资源记录视为对象, 并提供设置和查询每个对象属性的方法, 大大简化了开发。
我们选择的方案是采用Perl 来开发, 直接调用nsupdate 命令来实现域名的动态更新, 所有的DNS 消息都由nsupdate 来处理, 省略了负责的DNS 消息解析, 试验证明, 。
, Apache 服务器上实MySQL , 最主要的表就是用户信息表, 其主要字段见表3。
表3 用户数据表结构
字段名
UserID Username Password Domain Registertime Last Updated CurIP email IsWild ForwardUrl
设置为空, 补充手段有两种, 可以指向托管的服务
器, 另外如果是非正常脱机, 可以在规定的TIM EOU T
③服务端返回服务执行的结果。具体实现通讯协议时, 有2种技术方案:
1) 从客户端到服务器的直接TCP 连接客户端发起请求, 建立一个直接的TCP 连接后, 服务端发给客户端一个随机Key , 下列格式发出请求
:) :2cls :IP
更新的是usrname. domain.
返回结果:0无效用户登陆1更新成功(on 2line/offline ) 。
2) 在http 协议的基础上传输信息, 这是客户端比较容易支持的一种方式。
服务端发到客户端的信息通过H TML meta 标签传递
客户端再使用Get 请求发送信息到服务端, 例如:up date. cgi ? user =“mc ”&password=5K84dVl G f3fjVklfjkf s55r65t bfr &domain=mc. domain &ip=10. 10. 3. 111&reqcls=0
返回结果:0无效用户登陆1更新成功(on 2line/offline ) , 同样是通过Meta 标签传递给客户端。
说明
用户编号, 主键用户名
密码, 使用MD5加密用户域名, 一般同用户名注册时间最后更新时间当前IP 地址用户联系邮件
是否支持泛域名解析转发url
图3是客户端界面, 采用VB 开发
。
4 系统实现
名字服务器使用B IND , 版本是9. 2. 1。
更新代理程序发送域名更新消息给名字服务器, 涉及到解析DNS 消息, 一般有三种实现方法:①Shell 脚本:简单易用, 开发速度快, 可以调用nslookup 工具来解析DNS 消息, 调用nsup 2date 工具来更新域名, 一般作为原型使用。
②C 编程:使用B IND 提供了解析器库A PI 和名字服务器A PI 来支持DNS 编程, 功能最多, 性能最好, 但编程最复杂, 开发周期长。
③Perl , 一种折中的选择是使用Perl , Mi 2chael Fuhr 编写了一个Perl 模块Net ::DNS , Net ::DNS将解析器、DNS 消息、DNS 消息的各24
© 1994-2010 China Academic Journal Electronic Publishing House. All rights reserved. http://www.cnki.net
图3 客户端界面
5 结束语
随着宽带接入的普及, 用户更愿意利用现有的电脑资源, 在单位或家里管理或发布自己的电脑数据。特别是中国电信在大力推广的“超级一线通”ADSL , 让宽带应用发展的速度更加迅猛, 据悉目前全国已经超过百万用户。动态域名服务解决了客户每次建立网络连接时IP 地址变化的难题, 越来越受到人们的重视。
,基于BIND 的动态DNS 服务系统的设计 吴 颖
本文给出了一个完整的基于B IND 的动态域名服务系统的设计, 首先分析了相关的Internet
协议, 然后描述系统的工作原理和体系结构, 接着详细讨论安全的域名更新以及客户端服务端通讯协议设计这两个关键技术问题, 最后介绍了系统实现的情况。
域名服务作为Internet 的基石, 伴随着In 2ternet 应用的深入而深入, 动态域名服务就是域名服务的一种新的应用, 展望其发展, 得进一步深入研究的地方, 例如结合, 应用, ; 再者, 动态IP 管理, 所需要, 动态域名服务是IP 地址管理的一个重要部分, 要实现完整的IP 管理解决方案, 动态域名服务需要和IP 地址管理的其它部分紧密配合。
参 考 文 献
1 P. Mockapetris et al. Domain Names -Implementation and
Specification[S].RFC1035,1987
2 P. Vixie et Name System
(U ) [et al. Key Aut hentication for DNS
(, Liu ,DNS &BIND , Fourt h Edition , O ’
reilly ,2001
5 William Wong. win2000DNS 服务指南[M ].清华大学出版
社,2002
Design of a Dynamic D NS Service System B ased on BIN D
WU Ying
(Depart ment of Comp uter ,Wuhan Instit ute of Technology , Wuhan 430074,China ) Abstract :Dynamic domain name service implement s t he parsing between fixed domain name and dynamic IP address , it is urgent to realize t he dynamic domain name service wit h t he pop ularization of ADSL and ot her broadband access technology. In t his paper , it first intro 2duces t he principle of dynamic domain name service , t hen , proposes a solution of Dynamic domain name service based on BIND , and gives a detailed description of it s system st ruct ure , key problems and solutions.
K ey w ords :dynamic DNS ;DNS ;BIND ; RFC2136
(责任编辑:谭银元)
(上接第17页)
de 2noising algorit hm is applied in noise processing. By Monte Carlo comp uter simulation , noise buried in EL F signal is dealt wit h wavelet de 2noising and t raditional digital filter. It s quality of bit error rate is analyzed. Simulatio n result s show t hat wavelet de 2noising can get better gain in SNR t han t raditional digital filter.
K ey w ords :extreme low f requency ; wavelet de 2noising ; digital filter ; bit error rate
(责任编辑:谭银元)
25
© 1994-2010 China Academic Journal Electronic Publishing House. All rights reserved. http://www.cnki.net