动态域名解析服务系统简介

一、 概述

    时至今日,Internet已经逐渐演变为一个规模巨大的网络世界。很多用户都是通过DHCP的方式动态获得自己的IP地址。而随着个人和小型网站的不断涌现,越来越多用户希望能自主的管理自己的网站,而不是采用传统的主机托管方式。这就出现了用户的固定域名【1】和用户的动态IP之间如何绑定的问题,同时也要求了DNS系统具有动态更新【2】的能力。

    动态域名解析系统的出现主要是为了解决域名和动态IP地址之间的绑定问题。当用户使用不同的IP登录时,动态域名解析系统将用户IP地址的变化动态地映射到相应的DDNS服务器中,进行及时的自动更新,从而保证用户能够被正确的寻址定位。用户终端可以是任何可获得公网IP的互联网接入方式,如采用xDSL、有线电视网络、双绞线到户或其他更高速的可以获得公网IP的互联网接入方式。由于不受线路类型、主机存放地点的约束,用户可以根据自己的需求选择合适的系统平台、数据库平台和站点运营模式,并由此获得最大限度的自主性。

    二、 工作原理

    动态域名解析系统一般由两部分构成,如图1所示。一部分是客户端程序,运行在用户的主机上。另一部分是服务器端程序,位于服务器端的主机上。服务器端分为响应服务器和DNS服务器,其中响应服务器负责响应用户的动态域名更新请求,DNS服务器可以采用国际上较为流行的Bind【3】系统,实现域名解析服务并提供域名IP动态更新服务。由于Bind服务器的默认设置是不允许域名动态更新的。系统在架构时需要对运行环境进行配置。根据DNS服务器所管辖的域名建立对应的正逆向解析区(Zone)数据文件【4】,在各自区中设定允许发出动态更新的命令的主机的IP地址。


                          

                                              图1 系统结构图

    动态域名解析系统通常采用TCP和UDP[5]两种方式来实现客户端和响应服务器之间的通讯,为了防止窃取传输内容,可以采用加密技术进行加密传输[6]。用户的所有请求都直接同响应服务器联系,DNS服务器只接受来自同步进程和监控进程的请求,由于隔离了用户和DNS服务器的直接联系,提高了系统的安全性。

    由于客观存在着网络异常现象,比如断电、断网等情况,导致用户非正常断线,当用户再次上网运行客户端,服务器端将及时更新用户的数据。为了保证部分用户不能及时上网期间服务的正确性,系统在服务器端增加了监控进程,能在规定的时间内探知用户的生存与否,并通知DNS服务器继续或停止该域名的解析,从而保证访问者能够得到正确的信息。

    三、 简单流程及说明:

    如图2,当用户使用新的IP地址时,需向响应服务器申请更新该域名对应的IP地址。在收到客户端的更新数据后,响应服务器通过查询数据库,确认客户端的域名是否合法存在的,如果不是则不予理睬,若是合法存在的,响应服务器把相应的动态域名更新消息以命令的方式存储在数据库中,再由同步进程反映到DNS解析服务器,同时更新数据库中相应信息。完成了用户信息到DNS的传递,实现了动态更新。  




                                                             图2 系统流程图

    整个响应服务器工作的核心部分就是消息处理部分,它针对客户端的各种类型请求进行相应的处理,并且把相应的动态域名更新消息以命令的方式,存放到数据库中,然后由sync-server进程将dyndn中的命令加以实现,反映到域名解析服务器,同时更新registrarb中相应信息,完成了用户信息到域名解析服务器的动态更新。在用户在线期间,Internet上的其他用户访问该域名时,动态域名解析服务器就会返回更新后的IP地址。确保了域名能被正确寻址定位。

    客户端可以工作在Windows 98/Me/NT/2000/XP或者是Unix等平台上,客户端具有多域名设置功能,可以在客户端中输入任意域名,允许多个域名同时指向同一个IP。在使用过程中可以随意的注销任何一个已经登陆的域名,而不影响其他域名的正常使用。

    四、 相关问题的讨论

    当前国内有许多的动态域名解析提供商,一般都支持包括普通电话线、ISDN、xDSL、有线电视网络、双绞线到户或其他更高速的可以获得公网IP的互联网的多种不同接入方式,也支持对静态地址的解析,有的还同时支持HTTP、FTP、E-mail等应用服务。尽管各动态域名解析系统的运行使用和功能特色上有差别,但其工作原理相似,大都都是基于RFC 2136[4]实现动态DNS的。 

 下面就几个系统功能相关问题的实现进行简单的讨论:

    1、关于服务器端如何探知客户端是否存在

    系统启动后,响应服务器为了获知客户端的存在,客户端需要定期的向服务器端发送生存信息,同时该信息又必须能得到响应服务器认证。现行的软件中采用密码作为生存信息的认证,容易因密码频繁传递造成不必要的安全隐患。作者认为可以采用在客户端登入时,由响应服务器产生一个随机整数,此数作为客户端的一个认证值,用来通知响应服务器客户端的存在。当客户端发出生存认证信息时,只需发送该随机数,服务器端在接受后,只需比较随机数是否和保存在服务器的该用户的随机数一样,如果是,则承认客户端的生存声明。客户端根据服务器发来的刷新时间,定期向服务器发送更新信息。这种方式保证了服务器端能在一定的时间内探知客户端是否存在,以便及时更新DNS服务器的区数据文件。

    2、关于多域名的登入

    当一个用户拥有多个域名,并且希望将它们都绑定到同一个IP时,对于这样的需求有两种方式可以实现:一是,通过相应的域名的注册服务商将该域名的解析权力授权给DDNS服务器来负责解析该域名,当获得这样的授权后,DDNS需要增加该域名的区数据库文件来管理该域名;二是,该域名的注册服务商本身具有动态更新的能力,同时具有管理该域名的权力。如果是后一种方式,则可以将更新信息直接发送给该注册服务商,由它负责域名的解析。这种方式可能由于网络时延及DDNS服务器和注册服务商的通讯问题,导致不能及时更新,从而不能保证用户被正确的访问。同时由于允许用户更新该注册服务商的信息,给了攻击者提供了攻击的可能,这种不安全的隐患将直接威胁着该注册服务商。笔者建议采用了第一种方式,如果用户拥有动态解析域之外的域名,则必须通知相应域名的注册服务商,将该域名解析服务授权给用户当前所使用的动态域名解析服务商的DNS服务器地址,这样动态域名解析软件才能正确解析到用户的域名。对于响应服务器,在接到更新信息后,首先判断判断该域名是否合法存在,如果是,则完成域名的动态更新。


    3、有待改善的相关技术

    首先,动态DNS系统对内网用户系统支持能力不足,现在对于内网用户的支持绝大部分都是采用登入服务器方式,用户网站的所有信息都必须先通过提供商的服务器再传输出去,给用户带来许多不便。也有些提供商在用户网关采用端口映射方式,将用户提供的服务映射到网关,这需要使用者在网关路由器进行必要的设定,也给用户带来不便。其次,由于DNS特有的cache特点,可能出现一种现象,用户由于重新登入,在DNS的IP记录已经更改,但是访问的用户由于cache原因,TTL尚未过期,在本地仍然保留原有的IP地址,造成了IP地址指向出现错误,对此人们只能通过统计的结果进行优化来设定TTL值。

    五、小结

    动态域名解析技术的应用是不可避免的,随着网络的进一步发展,对域名解析的要求在性能和功能上都会有所提供,人们期待技术上能有新的突破。

参考文献:

[1] P. Mockapetris. DOMAIN NAMES-CONCEPTS and FACILITIES. RFC1034. November 1987

[2] P.Vixie S.Thomson Y.Rekhter J.Bound. Dynamic Updates in the Domain Name System(DNS UPDATE). RFC2136. April 1997

[3] Paul Albitz &Cricket Liu. 《DNS and BIND 》4th . O’Reilly 2001

[4] P. Mockapetris. DOMAIN NAMES - IMPLEMENTATION AND SPECIFICATION. RFC1035. November 1987

[5] 熊桂喜 王小虎译.《计算机网络》清华大学出版社. 1998

[6] 刘玉珍 王丽娜等译.《密码编码学与网络安全――原理与实践》.电子工业出版社 2003

本文转自:中国互联网络信息中心(CNNIC)研究生 曾宪章


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值