Dns服务器装置的制作方法

文档序号:7965689阅读:189来源:国知局
专利名称:Dns服务器装置的制作方法
技术领域
本发明涉及DNS服务器装置,更详细地说是涉及接收终端的主机名解决请求之后访问DNS内容服务器的DNS代理服务器。
背景技术
在IP(因特网协议)网中,为了取得与通信对方装置的域名对应的IP地址,广泛采用DNS(域名系统)。DNS通过二种服务器的组合而运用。其中一种是保持域名和IP地址的对应表、并响应主机名解决请求而回答IP地址的服务器,该服务器称为DNS内容服务器或者权威DNS服务器等。另一种服务器是从终端接受主机名解决请求,把该主机名解决请求传输到其他适当的服务器的服务器,该服务器称为DNS代理服务器或者DNS高速缓存服务器。
在根据IP地址传输数据包的因特网内,具有许多DNS内容服务器,用于对各不相同的域的IP地址进行管理。这些DNS内容服务器采用树结构,构成分层的数据库。各DNS内容服务器,一般由管理域名的主体来设置。
另一方面,DNS代理服务器和DNS高速缓存服务器,代替终端从DNS内容服务器的树检索出具有由主机名解决请求指定的询问域名的特定的DNS内容服务器,并向该特定DNS内容服务器发送主机名解决请求。这些服务器若从DNS内容服务器接收到包含目的IP地址的DNA响应消息,则将其传输到请求源终端。
DNS高速缓存服务器具有用于存储域名和IP地址的对应关系的高速缓冲存储器,如果在高速缓冲存储器中具有主机名解决请求所要求的目的IP地址,则将其回答给请求源终端。DNS代理服务器和DNS高速缓存服务器,大多是由直接向终端提供IP网络访问服务的通信企业等组织来设置的。通常,终端指定的DNS服务器是指DNS代理服务器或DNS高速缓存服务器。以下,在本说明书中用DNS代理服务器来代表DNS高速缓存服务器和DNS代理服务器。
但是,在IP网中,具有能够有选择地使用地址体系不同的IPv4协议和IPv6协议的“IPv4/v6双任务”方式。属于IPv4/v6双任务方式的网络中的各个终端,在取得通信对方装置的IP地址的情况下,通常,在发行IPv4主机名解决请求消息(以下称为“A query”)之前,先发行IPv6主机名解决请求消息(以下称为“AAAA query”)。在对AAAA query,返回了对指定主机名未分配IPv6地址的响应消息的情况下,请求源终端发行A query,取得与指定主机名相对应的IPv4地址。也就是说,在IPv4/v6双任务方式中,可以根据情况,分开使用IPv6地址和IPv4地址。
然而,在RFC4074(非专利文献1)中指出,IPv4/v6双任务方式的网络运用中的问题是,对指定了没有IPv6地址的主机名的AAAA query,DNS内容服务器有可能采取错误的动作,结果使目的IP地址的取得失败,或者在请求源终端中的IP网访问处理中产生大幅度延迟。
也就是说,若在DNS内容服务器中忽视AAAA query,则在等待回答的请求源终端中,在预定的等待时间超时之前,不能够发行query,所以,IP网的访问处理大幅度延迟。并且,对AAAA query本来应当回答“查询域名中没有IPv6地址数据(AAAA数据)”,但是,DNS内容服务器错误地返回表示在因特网中没有AAAAquery所指定的查询域的DNS响应消息(以下称为N×DOMAIN)。在此情况下,请求源终端在接收到N×DOMAIN的时刻停止IP网访问处理。在此情况下,存在的问题是,请求源终端也不能够用A query取得IPv4地址,所以,完全不能与对方装置进行通信。
这种问题,本来是应当由处理主机名解决请求的DNS内容服务器一侧解决的事项,但在利用互相独立的管理主体分散管理DNS内容服务器的因特网中,几乎不可能强制所有的管理主体解决上述问题。因此,在IPv6Fix的第3章(非专利文献2)中,提出了终端侧软件的改造方法作为避免这种问题的一种方法。
RFC4074Common Misbehavior Against DNS Queriesfor I Pv6 addresses[专专利文献2]IPv6 Fixhttp//v6fix.net/docs/v6fix.html.ja、第三章但是,因特网用户所使用的终端几乎都安装了例如以windows(注册商标)为主的专有软件(Proprietary software),所以,以上述终端软件的改造为前题的解决方案,对终端用户来说大都很难实施。

