CN109379453A - 一种DNS出口服务器ip地址的探测方法及系统 - Google Patents

一种DNS出口服务器ip地址的探测方法及系统 Download PDF

Info

Publication number
CN109379453A
CN109379453A CN201811612922.2A CN201811612922A CN109379453A CN 109379453 A CN109379453 A CN 109379453A CN 201811612922 A CN201811612922 A CN 201811612922A CN 109379453 A CN109379453 A CN 109379453A
Authority
CN
China
Prior art keywords
domain name
detection
server
address
dns
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN201811612922.2A
Other languages
English (en)
Other versions
CN109379453B (zh
Inventor
邱茂华
王明烽
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Wangsu Science and Technology Co Ltd
Original Assignee
Wangsu Science and Technology Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Wangsu Science and Technology Co Ltd filed Critical Wangsu Science and Technology Co Ltd
Priority to CN201811612922.2A priority Critical patent/CN109379453B/zh
Publication of CN109379453A publication Critical patent/CN109379453A/zh
Application granted granted Critical
Publication of CN109379453B publication Critical patent/CN109379453B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L61/00Network arrangements, protocols or services for addressing or naming
    • H04L61/45Network directories; Name-to-address mapping
    • H04L61/4505Network directories; Name-to-address mapping using standardised directories; using standardised directory access protocols
    • H04L61/4511Network directories; Name-to-address mapping using standardised directories; using standardised directory access protocols using domain name system [DNS]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L61/00Network arrangements, protocols or services for addressing or naming
    • H04L61/09Mapping addresses
    • H04L61/10Mapping addresses of different types
    • H04L61/103Mapping addresses of different types across network layers, e.g. resolution of network layer into physical layer addresses or address resolution protocol [ARP]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/60Scheduling or organising the servicing of application requests, e.g. requests for application data transmissions using the analysis and optimisation of the required network resources

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

本发明公开了一种DNS出口服务器ip地址的探测方法及系统,其中,该方法包括:客户端向本地DNS发送包括探测域名的域名解析请求;在本地DNS中的DNS出口服务器确定无法解析探测域名之后,向探测服务器发送包含探测域名的探测请求;探测服务器基于探测请求获取DNS出口服务器的出口ip地址;探测服务器向本地DNS发送包括出口ip地址的探测结果,本地DNS接收到出口ip地址之后,向客户端发送探测结果。在本发明中,用户在客户端只需用特定命令执行预设的域名,即可得到DNS出口服务器ip地址,操作方便快捷,能够降低沟通成本,提高出口ip地址的探测效率。

Description

一种DNS出口服务器ip地址的探测方法及系统
技术领域
本发明涉及计算机技术领域,特别涉及一种DNS出口服务器ip地址的探测方法及系统。
背景技术
客户端通过域名访问某个网站时,首先需要通过本地DNS(Domain Name System,域名系统)进行域名解析得到网站的ip地址,再去访问该ip地址。本地DNS通常是一个集群,包括很多DNS服务器,在为用户进行域名解析时,真正提供服务的DNS服务器,即DNS出口服务器并不一定。
在实际操作中,如果本地DNS配置错误,例如A区域的客户端配置的本地DNS为B区域的DNS,会出现网站无法访问或访问慢等问题。所以在针对该问题进行运维故障排查时,需要找到DNS出口服务器的ip地址,以判断本地DNS是否配置错误。而目前查询DNS出口服务器的ip地址需要用户配合,通常的做法是用户在客户端上执行ping命令,再把得到的ip地址截图返回给运维人员。目前DNS出口服务器的ip地址的查询方式比较复杂,如果用户对于这类操作不熟悉,通常会花费较大的沟通成本,运维故障排查效率低。
发明内容
为了解决现有技术的问题,本发明实施例提供了一种DNS出口服务器ip地址的探测方法及系统。所述技术方案如下:
第一方面,提供了一种DNS出口服务器ip地址的探测方法,该方法包括:
客户端向本地DNS发送包括探测域名的域名解析请求;
在所述本地DNS中的DNS出口服务器确定无法解析所述探测域名之后,向探测服务器发送包含所述探测域名的探测请求;
所述探测服务器基于所述探测请求获取所述DNS出口服务器的出口ip地址;
所述探测服务器向所述本地DNS发送包括所述出口ip地址的探测结果;
所述本地DNS接收到所述探测结果之后,向所述客户端发送所述探测结果。
可选的,客户端向本地DNS发送包括探测域名的域名解析请求的步骤,包括:
所述客户端利用域名查询工具向所述本地DNS发送包括所述域名查询探测域名的域名解析请求,其中,所述域名查询工具包括dig命令或者nslookup命令。
可选的,在所述本地DNS中的DNS出口服务器确定无法解析所述探测域名之后,向探测服务器发送包含所述探测域名的探测请求的步骤,包括:
在所述本地DNS中的DNS出口服务器确定无法解析所述探测域名之后,通过迭代式地向各级权威域名服务器发送包含所述探测域名的域名解析请求,获取所述探测服务器的ip地址;
所述DNS出口服务器基于所述探测服务器的ip地址向所述探测服务器发送包含所述探测域名的探测请求。
可选的,所述探测服务器基于所述探测请求获取所述DNS出口服务器的出口ip地址的步骤之后,还包括:
所述探测服务器判断当前已执行的探测次数是否达到数量阈值;
如果没达到,所述探测服务器基于当前接收到的域名构造随机域名,向所述本地DNS发送所述随机域名,所述本地DNS中的DNS出口服务器向所述探测服务器发送包含所述随机域名的探测请求,所述探测服务器基于所述探测请求获取所述DNS出口服务器的出口ip地址,转上一步,直至当前已执行的探测次数达到所述数量阈值。
可选的,所述探测域名还包括探测次数参数;
判断当前已执行的探测次数是否达到数量阈值的步骤,包括:
如果所述探测域名中的探测次数参数大于1,则判断当前已执行的探测次数是否达到数量阈值,其中,所述数量阈值等于所述探测次数参数。
可选的,所述探测服务器基于所述探测请求获取所述DNS出口服务器的出口ip地址的步骤之后,还包括:
所述探测服务器确定所述探测请求对应的UUID;
所述探测服务器将所述出口ip地址存入以所述UUID作为关键字的关联容器中,其中,所述出口ip地址为所述关键字的值。
可选的,所述探测服务器基于当前接收到的域名构造随机域名的步骤,包括:
如果当前接收到的域名不是随机域名,则基于当前域名增加所述UUID字段和探测次数字段,得到随机域名;
如果当前接收到的域名是随机域名,则基于当前随机域名改变探测次数字段,得到新的随机域名。
可选的,所述探测服务器向所述本地DNS发送包括所述出口ip地址的探测结果的步骤之前,还包括:
所述探测服务器基于最后一次接收到域名对应的UUID从相应的关联容器中获取所述出口ip地址。
可选的,所述探测域名还包括归属信息参数;
所述探测服务器向所述本地DNS发送包括所述出口ip地址的探测结果的步骤,包括:
所述探测服务器基于所述归属信息参数获取所述DNS出口服务器的归属信息;
所述探测服务器向所述本地DNS发送包括所述出口ip地址和所述归属信息的探测结果。
可选的,所述本地DNS中的DNS出口服务器向探测服务器发送包含所述探测域名的探测请求的步骤之后,包括:
所述探测服务器利用接收线程接收所述探测请求,并将所述探测请求存入消息队列中,其中,所述接收线程与所述消息队列的比值为1:n,其中n为正整数,每个所述消息队列对应一个处理线程,所述处理线程用于从对应的消息队列中获取所述探测请求,并对所述探测请求进行后续的处理。
第二方面,提供了一种DNS出口服务器ip地址的探测系统,该系统包括:包括客户端、本地DNS以及探测服务器;
所述客户端,用于向所述本地DNS发送包括探测域名的域名解析请求;
所述本地DNS用于,在所述本地DNS中的DNS出口服务器确定无法解析所述探测域名之后,向探测服务器发送包含所述探测域名的探测请求;
所述探测服务器,用于基于所述探测请求获取所述DNS出口服务器的出口ip地址,以及向所述本地DNS发送包括所述出口ip地址的探测结果;
所述本地DNS,还用于在接收到所述探测结果之后,向所述客户端发送所述探测结果。
可选的,所述客户端,具体用于:
利用域名查询工具向所述本地DNS发送包括所述域名查询探测域名的域名解析请求,其中,所述域名查询工具包括dig命令或者nslookup命令。
可选的,所述探测服务器,用于:
判断当前已执行的探测次数是否达到数量阈值;
如果没达到,基于当前接收到的域名构造随机域名,向所述本地DNS发送所述随机域名,以及接收到所述本地DNS中的DNS出口服务器发送的包含所述随机域名的探测请求,并基于所述探测请求获取所述DNS出口服务器的出口ip地址,转上一步,直至当前已执行的探测次数达到所述数量阈值。
可选的,所述探测域名还包括探测次数参数;
所述探测服务器,用于当所述探测域名中的探测次数参数大于1时,判断当前已执行的探测次数是否达到所述数量阈值,其中,所述数量阈值等于所述探测次数参数。
可选的,所述探测服务,用于:
确定所述探测请求对应的UUID;
将所述出口ip地址存入以所述UUID作为关键字的关联容器中,其中,所述出口ip地址为所述关键字的值。
可选的,所述探测服务器,用于:
如果当前接收到的域名不是随机域名,则基于当前域名增加所述UUID字段和探测次数字段,得到随机域名;
如果当前接收到的域名是随机域名,则基于当前随机域名改变探测次数字段,得到新的随机域名。
可选的,所述探测服务器,用于基于最后一次接收到域名对应的UUID从相应的关联容器中获取所述出口ip地址
可选的,所述探测服务器,用于:
利用接收线程接收所述探测请求,并将所述探测请求存入消息队列中,其中,所述接收线程与所述消息队列的比值为1:n,其中n为正整数,每个所述消息队列对应一个处理线程,所述处理线程用于从对应的消息队列中获取所述探测请求,并对所述探测请求进行后续的处理。
在本发明实施例中,用户在客户端只需用特定命令执行预设的域名,即可得到DNS出口服务器ip地址,操作方便快捷,能够降低与用户的沟通成本,提高出口ip地址的探测效率,并且通过在该预设的域名中设置不同的请求参数,可以得到不同类型的探测结果,如出口ip地址、出口ip地址及归属、客户端ip地址、客户端ip地址及归属等等,从而使用户可以按需选择,满足不同场景的需求,使探测项目功能更加多样化。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明实施例提供的一种网络框架示意图;
图2是本发明实施例提供的一种DNS出口服务器ip地址的探测方法的流程图;
图3是本发明实施例提供的一种探测服务器中用于接收以及处理探测请求的线程图;
图4是本发明实施例提供的另一种DNS出口服务器ip地址的探测方法的流程图;
图5是本发明实施例提供的一种探测服务器中用于接收以及处理访问请求的线程图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明实施方式作进一步地详细描述。
本发明实施例提供了一种DNS出口服务器ip地址的探测方法,该方法可以应用于图1所示的网络框架中。该网络框架包括客户端、本地DNS以及探测服务器。本发明实施例支持多种探测方式,其中包括域名查询探测方式以及http(hypertext transfer protocol,超文本传输协议)探测方式。具体探测过程如下所述。客户端用于向本地DNS发送包括探测域名的域名解析请求,该探测域名为本地DNS无法解析的域名,该探测域名为域名查询探测域名或http探测域名。其中,域名查询探测域名适用于域名查询探测方式,http探测域名适用于http探测方式。本地DNS用于接收客户端发送的域名解析请求,并在所述本地DNS中的DNS出口服务器确定无法解析所述域名解析请求中的探测域名之后,向探测服务器发送包含所述探测域名的探测请求,从而使探测服务器获得该DNS出口服务器的出口ip地址。对于域名查询探测方式,探测服务器在结束出口ip地址的探测之后,向本地DNS发送包括所述出口ip地址的探测结果,本地DNS接收到探测结果之后,向客户端发送探测结果。对于http探测方式,探测服务器在结束出口ip地址的探测之后,向本地DNS发送探测服务器的ip地址,本地DNS接收到该ip地址之后,向客户端发送该ip地址,客户端基于该ip地址向探测服务器发送访问请求,探测服务器基于该访问请求向客户端发送包括出口ip地址的探测结果。
在本发明实施例中,用户在客户端只需用特定命令执行预设的域名,即可得到DNS出口服务器ip地址,操作方便快捷,能够降低与用户的沟通成本,提高出口ip地址的探测效率,并且通过在该预设的域名中设置不同的请求参数,可以得到不同类型的探测结果,例如出口ip地址、出口ip地址及归属、客户端ip地址、客户端ip地址及归属等等,从而使用户可以按需选择,满足不同场景的需求,使探测项目功能更加多样化;另外本发明实施例支持多种探测方式,例如域名查询探测方式或者http探测方式,用户可以根据自己的需求选择相应的探测方式,更加方便用户使用,http探测方式中用户可以很方便地在浏览器中输入相应的域名,访问该域名后即可返回包括探测结果的页面,即使用户不太熟悉域名查询工具,也能够轻松地查询得到出口ip地址,操作更加方便快捷。
需要说明的是,为与其他服务器的ip地址进行区分,DNS出口服务器的ip地址使用出口ip地址进行替代,所以,本发明实施例中所述的出口ip地址即指DNS出口服务器的ip地址。
上述探测服务器可以包括处理器、存储器、收发器,处理器用于进行下述流程中探测出口ip地址的处理,存储器用于存储下述处理过程中需要的数据以及产生的数据,收发器用于接收和发送下述处理过程中的相关数据。
本发明实施例支持多种探测方式,其中包括域名查询探测方式以及http探测方式。以下,首先参照图2详细说明域名查询探测方式。
参见图2,为本发明实施例提供的一种DNS出口服务器ip地址的探测方法的流程图,该方法具体可以包括以下步骤。
步骤201,客户端向本地DNS发送包括探测域名的域名解析请求。
所述客户端可以利用域名查询工具,例如dig(domain information groper,域信息搜索器)命令或者nslookup(name server lookup,域名查询)命令向所述本地DNS发送包括探测域名的域名解析请求,相应的,该探测域名具体为域名查询探测域名,也即为域名查询工具所能识别的域名。用户在客户端进行操作时,可以在命令输入窗口中输入预设的探测域名,例如dns.abc.com,然后确定发送包含该探测域名的域名解析请求。为使本地DNS能够继续向探测服务器发送解析该探测域名的探测请求,需要预先设置该本地DNS无权解析该探测域名,而是将该探测域名的解析权授予探测服务器。
步骤202,在所述本地DNS中的DNS出口服务器确定无法解析所述探测域名之后,向探测服务器发送包含所述探测域名的探测请求。
在实施中,本地DNS中不存储探测域名对应的ip地址,并设置探测域名解析结果的缓存时间为0,也就是说,本地DNS在接收到探测服务器发送的域名解析结果之后,不会缓存该域名解析结果,因为需要获取的域名解析结果没有缓存,所以负责每次域名解析的DNS出口服务器均会向探测服务器包含所述探测域名的探测请求,请求探测服务器解析该探测域名。
在具体实施中,DNS出口服务器可能无法直接得知探测服务器的ip地址,而是通过迭代式地向各级权威域名服务器发送包含所述探测域名的域名解析请求,获取所述探测服务器的ip地址,再基于所述探测服务器的ip地址向所述探测服务器发送包含所述探测域名的探测请求,具体过程为:DNS出口服务器确定无法解析所述探测域名之后,向第一级权威域名服务器发送包含所述探测域名的域名解析请求,由于该权威域名服务器无权解析该探测域名,则向DNS出口服务器返回下一级权威域名服务器的ip地址,DNS出口服务器再向下一级权威域名服务器发送包含所述探测域名的域名解析请求,如此迭代循环,直至获取到探测服务器的ip地址,最后向该探测服务器发送包含探测域名的域名解析请求,也即探测请求。由于探测服务器有权解析该探测域名,能够向DNS出口服务器返回解析结果,从而结束该迭代过程。其中,探测服务器可以看做是最后一级权威域名服务器。
步骤203,所述探测服务器基于所述探测请求获取所述DNS出口服务器的出口ip地址。
由于该探测请求为负责这次域名解析的DNS出口服务器发送的请求,所以可以通过对该探测请求的数据包进行解析,获取发送该探测请求的ip地址,即负责这次域名解析的DNS出口服务器的ip地址,从而完成一次探测。
在具体实施中,探测服务器可以在执行一次探测,也即获取一次出口ip地址之后,即可返回给客户端,也可以执行至少两次探测之后,才返回给客户端。当规定探测服务器执行一次探测之后即可返回给客户端时,可以在基于包含探测域名的探测请求获取出口ip地址之后,结束探测。当规定探测服务器执行至少两次探测之后,才返回给客户端时,可以在基于包含探测域名的探测请求获取出口ip地址,即执行完一次探测之后,执行以下过程:所述探测服务器判断当前已执行的探测次数是否达到数量阈值;如果没达到,所述探测服务器基于当前接收到的域名构造随机域名,并向所述本地DNS发送所述随机域名,所述本地DNS中的DNS出口服务器向所述探测服务器发送包含所述随机域名的探测请求,所述探测服务器基于所述探测请求获取所述DNS出口服务器的出口ip地址,转上一步,直至当前已执行的探测次数达到数量阈值。从而实现通过构造随机域名,迭代式地向探测服务器发送探测请求,探测服务器经过多次探测之后,能够获取至少一个出口ip地址,从而利用获取到的出口ip地址更加准确地确定本地DNS的信息,提高运维故障排查的准确度。
上述数量阈值可以为固定的预设数值,也可以通过客户端进行设置。在数量阈值通过客户端进行设置的方式中,客户端向本地DNS发送的域名解析请求中包括探测次数参数,也即输入的探测域名中包括探测次数参数,该探测次数参数的数值即为数量阈值。例如,探测次数参数为2,说明需要执行两次探测。当探测服务器解析到探测请求中的探测域名中包括探测次数参数,并且探测次数参数大于1时,需要每执行完一次探测,即每次获取到出口ip地址之后,判断当前已执行的探测次数是否达到该探测次数参数所规定的数值。当所述探测域名中的探测次数参数为1时,可以不进行判断,并结束探测。本发明实施例不对包括探测次数参数的探测域名的结构进行具体限定。
探测服务器每次基于探测请求获取出口ip地址之后,可以确定该探测请求对应的UUID(Universally Unique Identifier,通用唯一识别码),并将所述出口ip地址存入以所述UUID作为关键字的关联容器中,其中,所述出口ip地址为所述关键字的值。该关联容器可以为map容器。在探测服务器第一次基于包含探测域名的探测请求获取出口ip地址之后,可以根据该探测请求中的客户端标识确定对应的UUID。探测服务器在基于探测域名构造随机域名时,并且该探测域名不是随机域名时,可以基于当前域名,即探测域名增加所述UUID字段和探测次数字段,得到随机域名。例如,当客户端利用dig命令探测出口ip时,得到的随机域名为11110431eb84406988c2c3dd59462cc845c6acdig1.dns.abc.com。其中,11110431eb84406988c2c3dd59462cc845c6ac为UUID字段,dig1中的“1”为探测次数字段。探测服务器在基于随机域名构造新的随机域名时,可以基于当前随机域名改变探测次数字段,得到新的随机域名,例如,将上述随机域名举例中的dig1字段替换为dig2,从而得到新的随机域名。可见,基于同一探测域名构造的每个随机域名的UUID字段均相同,所以可以将基于同一探测域名获取到的全部出口ip地址,均保存到当前UUID作为关键字的关联容器中。
由于UUID需要调用外部接口生成,若要用时再调用会耗时较长,为降低耗时,可以预先一次性大批量生成UUID并存储于内存中,用的时候直接从内存调取即可,从而提高出口ip地址探测效率。
探测服务器在迭代式地构造随机域名时,可以通过递增或递减的方式改变随机域名中的探测次数字段,从而可以根据随机域名中的探测次数字段判断当前获取到的出口ip地址的数量是否达到数量阈值。例如,当通过递增方式改变随机域名中的探测次数字段时,设置首个构造的随机域名探测次数字段为1,数量阈值为3,当探测服务器基于当前探测请求获取出口ip地址之后,并且判断出当前探测请求中随机域名的探测次数字段为2时,说明当前获取到的出口ip地址的数量已经达到数量阈值。再例如,当通过递减方式改变随机域名中的探测次数字段时,设置首个构造的随机域名探测次数字段为3,数量阈值为3,当探测服务器基于当前探测请求获取出口ip地址之后,并且判断出当前探测请求中随机域名的探测次数字段为2时,说明当前获取到的出口ip地址的数量已经达到数量阈值。
进一步的,探测服务器每次获得出口ip地址之后,可以将出口ip地址存入内存的关联容器中。
由于探测服务器同时支持域名查询探测方式以及http探测方式,并且两种探测方式的探测结果返回方式不同,所以在返回探测结果之前,需要判断当前的探测方式。在判断当前的探测方式时,可以根据最后一次接收到的域名进行判断,如果该域名为域名查询探测域名或者为其随机域名,说明当前的探测方式为域名查询探测方式,否则为http探测方式。当探测方式为域名查询探测方式时,执行以下步骤。
步骤204,所述探测服务器向所述本地DNS发送包括所述出口ip地址的探测结果。
步骤205,所述本地DNS接收到所述探测结果之后,向所述客户端发送所述探测结果。
探测服务器在结束出口ip地址的探测之后,可以基于当前接收到域名,即最后一次接收到的域名对应的UUID从内存的相应关联容器中获取出口ip地址,并向所述本地DNS发送包括所述出口ip地址的探测结果。当没有设置数量阈值,或数量阈值为1时,探测服务器可以根据探测请求中的客户端标识确定UUID,从而从关键字为该的UUID的关联容器中获取出口ip地址。当数量阈值大于1时,探测服务器可以根据最后一次接收到的随机域名的UUID字段确定UUID,从而从关键字为该UUID的关联容器中获取出口ip地址。
本发明实施例的探测服务器灵活支持多种返回数据,如出口ip地址、出口ip地址及归属、客户端ip地址、客户端ip地址及归属,以及上述各种组合。例如,返回数据为"dns=36.250.240.21cli=218.92.100.1"。为支持多种返回数据,客户端发送的域名解析请求所包含的请求参数还可以包括归属信息参数。归属信息参数用于规定返回给客户端的探测结果是否要包括DNS出口服务器的归属信息或者客户端的归属信息,其中,归属信息包括运营商信息和地理位置。域名解析请求中包括的各个参数,可以根据预设格式写入的探测域名中,构成探测域名的部分字段。例如,当域名解析请求中包括探测次数参数时,探测域名的格式可以为dig+short[<num>.]dns.abc.com,其中,“num”表示探测次数参数。本发明实施例不对探测域名中各个参数所采用的格式进行具体限定。
在出口ip地址探测结束后,探测服务器对接收到的探测域名进行结构分析,当所述探测域名包括归属信息参数时,所述探测服务器基于该归属信息参数获取相应的归属信息,并向本地DNS同时发送包括出口ip地址和归属信息的探测结果。当所述探测域名包括数据格式参数时,所述探测服务器基于该数据格式参数所指示的格式构造所述探测结果,并向本地DNS发送该格式的探测结果。当需要探测多个出口ip地址时,如果探测域名中包括请求参数,则构造的随机域名中也包括相应的请求参数,那么,在出口ip地址探测结束后,探测服务器可以对当前接收到的随机域名进行结构分析,并根据该随机域名所包含的请求参数,对探测结果进行相应的处理。用户在设置域名解析请求的参数时,可以根据需要选择所包含的参数类型,以及具体的参数值,用户按需选择,从而满足不同场景的需求,使探测项目功能更加多样化。
本地DNS可以利用udp(user datagram protocol,用户数据报协议)向探测服务器发送探测请求。并且探测服务器可以采用线程池加消息队列组技术处理本地DNS发送的探测请求。线程池中可以包括监听线程、接收线程、处理线程以及日志线程,并且各个线程分别独立进行,互不干扰。其中,接收线程和处理线程通过消息队列进行通讯,日志线程独占消息队列,从而实现高并发接收、无阻塞处理并快速返回探测结果。
在实施中,可以根据接收探测请求和处理探测请求的耗时情况合理分配两种线程的数量,使得高并发情况下能达到如下最佳平衡:尽可能多得接入探测请求,使得消息队列处于近似满的状态,但又不会因消息队列满而导致接收线程阻塞;尽可能快得处理,不让消息队列存满。例如,当接收探测请求和处理探测请求的时间之比接近1:2时,可以设置接收线程和处理线程的比值为1:2。当前采用的负载均衡策略方案如下:接收线程非阻塞接收请求,并且阻塞插入消息队列。假设接收探测请求和处理探测请求的速度比为n,其中n为正整数,则一个接收线程绑定n个消息队列,均衡地插入探测请求;每个消息队列对应一个处理线程,非阻塞读取消息。用于执行负载均衡策略方案的负载模块可以采用接口设计,从而方便后续进行扩展。
如图3所示,所述探测服务器利用接收线程接收所述探测请求,并将所述探测请求存入消息队列中,其中,所述接收线程与所述消息队列的比值为1:n,其中n为正整数,每个所述消息队列对应一个处理线程,所述处理线程用于从对应的消息队列中获取所述探测请求,并对所述探测请求进行后续的处理。在探测服务器中,接收线程接收到的探测请求为数据包的形式,所以需要对该数据包进行解析,得到有用的中间消息,例如待解析的域名,出口ip地址等,然后将得到的中间消息存入消息队列中,处理线程再从消息队列中读取中间信息进行处理,例如将出口ip地址存入内存,或者构造随机域名等等,最终得到并返回探测结果。
本发明实施例预先设置本地DNS无法解析的域名,用户只需在域名查询工具的命令行中输入该预设的域名,即可得到DNS出口服务器ip地址,操作方便快捷,能够降低沟通成本,提高出口ip地址的探测效率,并且通过在该预设的域名中设置不同的请求参数,可以得到不同类型的探测结果,例如出口ip地址、出口ip地址及归属、客户端ip地址、客户端ip地址及归属等等,从而使用户可以按需选择,满足不同场景的需求,使探测项目功能更加多样化。
如图4所示,基于与上述实施例相同的发明构思,本发明实施例还提供另一种DNS出口服务器ip地址的探测方法的流程图,该方法适用于http探测方式,具体可以包括以下步骤。
步骤401,客户端向探测服务器发送包括http域名的第二访问请求。
所述客户端可以利用http工具执行出口ip地址的探测过程,具体的,利用http工具向所述本地DNS发送所述域名解析请求,并且利用所述http工具向所述探测服务器发送所述第一访问请求以及所述第二访问请求。所述http工具包括浏览器、wget命令或者curl命令。其中,wget是一个从网络上自动下载文件的自由工具,curl是利用URL(UniformResource Locator,统一资源定位符)语法在命令行方式下工作的开源文件传输工具。用户在客户端进行操作时,可以在浏览器或相应的命令行中输入预设的http域名,例如who.abc.com,然后确定发送包含该http域名的访问请求。该http域名对应ip地址为探测服务器的ip地址,客户端向探测服务器发送包括http域名的第二访问请求的过程具体可以包括:所述客户端向所述本地DNS发送包括所述http域名的域名解析请求;所述本地DNS对所述http域名进行解析,得到所述探测服务器的ip地址,并向所述客户端发送所述ip地址;所述客户端基于所述ip地址向探测服务器发送包括所述http域名的第二访问请求。
步骤402,所述探测服务器在接收到所述第二访问请求之后,基于所述http域名构造探测域名,并向所述客户端发送所述探测域名。
在实施中,可以预先设置本地DNS无权解析的域名作为该探测域名,并将该探测域名的解析权授予探测服务器。这里所采用的探测域名具体为http探测域名。该探测域名可以为非随机域名,也可以为随机域名。当该探测域名为非随机域名时,可以是任一结构形式的域名,本实施例不对该探测域名的结构形式进行具体限定。当该探测域名是随机域名时,构造该探测域名的可以过程为:确定所述第二访问请求中客户端标识对应的UUID(Universally Unique Identifier,通用唯一识别码),基于所述http域名增加所述UUID字段构造随机域名,并将该随机域名作为所述探测域名。例如,作为探测域名的随机域名为11110431eb84406988c2c3dd59462cc845c6achttp1.dns.abc.com,其中11110431eb84406988c2c3dd59462cc845c6ac即表示UUID字段。
步骤403,所述客户端在接收到所述探测域名之后,向所述本地DNS发送包含所述探测域名的域名解析请求。
探测服务器在构造完探测域名之后,可以通过302跳转地址的方式向所述客户端发送所述探测域名,从而使客户端利用http工具直接跳转到该探测域名的网页上。http工具在跳转到探测域名的网页之前,需要先向本地DNS发送包含所述探测域名的域名解析请求,以对探测域名进行解析。
步骤404,在所述本地DNS中的DNS出口服务器确定无法解析所述探测域名之后,向探测服务器发送包含所述探测域名的探测请求。
由于已经设置本地DNS无权解析该探测域名,所以本地DNS会继续向有解析权的探测服务器发送包含所述探测域名的探测请求,用以请求探测服务器解析该探测域名。为实现本地DNS无法解析该探测域名,本地DNS中不保存探测域名对应的ip地址,并设置探测域名解析结果的缓存时间为0,也就是说,本地DNS在接收到探测服务器发送的域名解析结果之后,不会缓存该域名解析结果,因为需要获取的域名解析结果没有缓存,所以负责每次域名解析的DNS出口服务器均会向探测服务器包含所述探测域名的探测请求。
在具体实施中,DNS出口服务器可能无法直接得知探测服务器的ip地址,而是通过迭代式地向各级权威域名服务器发送包含所述探测域名的域名解析请求,获取所述探测服务器的ip地址,再基于所述探测服务器的ip地址向所述探测服务器发送包含所述探测域名的探测请求。具体过程为:DNS出口服务器确定无法解析所述探测域名之后,向第一级权威域名服务器发送包含所述探测域名的域名解析请求,由于该权威域名服务器无权解析该探测域名,于是向DNS出口服务器返回下一级权威域名服务器的ip地址,DNS出口服务器再向下一级权威域名服务器发送包含所述探测域名的域名解析请求,如此迭代循环,直至获取到探测服务器的ip地址,最后向该探测服务器发送包含探测域名的域名解析请求,也即探测请求。由于探测服务器有权解析该探测域名,能够向DNS出口服务器返回解析结果,从而结束该迭代过程。其中,探测服务器可以看作是最后一级权威域名服务器。
步骤405,所述探测服务器基于所述探测请求获取所述DNS出口服务器的出口ip地址。
由于该探测请求为负责这次域名解析的DNS出口服务器发送的请求,所以可以通过对该探测请求的数据包进行解析,获取发送该探测请求的ip地址,即负责这次域名解析的DNS出口服务器的ip地址,从而完成一次探测。
在具体实施中,探测服务器可以在执行一次探测,也即获取到一次出口ip地址之后,即可返回给客户端,也可以执行至少两次探测之后,才返回给客户端。当规定探测服务器执行一次探测之后即可返回给客户端时,可以在基于包含探测域名的探测请求获取出口ip地址之后,结束探测。当规定探测服务器执行至少两次探测之后,才返回给客户端时,可以在基于包含探测域名的探测请求获取出口ip地址,即执行完一次探测之后,执行以下过程:所述探测服务器判断当前已执行的探测次数是否达到数量阈值;如果没达到,所述探测服务器基于当前接收到的域名构造随机域名,并向所述本地DNS发送所述随机域名,所述本地DNS中的DNS出口服务器向所述探测服务器发送包含所述随机域名的探测请求,所述探测服务器基于所述探测请求获取所述DNS出口服务器的出口ip地址,转上一步,直至当前已执行的探测次数达到数量阈值。从而实现通过构造随机域名,迭代式地向探测服务器发送探测请求,能够获取至少一个出口ip地址,从而利用获取到的出口ip地址更加准确地确定本地DNS的信息,提高运维故障排查的准确度。
上述数量阈值可以为固定的预设数值,也可以通过客户端进行设置。在数量阈值通过客户端进行设置的方式中,客户端向本地DNS发送的域名解析请求中包括探测次数参数,也即构造的探测域名中包括探测次数参数,该探测次数参数的数值即为数量阈值。例如,探测次数参数为2,说明需要执行两次探测。当探测服务器解析到探测请求中的探测域名中包括探测次数参数,并且探测次数参数大于1时,需要每执行完一次探测,即每次获取到出口ip地址之后,判断当前已执行的探测次数是否达到该探测次数参数所规定的数值。当所述探测域名中的探测次数参数为1时,可以不进行判断,并结束探测。
在实施中,在客户端输入的http域名中包括探测次数参数,所以在基于该http域名构造探测域名时,可以使探测域名中包括相应的探测次数参数。例如,包括探测次数参数的http域名为who.abc.com?num=2,其中num的值即为探测次数参数,也就是说本次探测需要执行两次探测。当基于http域名构造随机域名作为探测域名时,该探测域名可以包括UUID字段和探测次数字段,并且该探测次数字段等于http域名中的探测次数参数,该探测次数字段也可以称之为探测域名的探测次数参数。例如,探测域名为11110431eb84406988c2c3dd59462cc845c6achttp2.dns.abc.com,其中http2中的“2”即表示探测次数字段。
探测服务器每次基于探测请求获取出口ip地址之后,可以确定该探测请求对应的UUID,并将所述出口ip地址存入以所述UUID作为关键字(key)的关联容器中,其中,所述出口ip地址为所述关键字的值(value)。该关联容器可以为map容器。在探测服务器第一次基于包含探测域名的探测请求获取出口ip地址之后,如果该探测域名为随机域名,则可以直接根据该探测域名中的UUID字段确定对应的UUID;如果该探测域名不是随机域名,则可以根据该探测域名对应的客户端标识确定对应的UUID。
当探测服务器需要获取多个出口ip地址,而基于探测域名构造随机域名时,并且该探测域名不是随机域名时,可以基于当前域名,即探测域名增加UUID字段和探测次数字段,得到随机域名。探测服务器在基于随机域名构造新的随机域名时,可以基于当前随机域名改变探测次数字段,得到新的随机域名,例如,将上一个随机域名中的http1字段替换为http2,从而得到新的随机域名。可见,在同一迭代循环中构造的每个随机域名的UUID字段均相同,所以可以将在同一迭代循环中获取到的全部出口ip地址,均保存到当前UUID作为关键字的关联容器中。
由于UUID需要调用外部接口生成,若要用时再调用会耗时较长,为降低耗时,可以预先一次性大批量生成UUID并存储于内存中,用的时候直接从内存调取即可,从而提高出口ip地址探测效率。
探测服务器在迭代式地构造随机域名时,可以通过递增或递减的方式改变随机域名中的探测次数字段,从而可以根据随机域名中的探测次数字段判断当前已执行的探测次数是否达到数量阈值。例如,当通过递增方式改变随机域名中的探测次数字段时,设置基于探测域名构造的首个随机域名探测次数字段为1,数量阈值为3,当探测服务器基于当前探测请求获取出口ip地址之后,并且判断出当前探测请求中随机域名的探测次数字段为2时,说明当前已执行的探测次数已经达到数量阈值。再例如,当通过递减方式改变随机域名中的探测次数字段时,设置基于探测域名构造的首个随机域名探测次数字段为3,数量阈值为3,当探测服务器基于当前探测请求获取出口ip地址之后,并且判断出当前探测请求中随机域名的探测次数字段为2时,说明当前已执行的探测次数已经达到数量阈值。
在一种实施方式中,当探测域名为随机域名时,并且探测域名中的探测次数字段等于http域名中的探测次数字段,即等于数量阈值时,可以通过递减方式改变迭代过程中随机域名中的探测次数字段,从而根据当前探测请求中随机域名的探测次数字段,判断当前已执行的探测次数是否已经达到数量阈值。
进一步的,探测服务器每次获得出口ip地址之后,可以将出口ip地址存入内存的关联容器中。
由于探测服务器同时支持域名查询探测方式以及http探测方式,并且两种探测方式的探测结果返回方式不同,所以在返回探测结果之前,需要判断当前的探测方式。在判断当前的探测方式时,可以根据最后一次接收到的域名进行判断,如果该域名为http探测域名或者为其随机域名,说明当前的探测方式为http探测方式,否则为域名查询探测方式。当探测方式为http探测方式时,执行以下步骤。
本地DNS可以利用udp(user datagram protocol,用户数据报协议)向探测服务器发送探测请求。并且探测服务器可以采用线程池加消息队列组技术处理本地DNS发送的探测请求。线程池中可以包括监听线程、接收线程、处理线程以及日志线程,并且各个线程分别独立进行,互不干扰。其中,接收线程和处理线程通过消息队列进行通讯,日志线程独占消息队列,从而实现高并发接收、无阻塞处理并快速返回探测结果。
在实施中,可以根据接收探测请求和处理探测请求的耗时情况合理分配两种线程的数量,使得高并发情况下能达到如下最佳平衡:尽可能多得接入探测请求,使得消息队列处于近似满的状态,但又不会因消息队列满而导致接收线程阻塞;尽可能快得处理,不让消息队列存满。例如,当接收探测请求和处理探测请求的时间之比接近1:2时,可以设置接收线程和处理线程的比值为1:2。当前采用的负载均衡策略方案如下:接收线程非阻塞接收请求,并且阻塞插入消息队列。假设接收探测请求和处理探测请求的速度比为n,其中n为正整数,则一个接收线程绑定n个消息队列,均衡地插入探测请求;每个消息队列对应一个处理线程,非阻塞读取消息。用于执行负载均衡策略方案的负载模块可以采用接口设计,从而方便后续进行扩展。
如图3所示,所述探测服务器利用接收线程接收所述探测请求,并将所述探测请求存入消息队列中,其中,所述接收线程与所述消息队列的比值为1:n,其中n为正整数,每个所述消息队列对应一个处理线程,所述处理线程用于从对应的消息队列中获取所述探测请求,并对所述探测请求进行后续的处理。在探测服务器中,接收线程接收到的探测请求为数据包的形式,所以需要对该数据包进行解析,得到有用的中间消息,例如待解析的域名,出口ip地址等,然后将得到的中间消息存入消息队列中,处理线程再从消息队列中读取中间信息进行处理,例如将出口ip地址存入内存,或者构造随机域名等等。
步骤406,所述探测服务器向所述本地DNS发送所述探测服务器的ip地址。
步骤407,所述本地DNS接收到所述ip地址之后,向所述客户端发送所述ip地址。
步骤408,所述客户端基于所述ip地址向所述探测服务器发送包含所述探测域名的第一访问请求。
步骤409,所述探测服务器基于所述第一访问请求,向所述客户端发送包含所述出口ip地址的探测结果。
由于本实施例通过http工具进行探测,所以不能使探测服务器直接将出口ip地址返回给客户端,否则http工具会继续访问该出口ip地址,也就无法在客户端的网页上展示出口ip地址,即探测结果。所以,需要探测服务器将自己的ip地址返回给客户端,客户端再访问探测服务器,探测服务器将出口ip地址以网页内容的形式返回给客户端。
探测服务器每次获取出口ip地址之后,可以将出口ip地址存入内存的相应关联容器中,该关联容器的关键字为探测域名对应的UUID。在已执行的探测次数满足预设要求之后,探测服务器可以将该关联容器中全部的出口ip地址存入redis数据库。探测服务器接收到包含所述探测域名的访问请求之后,从所述redis数据库中获取本次迭代循环中探测到的全部出口ip地址,并向所述客户端发送包含所述出口ip地址的探测结果。出口ip地址及其对应的UUID可以存入redis数据库的关联容器中,UUID作为该关联容器的关键字,出口ip地址作为该关键字的值。在从redis数据库中获取出口ip地址时,先确定探测域名对应的UUID,然后在redis数据库中查找关键字为该UUID的关联容器,该关联容器中的值即为待获取的出口ip地址。当探测域名为随机域名时,可以根据其包含的UUID字段确定其对应的UUID;当探测域名不是随机域名时,可以根据第一访问请求中的客户端标识确定对应的UUID。由于获取到的出口ip地址需存放在数据库中,如果每获取一个出口ip地址,就立即存入数据库,这样比较耗时,所以本实施例将每次获取到的出口ip地址先预存在内存中,待探测结束后,再将全部的出口ip地址插入数据库,从而节约探测时间。
本发明实施例的探测服务器灵活支持多种返回数据,如出口ip地址、出口ip地址及归属、客户端ip地址、客户端ip地址及归属,以及上述各种组合。为支持多种返回数据,客户端发送的第二访问请求所包含的请求参数还可以包括归属信息参数或者数据格式参数。归属信息参数用于规定返回给客户端的探测结果是否要包括DNS出口服务器的归属信息或者客户端的归属信息,其中,归属信息包括运营商信息和地理位置。数据格式参数用于规定返回给客户端的探测结果的数据格式,包括json格式和非json格式,例如,探测结果的json格式为﹛〝dns〞:[〝36.251.248.175〞],〝cli〞:〝36.251.248.186〞,〝proxy〞:〝〞﹜。又例如,探测结果的非json格式,即普通格式为“dns:36.251.248.175cli:36.251.248.186proxy:”。第二访问请求中所包括的请求参数,可以根据预设格式写入的http域名中,构成http域名的部分字段,也就是说,http域名包括这些请求参数,该请求参数可以包括探测次数参数、归属信息参数或数据格式参数中的一种或多种。当基于包含请求参数的http域名构造探测域名时,构造的探测域名中也包括相应的请求参数。本发明实施例不对http域名以及探测域名中各个请求参数所采用的格式进行具体限定。
在接收到客户端发送的包含探测域名的第二访问请求之后,探测服务器对接收到的探测域名进行结构分析,当所述探测域名包括归属信息参数时,所述探测服务器基于该归属信息参数获取相应的归属信息,并向客户端同时发送包括出口ip地址和归属信息的探测结果。当所述探测域名包括数据格式参数时,所述探测服务器基于该数据格式参数所指示的格式构造所述探测结果,并向客户端发送该格式的探测结果。用户在设置http域名的请求参数时,可以根据需要选择所包含的请求参数类型,以及具体的参数值,用户按需选择,从而满足不同场景的需求,使探测项目功能更加多样化。
客户端可以利用tcp(transmission control protocol,传输控制协议)向探测服务器发送访问请求,该访问请求包括第一访问请求以及第二访问请求。探测服务器接收到访问请求之后,可以利用Nginx系统的多进程模型处理所述访问请求,其中,Nginx(enginex)是一个高性能的htttp和反向代理服务,也是一个IMAP/POP3/SMTP服务。Nginx系统采用多进程模型,即采用单管理进程加多工作进程的模型,由管理进程处理外部信号、配置文件的读取以及工作进程的初始化,工作进程采用单线程、非阻塞的事件模型(event loop,事件循环)来实现端口的监听及客户端请求的处理和响应,从而能够应对高并发的访问,并能够避免通常采用Apache(阿帕奇)系统处理访问请求所导致的问题,例如,当大量访问请求过来时,Apache系统需要创建大量的线程或者进程来满足需求,cpu忙于进程间或者线程间的调度,做有用功的机会就变少,这会导致流进的请求数量和流出的处理数量越来越不匹配,Apche又会创建更多的进程或者线程,结果往往容易形成恶性循环,直到无法响应客户端新的请求,并且Apache处理高并发请求时,需要开辟较多的进程或线程,会直接导致内存浪费问题或者内存共享问题。在具体实施中,可以采用基于Nginx与Lua的高性能平台,即OpenResty,使得访问请求直接跑在Nginx服务内部,充分利用Nginx的非阻塞I/O模型,不仅仅能够对http客户端的访问请求进行高性能响应,也能够对远程后端诸如MySQL、PostgreSQL、Memcached以及redis等都进行一致的高性能响应。
如图5所示,由于探测服务器接收到的访问请求量较小,从资源合理利用的角度出发,可以只为访问请求的业务分配一个监听线程、一个消息队列、一个处理线程。由程序主线程充当监听线程,进行监听、接收连接、监测请求、接收请求、插入消息队列等操作,由处理线程进行业务处理及回复。该处理线程进行的业务处理包括基于http域名构造探测域名,从redis数据库中获取出口ip地址,对http域名或者探测域名进行结构分析等等。
在本发明实施例中,用户在客户端只需用特定命令执行预设的域名,即可得到DNS出口服务器ip地址,操作方便快捷,能够降低与用户的沟通成本,提高出口ip地址的探测效率,并且通过在该预设的域名中设置不同的请求参数,可以得到不同类型的探测结果,例如出口ip地址、出口ip地址及归属、客户端ip地址、客户端ip地址及归属等等,从而使用户可以按需选择,满足不同场景的需求,使探测项目功能更加多样化,而且通过采用http探测方式,用户可以很方便地在浏览器中输入相应的域名,访问该域名后即可返回包括探测结果的页面,即使用户不太熟悉命令工具,也能够轻松地查询得到出口ip地址,专业性要求较低,所适用的用户范围更广,操作也更加方便快捷。
基于与上述方法实施例相同的发明构思,本发明实施例还提供的一种DNS出口服务器ip地址的探测系统,该系统可以包括客户端、本地DNS以及探测服务器;
其中,所述客户端,用于向所述本地DNS发送包括探测域名的域名解析请求;
所述本地DNS用于,在所述本地DNS中的DNS出口服务器确定无法解析所述探测域名之后,向探测服务器发送包含所述探测域名的探测请求;
所述探测服务器,用于基于所述探测请求获取所述DNS出口服务器的出口ip地址,以及向所述本地DNS发送包括所述出口ip地址的探测结果;
所述本地DNS,还用于在接收到所述探测结果之后,向所述客户端发送所述探测结果。
可选的,所述客户端,具体用于:
利用域名查询工具向所述本地DNS发送包括所述域名查询探测域名的域名解析请求,其中,所述域名查询工具包括dig命令或者nslookup命令。
可选的,所述本地DNS,用于:
在无法解析所述探测域名之后,通过迭代式地向各级权威域名服务器发送包含所述探测域名的域名解析请求,获取所述探测服务器的ip地址;
基于所述探测服务器的ip地址向所述探测服务器发送包含所述探测域名的探测请求。
可选的,所述探测服务器,用于:
判断当前已执行的探测次数是否达到数量阈值;
如果没达到,基于当前接收到的域名构造随机域名,向所述本地DNS发送所述随机域名,以及接收到所述本地DNS中的DNS出口服务器发送的包含所述随机域名的探测请求,并基于所述探测请求获取所述DNS出口服务器的出口ip地址,转上一步,直至当前已执行的探测次数达到所述数量阈值。
可选的,所述探测域名还包括探测次数参数;
所述探测服务器,用于当所述探测域名中的探测次数参数大于1时,判断当前已执行的探测次数是否达到所述数量阈值,其中,所述数量阈值等于所述探测次数参数。
可选的,所述探测服务,用于:
确定所述探测请求对应的UUID;
将所述出口ip地址存入以所述UUID作为关键字的关联容器中,其中,所述出口ip地址为所述关键字的值。
可选的,所述探测服务器,用于:
如果当前接收到的域名不是随机域名,则基于当前域名增加所述UUID字段和探测次数字段,得到随机域名;
如果当前接收到的域名是随机域名,则基于当前随机域名改变探测次数字段,得到新的随机域名。
可选的,所述探测服务器,用于基于最后一次接收到域名对应的UUID从相应的关联容器中获取所述出口ip地址。
可选的,所述探测域名还包括归属信息参数;
相应的,所述探测服务器,用于:
基于所述归属信息参数获取所述DNS出口服务器的归属信息;
向所述本地DNS发送包括所述出口ip地址和所述归属信息的探测结果。
可选的,所述探测服务器,用于:
利用接收线程接收所述探测请求,并将所述探测请求存入消息队列中,其中,所述接收线程与所述消息队列的比值为1:n,其中n为正整数,每个所述消息队列对应一个处理线程,所述处理线程用于从对应的消息队列中获取所述探测请求,并对所述探测请求进行后续的处理。
在本发明实施例中,用户在客户端只需用特定命令执行预设的域名,即可得到DNS出口服务器ip地址,操作方便快捷,能够降低与用户的沟通成本,提高出口ip地址的探测效率,并且通过在该预设的域名中设置不同的请求参数,可以得到不同类型的探测结果,如出口ip地址、出口ip地址及归属、客户端ip地址、客户端ip地址及归属等等,从而使用户可以按需选择,满足不同场景的需求,使探测项目功能更加多样化;另外本发明实施例支持多种探测方式,例如域名查询探测方式或者http探测方式,用户可以根据自己的需求选择相应的探测方式,更加方便用户使用,http探测方式中用户可以很方便地在浏览器中输入相应的域名,访问该域名后即可返回包括探测结果的页面,即使用户不太熟悉域名查询工具,也能够轻松地查询得到出口ip地址,操作更加方便快捷。
需要说明的是:上述实施例提供的DNS出口服务器ip地址的探测系统与图2所示的DNS出口服务器ip地址的探测方法的实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。
上述实施例提供的DNS出口服务器ip地址的探测系统还用于实现上述图4所示的DNS出口服务器ip地址的探测方法,其具体实现过程详见方法实施例,这里不再赘述。
本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

Claims (18)

1.一种DNS出口服务器ip地址的探测方法,其特征在于,所述方法包括::
客户端向本地DNS发送包括探测域名的域名解析请求;
在所述本地DNS中的DNS出口服务器确定无法解析所述探测域名之后,向探测服务器发送包含所述探测域名的探测请求;
所述探测服务器基于所述探测请求获取所述DNS出口服务器的出口ip地址;
所述探测服务器向所述本地DNS发送包括所述出口ip地址的探测结果;
所述本地DNS接收到所述探测结果之后,向所述客户端发送所述探测结果。
2.根据权利要求1所述的方法,其特征在于,客户端向本地DNS发送包括探测域名的域名解析请求的步骤,包括:
所述客户端利用域名查询工具向所述本地DNS发送包括所述域名查询探测域名的域名解析请求,其中,所述域名查询工具包括dig命令或者nslookup命令。
3.根据权利要求1所述的方法,其特征在于,在所述本地DNS中的DNS出口服务器确定无法解析所述探测域名之后,向探测服务器发送包含所述探测域名的探测请求的步骤,包括:
在所述本地DNS中的DNS出口服务器确定无法解析所述探测域名之后,通过迭代式地向各级权威域名服务器发送包含所述探测域名的域名解析请求,获取所述探测服务器的ip地址;
所述DNS出口服务器基于所述探测服务器的ip地址向所述探测服务器发送包含所述探测域名的探测请求。
4.根据权利要求1所述的方法,其特征在于,所述探测服务器基于所述探测请求获取所述DNS出口服务器的出口ip地址的步骤之后,还包括:
所述探测服务器判断当前已执行的探测次数是否达到数量阈值;
如果没达到,所述探测服务器基于当前接收到的域名构造随机域名,向所述本地DNS发送所述随机域名,所述本地DNS中的DNS出口服务器向所述探测服务器发送包含所述随机域名的探测请求,所述探测服务器基于所述探测请求获取所述DNS出口服务器的出口ip地址,转上一步,直至当前已执行的探测次数达到所述数量阈值。
5.根据权利要求4所述的方法,其特征在于,所述探测域名还包括探测次数参数;
判断当前已执行的探测次数是否达到数量阈值的步骤,包括:
如果所述探测域名中的探测次数参数大于1,则判断当前已执行的探测次数是否达到数量阈值,其中,所述数量阈值等于所述探测次数参数。
6.根据权利要求1~5中任一项所述的方法,其特征在于,所述探测服务器基于所述探测请求获取所述DNS出口服务器的出口ip地址的步骤之后,还包括:
所述探测服务器确定所述探测请求对应的UUID;
所述探测服务器将所述出口ip地址存入以所述UUID作为关键字的关联容器中,其中,所述出口ip地址为所述关键字的值。
7.根据权利要求6所述的方法,其特征在于,所述探测服务器基于当前接收到的域名构造随机域名的步骤,包括:
如果当前接收到的域名不是随机域名,则基于当前域名增加所述UUID字段和探测次数字段,得到随机域名;
如果当前接收到的域名是随机域名,则基于当前随机域名改变探测次数字段,得到新的随机域名。
8.根据权利要求7所述的方法,其特征在于,所述探测服务器向所述本地DNS发送包括所述出口ip地址的探测结果的步骤之前,还包括:
所述探测服务器基于最后一次接收到域名对应的UUID从相应的关联容器中获取所述出口ip地址。
9.根据权利要求1所述的方法,其特征在于,所述探测域名还包括归属信息参数;
所述探测服务器向所述本地DNS发送包括所述出口ip地址的探测结果的步骤,包括:
所述探测服务器基于所述归属信息参数获取所述DNS出口服务器的归属信息;
所述探测服务器向所述本地DNS发送包括所述出口ip地址和所述归属信息的探测结果。
10.根据权利要求1所述的方法,其特征在于,所述本地DNS中的DNS出口服务器向探测服务器发送包含所述探测域名的探测请求的步骤之后,包括::
所述探测服务器利用接收线程接收所述探测请求,并将所述探测请求存入消息队列中,其中,所述接收线程与所述消息队列的比值为1:n,其中n为正整数,每个所述消息队列对应一个处理线程,所述处理线程用于从对应的消息队列中获取所述探测请求,并对所述探测请求进行后续的处理。
11.一种DNS出口服务器ip地址的探测系统,其特征在于,包括客户端、本地DNS以及探测服务器;
所述客户端,用于向所述本地DNS发送包括探测域名的域名解析请求;
所述本地DNS用于,在所述本地DNS中的DNS出口服务器确定无法解析所述探测域名之后,向探测服务器发送包含所述探测域名的探测请求;
所述探测服务器,用于基于所述探测请求获取所述DNS出口服务器的出口ip地址,以及向所述本地DNS发送包括所述出口ip地址的探测结果;
所述本地DNS,还用于在接收到所述探测结果之后,向所述客户端发送所述探测结果。
12.根据权利要求11所述的系统,其特征在于,所述客户端,具体用于:
利用域名查询工具向所述本地DNS发送包括所述域名查询探测域名的域名解析请求,其中,所述域名查询工具包括dig命令或者nslookup命令。
13.根据权利要求11所述的系统,其特征在于,所述探测服务器,用于:
判断当前已执行的探测次数是否达到数量阈值;
如果没达到,基于当前接收到的域名构造随机域名,向所述本地DNS发送所述随机域名,以及接收到所述本地DNS中的DNS出口服务器发送的包含所述随机域名的探测请求,并基于所述探测请求获取所述DNS出口服务器的出口ip地址,转上一步,直至当前已执行的探测次数达到所述数量阈值。
14.根据权利要求13所述的系统,其特征在于,所述探测域名还包括探测次数参数;
所述探测服务器,用于当所述探测域名中的探测次数参数大于1时,判断当前已执行的探测次数是否达到所述数量阈值,其中,所述数量阈值等于所述探测次数参数。
15.根据权利要求11~14中任一项所述的系统,其特征在于,所述探测服务,用于:
确定所述探测请求对应的UUID;
将所述出口ip地址存入以所述UUID作为关键字的关联容器中,其中,所述出口ip地址为所述关键字的值。
16.根据权利要求15所述的系统,其特征在于,所述探测服务器,用于:
如果当前接收到的域名不是随机域名,则基于当前域名增加所述UUID字段和探测次数字段,得到随机域名;
如果当前接收到的域名是随机域名,则基于当前随机域名改变探测次数字段,得到新的随机域名。
17.根据权利要求16所述的系统,其特征在于,所述探测服务器,用于:基于最后一次接收到域名对应的UUID从相应的关联容器中获取所述出口ip地址。
18.根据权利要求11所述的系统,其特征在于,所述探测服务器,用于:
利用接收线程接收所述探测请求,并将所述探测请求存入消息队列中,其中,所述接收线程与所述消息队列的比值为1:n,其中n为正整数,每个所述消息队列对应一个处理线程,所述处理线程用于从对应的消息队列中获取所述探测请求,并对所述探测请求进行后续的处理。
CN201811612922.2A 2018-12-27 2018-12-27 一种DNS出口服务器ip地址的探测方法及系统 Expired - Fee Related CN109379453B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201811612922.2A CN109379453B (zh) 2018-12-27 2018-12-27 一种DNS出口服务器ip地址的探测方法及系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201811612922.2A CN109379453B (zh) 2018-12-27 2018-12-27 一种DNS出口服务器ip地址的探测方法及系统

Publications (2)

Publication Number Publication Date
CN109379453A true CN109379453A (zh) 2019-02-22
CN109379453B CN109379453B (zh) 2021-11-23

Family

ID=65372331

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201811612922.2A Expired - Fee Related CN109379453B (zh) 2018-12-27 2018-12-27 一种DNS出口服务器ip地址的探测方法及系统

Country Status (1)

Country Link
CN (1) CN109379453B (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111885221A (zh) * 2020-07-31 2020-11-03 北京微步在线科技有限公司 互联网出口ip的获取方法、服务器及系统

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101483648A (zh) * 2009-02-20 2009-07-15 杭州华三通信技术有限公司 Dns缓存探测的方法、系统、装置和dns服务器
CN101540759A (zh) * 2008-03-20 2009-09-23 中国移动通信集团公司 业务服务器地址获取方法及通信系统
CN102148752A (zh) * 2010-12-22 2011-08-10 华为技术有限公司 基于内容分发网络的路由实现方法及相关设备、系统
US20160150004A1 (en) * 2014-11-20 2016-05-26 F-Secure Corporation Integrity Check of DNS Server Setting
CN107980217A (zh) * 2017-07-14 2018-05-01 深圳前海达闼云端智能科技有限公司 获取本地域名服务器地址的方法、装置和权威域名服务器

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101540759A (zh) * 2008-03-20 2009-09-23 中国移动通信集团公司 业务服务器地址获取方法及通信系统
CN101483648A (zh) * 2009-02-20 2009-07-15 杭州华三通信技术有限公司 Dns缓存探测的方法、系统、装置和dns服务器
CN102148752A (zh) * 2010-12-22 2011-08-10 华为技术有限公司 基于内容分发网络的路由实现方法及相关设备、系统
US20160150004A1 (en) * 2014-11-20 2016-05-26 F-Secure Corporation Integrity Check of DNS Server Setting
CN107980217A (zh) * 2017-07-14 2018-05-01 深圳前海达闼云端智能科技有限公司 获取本地域名服务器地址的方法、装置和权威域名服务器

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111885221A (zh) * 2020-07-31 2020-11-03 北京微步在线科技有限公司 互联网出口ip的获取方法、服务器及系统

Also Published As

Publication number Publication date
CN109379453B (zh) 2021-11-23

Similar Documents

Publication Publication Date Title
CN109347998A (zh) 一种DNS出口服务器ip地址的探测方法及系统
CN110149423B (zh) 域名处理方法、装置、可读存储介质及电子设备
CN102647482B (zh) 一种访问网站的方法和系统
US9608958B2 (en) Lightweight directory access protocol (LDAP) join search mechanism
US8335838B2 (en) Web page load time prediction and simulation
CN103902646B (zh) 一种分布式任务管理系统与方法
US7499983B2 (en) Web dispatch service
CN104917851B (zh) 信息处理方法及dns缓存服务器
CN103685590B (zh) 获取ip地址的方法及系统
CN101902505B (zh) 一种分布式dns查询日志的实时统计装置及方法
US20050080768A1 (en) Methods and apparatus for dynamic service discovery from Web services representation chain
US20140089460A1 (en) Unobtrusive methods and systems for collecting information transmitted over a network
CN104301444B (zh) 网络ip获取方法、装置、应用平台、客户端及系统
CN105871975A (zh) 选择回源服务器的方法及装置
EP1716508A1 (en) Method and system for recording search trails across one or more search engines in a communications network
EP1934897A1 (en) Improvements in and relating to service oriented architecture
CN1937534A (zh) 一种实现负载均衡的方法和一种负载均衡设备
US7917547B2 (en) Virtualizing objects within queries
CN110266661A (zh) 一种授权方法、装置及设备
CN105988922A (zh) 应用程序的测试方法、装置及服务器
CN201919010U (zh) 一种网站访问性能监测系统
CN107222575A (zh) 实现工控设备间opc通信的方法
CN109379453A (zh) 一种DNS出口服务器ip地址的探测方法及系统
CN110213365A (zh) 基于用户分区的用户访问请求处理方法及电子设备
CN108089972A (zh) 接口测试方法及装置

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20211123

CF01 Termination of patent right due to non-payment of annual fee