发明内容
本发明的目的是提供一种即使在DNS内容服务器对AAAA query发行了错误的响应消息的情况下,也能够不对用户终端的软件进行更改即可由终端取得IPv4地址的DNS代理服务器。
本发明的另一目的是提供能够缩短在终端对AAAA query的响应等待时间的DNS代理服务器。
本发明提出的方案是着眼于因特网内几乎所有的DNS内容服务器都能够对IPv4的主机名解决请求消息(A query)正常地进行响应。其特征在于当从终端接收到IPv6的主机名解决请求消息(AAAA query)时,DNS代理服务器作为探针,生成具有和AAAA query相同的查询主机名的A query,将其和AAAA query一起发送到DNS内容服务器。并且,本发明的DNS代理服务器的特征在于根据从DNS内容服务器接收的IPv6的DNS响应消息(AAAA reply)和IPv4的DNS响应消息(A Reply)的内容,决定应向终端回复的IPv6的DNS响应消息。
更详细地说,本发明的DNS代理服务器,其特征在于具有请求处理部,用于在从终端接收到IPv6的DNS查询消息AAAArequest时,生成具有与该查询消息相同的查询域名的IPv4的DNS查询消息A request,把上述AAAA request和A request发送到因特网内的特定的DNS内容服务器;以及响应处理部,在作为对上述AAAA request的IPv6的DNS响应消息,从上述DNS内容服务器接收到表示查询域名为错误的NXDOMAIN的情况下,根据从上述DNS内容服务器接收的、对上述A request的IPv4的DNS响应消息的内容,生成与上述NXDOMAIN不同的另外的DNS响应消息,将其发送到上述终端。
更具体地说,本发明的DNS代理服务器,其特征在于即使在作为IPv6的DNS响应消息接收了NXDOMAIN的情况下,也能够在作为IPv4的DNS响应消息接收了表示与查询域名相对应的IPv4地址的正常的Areply时,上述响应处理部生成表示在查询域名中没有IPv6地址的消息AAAA reply,并将其发送到请求源终端。
例如,在从DNS内容服务器先于IPv4的DNS响应消息而接收到NXDOMAIN的情况下,本发明的DNS代理服务器中,响应处理部在保持上述NXDOMAIN的状态下等待从DNS内容服务器接收IPv4的DNS响应消息。在本发明的实施例中,在接收了上述NXDOMAIN时,响应处理部启动用于限制IPv4的DNS响应消息的等待时间定时器,在未接收IPv4的DNS响应消息而上述定时器超时的情况下,在超时时刻把上述NXDOMAIN发送到请求源终端。
在本发明的优选实施例中,当发送AAAA request或A request时,DNS代理服务器的请求处理部启动用于测量DNS内容服务器的响应时间的定时器,当先接收NXDOMAIN时,响应处理部根据上述测量定时器表示的响应时间,决定IPv4的DNS响应消息的等待时间。在未从DNS内容服务器接收IPv6的DNS响应消息和IPv4的DNS响应消息中之一,而上述响应时间测量用的定时器已达到预定的超时时间的情况下,DNS代理服务器的响应处理部生成表示AAAA request的查询域名是错误的NXDOMAIN,作为IPv6的DNS响应消息,并将其发送到请求源终端。
例如,在从DNS内容服务器先于IPv6的DNS响应消息而接收到Areply的情况下,由DNS代理服务器的响应处理部启动用于限制IPv6的DNS响应消息等待时间的定时器,在该定时器超时之前接收到NXDOMAIN时,生成表示在查询域名中没有IPv6地址的消息AAAAreply,并将其发送到请求源终端。
当未接收IPv6的DNS响应消息而上述定时器已超时时,响应处理部生成表示在查询域名中没有IPv6地址的消息AAAA reply,并将其发送到请求源终端。IPv6的DNS响应消息等待时间也可以根据DNS内容服务器的响应时间测量定时器所表示的响应时间来决定。
既未从上述DNS内容服务器中接收IPv6的DNS响应消息,也未接收IPv4的DNS响应消息,而上述响应时间测量用的定时器已超过预定的超时时间时,DNS代理服务器的响应处理部生成表示AAAA request的查询域名是错误的NXDOMAIN,作为IPv6的DNS响应消息,并将其发送到请求源终端内。
作为对AAAA request的IPv6的DNS响应消息,从DNS内容服务器中接收到表示与查询域名相对应的IPv6地址的正常的AAAA reply的情况下,DNS代理服务器的响应处理部将该AAAA reply发送到请求源终端。
而且,本发明的DNS代理服务器是具有用于存储从DNS内容服务器接收到的AAAA reply和A reply所表示的查询域名和IP地址的关系的高速缓冲存储器的DNS高速缓存服务器的情况下,当从终端接收到AAAA request或者A request时,上述请求处理部参照上述高速缓冲存储器,在上述高速缓冲存储器中具有与接收的request所表示的查询域名相对应的IP地址的情况下,生成表示该IP地址的DNS响应消息,并将其发送到请求源终端。
发明效果根据本发明,不对利用IPv4/v6双任务的用户终端的软件进行更改即可解决DNS内容服务器的错误动作。并且,在把本发明用于DNS高速缓存服务器的情况下,DNS高速缓存服务器在传送AAAA request时通过还发送A request,可从DNS内容服务器中先行取得IPv4地址,所以,当从终端中接收到A query时,能够迅速回答从高速缓冲存储器读出的IPv4地址。


图1是表示适用本发明的DNS代理服务器的网络结构的模式图。
图2是表示本发明的DNS代理服务器功能的通信顺序的第1例的图。
图3是表示本发明的DNS代理服务器功能的通信顺序的第2例的图。
图4是表示本发明的DNS代理服务器功能的通信顺序的第3例的图。
图5是表示本发明的DNS代理服务器功能的通信顺序的第4例的图。
图6是表示DNS消息的包格式的图。
图7是表示由终端发行的AAAA query的消息格式的图。
图8是表示由DNS代理服务器生成的A query的消息格式的图。
图9是表示由DNS代理服务器发行的AAAA query的消息格式的图。
图10是表示由DNS代理服务器生成的AAAA query的消息格式的图。
图11是DNS代理服务器的结构图。
图12是表示DNS代理服务器所具有的query管理表16的一例的图。
图13A是表示DNS代理服务器执行的AAAA query处理例程200的一部分的流程图。
图13B是表示AAAA query处理例程200的剩余部的流程图。
具体实施例方式
以下参照附图,详细说明本发明的实施例。
图1是表示适用本发明的DNS代理服务器的网络结构的模式图。其中,40是用户终端1所属的IPv4/v6双任务对应的LAN,41是DNS代理服务器10所属的IPv4/v6双任务对应的访问网络。DNS代理服务器10通过边界路由器20A而与上述LAN40相连接。通过别的边界路由器20B而与因特网42相连接。访问网络41具体来说是企业基干网络或供应商网络,终端1通过预先签约的供应商的DNS代理服务器10,与因特网42内的主机装置(服务器,其他计算机)进行通信。
因特网42实际上是由多种管理主体进行管理的多个域网43(43A、43B、43C……)的集合体。在图1中,域网43A和43B是IPv4地址网,域网43C和43D是IPv4/IPv6双地址网,域网43E是IPv6地址网。每个管理主体分别具有单独的DNS内容服务器30(30A、30B、30C……)。各个DNS内容服务器30对其管理下的域网43内的每个主机装置,把主机名和IP地址的对应关系存储在管理表中。
因特网42内的多个DNS内容服务器30形成体系,构成DNS树枝结构。DNS代理服务器10从称作路由服务器的最上位的内容服务器30A起依次进行检索,即可解决因特网上的全部主机名的IP地址。
在现有技术中作为问题的、有可能对AAAA query作出误动作的服务器,例如是对仅能够适用IPv4地址的域网43B进行管理的内容服务器30B。DNS内容服务器30B例如对域网43B内的主机2,存储了主机名“host.example.co.jp”和IPv4地址“1、1、1、1”的对应关系,但不保持主机2的IPv6地址。
在图1中,为便于说明,DNS代理服务器10图示为独立的服务器。但,DNS代理服务器10的功能也可安装在边界路由器20A或20B上。并且,DNS代理服务器10不一定必须位于访问网络41内,在能够与终端1和DNS内容服务器30进行通信的范围内,设置在任何地方均可。终端1在访问DNS内容服务器30时,也可以经过DNS代理服务器以外的别的DNS服务器。
图2是表示本发明的DNS代理服务器10的功能的通信顺序的第1例的图。
属于IPv4/v6双任务网络40的终端1,在希望取得作为通信对方的因特网42内的特定主机的IP地址的情况下,在IPv4的主机名解决请求消息(A query)之前,先把IPv6的主机名解决请求消息(AAAA query)发送到DNS代理服务器10内(SQ1)。如后所述,AAAA query由标题部和查询部构成,在查询部内包括作为地址解决对象的特定的主机名(查询主机名)。
本发明的特征是,接收了上述AAAA query的DNS代理服务器10,根据接收到的AAAA query自动生成具有相同的查询主机名的A query(S10),并大致上同时向DNS内容服务器30(例如30B)发送AAAA query和A query(SQ2、SQ3)。发送了这些query的DNS代理服务器10开始测量从DNS内容服务器30接收最初响应为止的所需时间(响应时间)T1(S11)。
而且,在实际应用中,DNS代理服务器10在发送这些query(SQ2、SQ3)之前,进行DNS树检索等处理,以便确定作为query的目的地址的DNS内容服务器30(例如30B)。这些处理顺序,一般由DNS代理服务器执行,在图2中,为了简化将其省略。
并且,在DNS代理服务器10为具有高速缓冲存储器功能的DNS高速缓存服务器的情况下,在接收AAAA query时,DNS高速缓存服务器从高速缓冲存储器中检索与查询主机名对应的IPv6地址,如果没有目的IP地址,则不把AAAA query传输到DNS内容服务器内,而自己把DNS响应消息发送到请求源终端1。在DNS高速缓存服务器的情况下,以下说明的通信顺序,相当于在高速缓冲存储器内没有目的IPv6地址的情况下的通信顺序。
在此示出的顺序是由DNS内容服务器30响应A query,使表示与查询主机名相对应的IPv4地址的A replay回复(SQ4)之后,作为对AAAAquery的响应,回复(SQ5)了表示在因特网中没有查询主机名的NXDOMAIN(AAAA)的情况。
DNS代理服务器10若从DNS内容服务器30接收A reply,则启动T2定时器(S12),等待从DNS内容服务器30对AAAA query的IPv6DNS响应消息。T2定时器用于限制IPv6DNS响应消息的等待时间,在启动后时间T2过去时,成为超时。
超时时间T2的值也可以是固定值,但也可以根据从发送AAAA query或A query之后最初的响应(A reply)到达为止的时间T1值,根据预先准备的T1的一次函数(T2=α·T1)计算出超时时间T2。系数α是整数值或具有小数值的任意值。
在此,假定由DNS内容服务器30回复的NXDOMAIN(AAAA),在T2定时器超时(S15)之前到达DNS代理服务器10。在此情况下,DNS代理服务器10判断为上述NXDOMAIN(AAAA)与已接收的Areply相矛盾,NXDOMAIN(AAAA)是由DNS内容服务器30错误发行的。因此,DNS代理服务器10根据接收到的NXDOMAIN的内容,生成表示在指定主机名中没有IPv6地址的AAAA reply(No地址)(S14),将其发送到请求源终端1(SQ10)。
接收到上述AAAA reply(No地址)的终端1判断为不能把IPv6地址用于作为通信对方的特定主机,为了取得IPv4地址,发送IPv4的主机名解决请求消息A query(SQ21)。
DNS代理服务器10若接收上述A query,则将其传送到DNS内容服务器30(SQ22)。DNS内容服务器30响应接收到的Aquery,回复表示与指定主机名相对应的IPv4地址的A reply(SQ23)。DNS代理服务器10把上述A reply传送给终端1(SQ24)。
利用上述通信顺序,终端1利用由DNS内容服务器30错误发行的NXDOMAIN,不中断与因特网的连接处理,即可利用IPv4地址与通信对方的主机进行通信。
而且,在DNS代理服务器10是DNS高速缓存服务器的情况下,在步骤SQ4把从DNS代理服务器10接收的A reply的内容保存到高速缓冲存储器内,这样,DNS代理服务器10在从终端1收到Aquery时(SQ21),能够省略步骤SQ22、步骤SQ23,向终端1发送A reply。
图3表示在DNS代理服务器10接收到(SQ4)A reply之后,在对AAAA query等待响应的状态下,T2定时器超时的情况下的通信顺序(S15)。
DNS代理服务器10通过接收(SQ4)A reply,确认了由因特网内的AAAA query所指定的主机名(域)的存在。因此,在已出现T2超时(S15)的情况下,DNS代理服务器10根据上述A reply的内容,生成表示在指定主机名中没有IPv6地址的AAAA reply(No地址)(S16),将其发送到请求源终端1内(SQ10)。以下的顺序与图2相同。
这样,若以T2超时为契机,对DNS代理服务器10发行AAAA reply(No地址),则能够按照为了限制对AAAA query的响应等待时间而设定的比过去的超时时间TO短的等待时间,向请求源终端1发送A query(SQ21),能够提前开始终端1和主机的通信。尤其,在DNS代理服务器10是高速缓存服务器的情况下,能够响应A query(SQ21),立即从DNS代理服务器10返回(SQ24)A reply,所以,能够进一步提前开始终端1和主机的通信。
而且,如虚线所示,在达到T2超时之前,在DNS内容服务器30返回表示与主机名对应的IPv6地址的正常的响应消息AAAA reply(地址数据)的情况下(SQ6),DNS代理服务器10向请求源终端1传送所接收到的AAAA reply。在此情况下,终端1能够利用AAAA reply所表示的IPv6地址,立即开始与主机的通信。
图4表示DNS内容服务器30最初返回对AAAA query的响应消息NXDOMAIN(AAAA)(SQ5),之后,作为对A query的响应消息而返回(SQ4)表示与查询主机名相对应的IPv4地址的A reply通信顺序。
DNS代理服务器10若从DNS内容服务器30接收NXDOMAIN(SQ5),则启动(S13)T3定时器,不将NXDOMAIN传送给终端1而是保持在服务器中,等待接收对A query的响应消息。T3定时器在其启动后经过时间T3的时刻,成为超时。时间T3的值,根据从发送A query起到最初的响应(在该例中为NXDOMAINA)到达为止的时间T1的值,根据预先准备的T1的一次函数(T3=β·T1)计算出时间T3的值。式中,β是整数值或具有小数值的系数,也可以是β=α。
在T3定时器达到超时之前,若接收表示与指定主机名对应的IPv4地址的Areply(SQ4),则DNS代理服务器10判断为错误地发行了在步骤SQ5接收到的XDDOMAIN,根据A reply的内容,生成表示在查询主机名中没有IPv6地址的IPv6的DNS响应消息AAAA reply(No地址)(S14),将其发送到请求源终端1(SQ10)。其后的顺序SQ21~SQ24与图2相同。
图5表示在图4的顺序中,DNS代理服务器10接收到NXDOMAIN(SQ5)之后,在对A query的等待响应的状态下,T3定时器成为超时(S15)的情况下的通信顺序。
在此情况下,DNS代理服务器10把等待发送的NXDOMAIN传送到(SQ11)终端1。终端1通过接收上述NXDOMAIN,自己来判断在因特网没有由AAAA query指定的主机名,不考虑与主机的通信。
图6表示DNS消息的数据包格式。
上述AAAA query、A query、AAAA reply、NXDOMAIN、A reply等DNS消息M,以具有IP标题H1和TCP/UDP标题H2的IP包格式进行发送。
图7表示终端1发行的AAAA query的消息格式。
如图7所示,AAAA query60由标题部H6和查询部Q6构成,在标题部H6内包括消息ID61及其他标题信息部62。查询部Q6包括表示作为地址检索对象的主机名的查询域名(QNAME)63、表示要检索的地址是IPv6还是IPv4的查询类型(QTYPE)64、以及查询类(QCLASS)65。
例如,为了取得图1所示的主机2的IPv6地址,终端1发行的AAAAquery60中作为QNAME63而包括主机名“host.example.co.jp”,作为QTYPE64而包括表示是IPv6的主机名解决请求的值“28”。
图8表示DNS代理服务器10生成的A query的消息格式。Aquery70包括标题部H和查询部Q7,包括与AAAA query60相同的信息项目71~75。
DNS代理服务器10若从终端1接收AAAA query60,则生成如下的A query,该Aquery在消息ID71内包括与AAAA query不同的ID值,在QTYPE74内包括表示作为IPv4的主机名解决消息的值“1”。对QNAME73设定与AAAAquery的QNAME63相同的主机名。
图9表示DNS内容服务器30发行的AAAA reply的消息格式。AAAAreply80包括标题部H8、查询部Q8和响应消息部R8。
标题部H8包括消息ID81、RCODE83、以及其他标题信息82、84。查询部Q8由和AAAA query60相同的信息项目85~87构成,回答信息部R8包括回答信息部88A、权威部88B和附加信息部88C。
对消息ID81设定与AAAA query60相同的ID值;对查询部Q8的QNAME85、QTYPE86、QCLASS87,分别设定与AAAA query60的QNAME63、QTYPE64、QCLASS65相同的值。RCODE83表示由DNS内容服务器30执行的解决处理中有无错误。
在NXDOMAIN的情况下,对RCODE83设定“3”,回答部88A、权威部88B、附加信息部88C分别为空白。在IPv6地址数据的检索成功的情况下,对RCODE83设定表示无错误的“0”,对回答部88A设定主机的IPv6地址的值。对权威部88B和附加信息部88C,设定与DNS内容服务器30中的状况相对应的值。
图10表示DNS代理服务器10生成的AAAA reply(No地址)80P的消息格式。
AAAA reply(No地址)80P的格式与DNS内容服务器30所发行的AAAA reply80相同,对消息ID81设定与AAAA query60相同的ID值,对RCODE83设定表示无错误的“0”。
对QNAME85、QTYPE86、QCLASS87分别设定与AAAA query60的QNAME63、QTYPE64、QCLASS65相同的值,回答部88A、权威部88B、附加信息部88C分别为空白。
DNS内容服务器30响应图8所示的A query70而发行的A reply的格式与图9所示的AAAA reply80相同,对QTYPE86设定表示IPv4的“1”;对回答部88A设定主机所具有的IPv4的地址值。并且,对消息ID81设定A query70的消息ID。
图11表示DNS代理服务器10的结构的一例。
DNS代理服务器10包括处理器11、程序存储器12、数据存储器13、网络接口14、和对这些要素互相进行连接的内部总线15。
在程序存储器12内存储有为了实现DNS代理服务器(或高速缓存服务器)的功能而由处理器执行的各种软件。本发明的DNS代理服务器10作为DNS代理服务器功能的一部分,具有在图13A、图13B中详细表示的经过改进的AAAA query处理例程200。
在数据存储器13存储有DNS代理服务器所需要的各种数据。在DNS高速缓存服务器的情况下,数据存储器13的一部分被用作高速缓冲存储器。在用图12后述的query管理表16形成在数据存储器13内。
图13A、图13B是表示从终端接收AAAA query时,处理器11执行的AAAA query处理程序200的一个实施例的流程图。
如图2的说明中也提到的那样,在实际应用中,DNS代理服务器10确定作为query发送目的地的DNS内容服务器,在发送query之前先进行DNS树检索等处理,但这些处理对DNS代理服务器来说是一般的处理,所以为了简化说明,将其从流程图中省略。并且,在此,在DNS高速缓存服务器的情况下,也省略了在query接收时执行的高速缓冲存储器的检索处理。
所以,AAAA query处理例程200表示在如下情况下所进行的处理,即,高速缓冲存储器的检索处理的结果,确认到在高速缓冲存储器内没有对应于查询请求的地址数据,而且,通过DNS树检索处理来确定作为query的发送目的地的DNS内容服务器时所进行的处理。
AAAA query处理例程200包括AAAA query的接收时执行的请求处理部、以及从DNS内容服务器接收响应消息时执行的响应处理部。
若从终端1接收AAAA query,则处理器11制作具有和AAAA query相同的查询域名、且改变了消息ID的A query(201),把从终端接收的AAAA query和自己制作的A query发送到DNS内容服务器30(202)。然后,处理器11启动来自DNS内容服务器30的最初响应之前的所需时间T1的测量定时器、以及通知预定的最大等待时间T0超时的T0定时器(203),等待接收来自DNS内容服务器30的响应消息(204)。
在从DNS内容服务器30既不能接收A reply也不能接收AAAA reply的状态下,在T0定时器成为超时的情况下(205),处理器11向请求源终端1发送超时错误消息(206),结束该例程。
若从DNS内容服务器30接收最初的响应消息,则处理器11根据接收消息的QTYPE,判断接收消息是对Aquery的响应消息还是对AAAAquery的响应消息(210)。在接收消息是对Aquery的响应消息(A reply)的情况下,处理器11进行后述的图13B的步骤220以后的处理。
在接收消息是对AAAA query的响应消息(AAAA reply)的情况下,处理器11根据接收消息的RCODE来判断接收消息是否是NXDOMAIN(211)。在接收消息不是NXDOMAIN的情况下,也就是说,在表示主机的IPv6地址数据的通常的AAAA reply,或者表示查询域名没有IPv6地址的AAAA reply的情况下,处理器11向请求源终端1内发送接收消息(AAAA reply)(212)之后,结束该例程。
在接收消息为NXDOMAIN的情况下,处理器11在把NXDOMAIN保存在存储器中的状态下,启动限制对A query的响应消息(A reply)的接收等待时间的T3定时器(213),并等待接收A reply(214)。上述T3定时器的设定值根据T1定时器的测量值T1来决定,与T0定时器相比较更早成为超时。在未接收A reply的状态下,T3定时器成为超时的情况下(215),处理器11把保持在存储器中的NXDOMAIN发送到请求源终端1(216),结束该例程。上述NXDOMAIN的发送相当于图5的步骤SQ11。
在T3定时器出现超时之前,若接收对A query的响应消息,则处理器11根据接收消息的RCODE来判断接收消息是否是NXDOMAIN(217)。在接收消息是NXDOMAIN的情况下,处理器11把保持在存储器内的NXDOMAIN发送到请求源终端1(216),结束该例程。
在接收消息不是NXDOMAIN的情况下,也就是说,是表示主机的IPv4地址数据的通常的A reply的情况下,处理器11根据接收到的Areply,生成表示没有目的的IPv6地址数据的AAAA reply(218),将其发送到请求源终端1(219),结束该例程。上述AAAA reply的生成相当于图4的步骤S14。
在最初接收的消息是对A query的响应消息的情况下,处理器11如图13B所示,启动限制对AAAA query的响应消息(AAAA reply)接收等待时间的T2定时器(220),处理器11检查上述最初的接收消息的RCODE(221),在RCODE为“0”(无错误),即接收消息是表示指定主机的IPv4地址的A reply消息的情况下,等待接收从DNS内容服务器30来的AAAA reply(222)。
在未接收AAAA reply的状态下,在T2定时器成为超时的情况下(223),已经通过正常的A reply消息的接收,确认了因特网内存在查询域名,所以,处理器11执行图13A的步骤218、219,向请求源终端1发送表示没有目的IPv6地址的AAAA reply,结束该例程。上述AAAAreply的发送相当于图3的步骤SQ10。
在T2定时器成为超时之前接收到AAAA reply的情况下,处理器11检查接收消息的RCODE(224),在RCODE为错误显示值“3”,即接收消息为NXDOMAIN的情况下,处理器11进行图13A的步骤218、219,向请求源终端1发送表示没有目的IPv6地址的AAAA reply,结束该例程。在接收消息的RCODE为“0”(无错误)的情况下,处理器11向请求源终端1发送(226)接收消息(表示目的IPv6地址的AAAA reply),结束该例程。上述AAAA reply的发送相当于图3中虚线所示的步骤SQ9。
在最初接收的A reply消息的RCODE为表示错误的值的情况下,即接收消息为IPv4的NXDOMAIN的情况下(221),处理器11等待接收来自DNS内容服务器30的AAAA reply(225)。在T2定时器成为超时之前,接收到AAAA reply的情况下,处理器11向请求源终端1发送接收消息(226),结束该例程。
在未接收AAAA reply的状态下,T2定时器成为超时的情况下(227),通过IPv4的NXDOMAIN的接收,已确认了在因特网内没有指定域名。所以,处理器11生成表示因特网内没有指定的主机名的IPv6的NXDOMAIN(228),将其发送到请求源终端1(229),结束该例程。
上述AAAA query处理例程200着眼于一个AAAA query,用时间序列来表示DNS代理服务器10的处理器11所执行的动作。但是,在实际应用中,DNS代理服务器10从多个终端接收AAAA query,也从DNS内容服务器接连地接收消息ID的不同的多个AAAA reply和A reply。所以,处理器11必须按每个发生的AAAA query来管理来自DNS内容服务器的响应消息状态,控制向各终端发送响应消息。
图12表示处理器11为控制向各个终端发送响应消息而参照的query管理表16的一例。
query管理表16包括与AAAA query对应的多个表项目160-1……。各个表项目表示AAAA queryID161、AqueryID162、AAAA reply的RCODE163、A reply的RCODE164、请求源IP地址165,T0超时166、T2(T3)超时167。
处理器11在接收AAAA query时,在生成了具有与其相同的查询域名的A query之后,在query管理表16增加上述AAAA query用的新表项目160-j。这时,表项目160-j的RCODE164、165和T2(T3)超时167在空白的状态下,对AAAA querylD161设定接收AAAA query的消息ID81的值,对A queryID62设定所生成的A query的消息ID71;对请求源IP地址165设定从接收的AAAA query的IP标题H1中抽出的发送源IP地址的值。并且,对T0超时166设定T0定时器的超时时刻。
处理器11每当从DNS内容服务器接收reply消息时,从上述query管理表16检索出与接收消息的消息ID相对应的表项目160-k,进行与表项目状态相对应的动作。
当从DNS内容服务器接收reply消息时,如果RCODE164和165均为空白栏状态,则处理器11可以把接收消息的RCODE的值存储到上述表项目160-k的RCODE164或165,然后进行AAAA query处理例程200的步骤210~213或220,在步骤213或220计算出T2定时器或T3定时器的超时时刻,可将其作为T2(T3)定时器165的超时时刻存储在上述表项目。
当从DNS内容服务器接收到reply消息时,如果是在RCODE164和165中的一个已存储了有效数据的状态,则处理器11根据接收消息的QTYPE来判断接收消息是AAAA reply还是A reply。处理器11可以在接收消息是A reply的情况下,执行AAAA query处理例程200的步骤216~219,在接收消息是AAAA reply的情况下,可以根据上述RCODE164或165所示的A reply的状态,执行AAAA query处理例程200的步骤222、224~226。
并且,处理器11定期检查query管理表16的定时器166和167所示的超时时刻,对于已达到超时时刻的表项目,根据RCODE164和165的状态,有选择地执行AAAA query处理例程200的步骤206、216、218~219或步骤228~229。在步骤212、216、219、226或229,向请求源终端内发送响应消息时,可以从query管理表16删除不需要的表项目。
权利要求
1.一种DNS代理服务器,和终端进行DNS消息通信,其特征在于具有请求处理部,在从终端接收到IPv6的DNS查询消息AAAA request时,生成具有与该查询消息相同的查询域名的IPv4的DNS查询消息Arequest,把上述AAAA request和A request发送到因特网内的特定的DNS内容服务器;以及响应处理部,在作为对上述AAAA request的IPv6的DNS响应消息,从上述DNS内容服务器接收到表示查询域名为错误的NXDOMAIN的情况下,根据从上述DNS内容服务器接收的、对上述A request的IPv4的DNS响应消息的内容,生成与上述NXDOMAIN不同的另外的DNS响应消息,将其发送到上述终端。
2.如权利要求1所述的DNS代理服务器,其特征在于在作为上述IPv4的DNS响应消息,接收到表示与上述查询域名相对应的IPv4地址的A reply的情况下,上述响应处理部生成表示在上述查询域名中没有IPv6地址的消息AAAA reply,作为对上述AAAA request的IPv6的DNS响应消息,发送到上述终端。
3.如权利要求2所述的DNS代理服务器,其特征在于在从上述DNS内容服务器先于上述IPv4的DNS响应消息而接收到上述NXDOMAIN的情况下,上述响应处理部在保持上述NXDOMAIN的状态下,等待从上述DNS内容服务器接收IPv4的DNS响应消息。
4.如权利要求3所述的DNS代理服务器,其特征在于当接收到上述NXDOMAIN时,上述响应处理部启动用于限制IPv4的DNS响应消息的等待时间的定时器,在未接收IPv4的DNS响应消息而上述定时器超时时,向上述终端发送上述NXDOMAIN。
5.如权利要求4所述的DNS代理服务器,其特征在于上述请求处理部在发送AAAA request或A request时,启动用于测量上述DNS内容服务器的响应时间的定时器,当接收到上述NXDOMAIN时,上述响应处理部根据上述测量定时器所表示的响应时间,决定上述IPv4的DNS响应消息的等待时间。
6.如权利要求2所述的DNS代理服务器,其特征在于在从上述DNS内容服务器先于IPv6的DNS响应消息接收到上述A reply的情况下,上述响应处理部启动用于限制IPv6的DNS响应消息等待时间的定时器,在该定时器超时之前接收到上述NXDOMAIN时,生成表示在上述查询域名中没有IPv6地址的消息AAAA reply,发送到上述终端。
7.如权利要求2所述的DNS代理服务器,其特征在于从上述DNS内容服务器先于IPv6的DNS响应消息而接收到上述A reply的情况下,上述响应处理部启动用于限制IPv6的DNS响应消息等待时间的定时器,在未接收IPv6的DNS响应消息而上述定时器超时时,生成表示在上述查询域名中没有IPv6地址的消息AAAA reply,发送到上述终端。
8.如权利要求6所述的DNS代理服务器,其特征在于上述请求处理部在发送AAAA request或A request时,启动用于测量上述DNS内容服务器的响应时间的定时器,当接收到上述A reply时,上述响应处理部根据上述测量定时器所表示的响应时间,决定上述IPv6的DNS响应消息的等待时间。
9.如权利要求1所述的DNS代理服务器,其特征在于上述请求处理部在发送AAAA request或A request时,启动用于测量上述DNS内容服务器的响应时间的定时器,在从上述DNS内容服务器未接收IPv6的DNS响应消息以及IPv4的DNS响应消息的情况下,上述响应时间测量用定时器已到达预定的超时时间时,上述响应处理部生成表示上述AAAA request的查询域名是错误的NXDOMAIN,作为IPv6的DNS响应消息,并将其发送到上述终端。
10.如权利要求1所述的DNS代理服务器,其特征在于在作为对上述AAAA request的IPv6的DNS响应消息,从上述DNS内容服务器接收到表示与上述查询域名对应的IPv6地址的AAAA reply的情况下,上述响应处理部将该AAAA reply发送到上述终端。
11.如权利要求1所述的DNS代理服务器,其特征在于具有高速缓冲存储器,该高速缓冲存储器存储从DNS内容服务器接收到的AAAAreply和A reply所表示的查询域名和IP地址的关系,当从终端接收到AAAA request或者A request时,上述请求处理部参照上述高速缓冲存储器,在上述高速缓冲存储器中存在与接收到的request所表示的查询域名对应的IP地址的情况下,生成表示该IP地址的DNS响应消息,发送到请求源终端。
全文摘要
本发明即使在DNS内容服务器对IPv6的主机名解决请求发行了错误响应的情况下,也能够在请求源终端取得IPv4地址。当从终端接收了IPv6的主机名解决请求AAAA query时,由DNS代理服务器生成具有与其相同的域名的IPv4的主机名解决请求A query,并将其和AAAA query一起发送到DNS内容服务器,根据从DNS内容服务器接收的IPv6的DNS响应AAAA reply和IPv4的DNS响应A reply的内容,决定应向终端内回复的DNS响应。DNS代理服务器即使在从DNS内容服务器接收了表示域名错误的响应消息的情况下,如果A reply是正常的,则也生成表示没有目的地址的AAAA reply返回给终端。
文档编号H04L29/06GK1976307SQ20061010748
公开日2007年6月6日 申请日期2006年7月26日 优先权日2005年11月28日
发明者吉本哲郎, 松川公 申请人:日立通讯技术株式会社
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1