CN109379453B - 一种DNS出口服务器ip地址的探测方法及系统 - Google Patents
一种DNS出口服务器ip地址的探测方法及系统 Download PDFInfo
- Publication number
- CN109379453B CN109379453B CN201811612922.2A CN201811612922A CN109379453B CN 109379453 B CN109379453 B CN 109379453B CN 201811612922 A CN201811612922 A CN 201811612922A CN 109379453 B CN109379453 B CN 109379453B
- Authority
- CN
- China
- Prior art keywords
- detection
- domain name
- server
- dns
- address
- 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.)
- Expired - Fee Related
Links
- 238000000034 method Methods 0.000 title claims abstract description 70
- 238000001514 detection method Methods 0.000 claims abstract description 559
- 239000000523 sample Substances 0.000 claims description 172
- 238000012545 processing Methods 0.000 claims description 51
- 238000004458 analytical method Methods 0.000 claims description 10
- 238000004891 communication Methods 0.000 abstract description 7
- 230000002829 reductive effect Effects 0.000 abstract description 7
- 230000008569 process Effects 0.000 description 29
- 230000006870 function Effects 0.000 description 7
- 230000000903 blocking effect Effects 0.000 description 6
- 238000012544 monitoring process Methods 0.000 description 6
- 230000003247 decreasing effect Effects 0.000 description 5
- 238000012423 maintenance Methods 0.000 description 5
- 238000013024 troubleshooting Methods 0.000 description 4
- 238000010586 diagram Methods 0.000 description 3
- 238000012804 iterative process Methods 0.000 description 3
- 230000004044 response Effects 0.000 description 3
- 238000012916 structural analysis Methods 0.000 description 3
- 101100443249 Caenorhabditis elegans dig-1 gene Proteins 0.000 description 2
- 238000013459 approach Methods 0.000 description 2
- 230000008859 change Effects 0.000 description 2
- 238000013461 design Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 238000003780 insertion Methods 0.000 description 2
- 230000037431 insertion Effects 0.000 description 2
- 238000007726 management method Methods 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- 101001094649 Homo sapiens Popeye domain-containing protein 3 Proteins 0.000 description 1
- 101000608234 Homo sapiens Pyrin domain-containing protein 5 Proteins 0.000 description 1
- 101000578693 Homo sapiens Target of rapamycin complex subunit LST8 Proteins 0.000 description 1
- 102100027802 Target of rapamycin complex subunit LST8 Human genes 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 230000009191 jumping Effects 0.000 description 1
- 230000000670 limiting effect Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000036961 partial effect Effects 0.000 description 1
- 230000002441 reversible effect Effects 0.000 description 1
- 238000011895 specific detection Methods 0.000 description 1
- 239000002699 waste material Substances 0.000 description 1
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L61/00—Network arrangements, protocols or services for addressing or naming
- H04L61/45—Network directories; Name-to-address mapping
- H04L61/4505—Network directories; Name-to-address mapping using standardised directories; using standardised directory access protocols
- H04L61/4511—Network directories; Name-to-address mapping using standardised directories; using standardised directory access protocols using domain name system [DNS]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L61/00—Network arrangements, protocols or services for addressing or naming
- H04L61/09—Mapping addresses
- H04L61/10—Mapping addresses of different types
- H04L61/103—Mapping addresses of different types across network layers, e.g. resolution of network layer into physical layer addresses or address resolution protocol [ARP]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/50—Network services
- H04L67/60—Scheduling 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(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发送包括所述出口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出口服务器的出口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为正整数,每个所述消息队列对应一个处理线程,所述处理线程用于从对应的消息队列中获取所述探测请求,并对所述探测请求进行后续的处理。
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 CN109379453A (zh) | 2019-02-22 |
CN109379453B true 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) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111885221A (zh) * | 2020-07-31 | 2020-11-03 | 北京微步在线科技有限公司 | 互联网出口ip的获取方法、服务器及系统 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101540759A (zh) * | 2008-03-20 | 2009-09-23 | 中国移动通信集团公司 | 业务服务器地址获取方法及通信系统 |
CN102148752A (zh) * | 2010-12-22 | 2011-08-10 | 华为技术有限公司 | 基于内容分发网络的路由实现方法及相关设备、系统 |
CN107980217A (zh) * | 2017-07-14 | 2018-05-01 | 深圳前海达闼云端智能科技有限公司 | 获取本地域名服务器地址的方法、装置和权威域名服务器 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101483648B (zh) * | 2009-02-20 | 2012-07-11 | 杭州华三通信技术有限公司 | Dns缓存探测的方法、系统、装置和dns服务器 |
GB2532475B (en) * | 2014-11-20 | 2017-03-08 | F Secure Corp | Integrity check of DNS server setting |
-
2018
- 2018-12-27 CN CN201811612922.2A patent/CN109379453B/zh not_active Expired - Fee Related
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101540759A (zh) * | 2008-03-20 | 2009-09-23 | 中国移动通信集团公司 | 业务服务器地址获取方法及通信系统 |
CN102148752A (zh) * | 2010-12-22 | 2011-08-10 | 华为技术有限公司 | 基于内容分发网络的路由实现方法及相关设备、系统 |
CN107980217A (zh) * | 2017-07-14 | 2018-05-01 | 深圳前海达闼云端智能科技有限公司 | 获取本地域名服务器地址的方法、装置和权威域名服务器 |
Also Published As
Publication number | Publication date |
---|---|
CN109379453A (zh) | 2019-02-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109347998B (zh) | 一种DNS出口服务器ip地址的探测方法及系统 | |
CN102647482B (zh) | 一种访问网站的方法和系统 | |
US6847975B2 (en) | Proxy processing method | |
CN107613037B (zh) | 一种域名重定向方法和系统 | |
CN100433645C (zh) | 网络设备的管理方法及网络管理系统 | |
US11354152B2 (en) | Self-evolving microservices | |
CN108183975A (zh) | 一种域名解析的方法和系统 | |
CN113014681A (zh) | 多网卡服务器的网卡绑定方法、装置、电子设备及存储介质 | |
KR100901281B1 (ko) | 유비쿼터스 웹서비스 방법 | |
US11297131B2 (en) | Method and apparatus for multi-vendor GTM fabric | |
CN110995656A (zh) | 负载均衡方法、装置、设备及存储介质 | |
KR20110063328A (ko) | 물리적 인터페이스 질의 및 선택을 갖는 원격 프로지져 로출(rpc) 바인드 서비스 | |
CN109413224B (zh) | 报文转发方法和装置 | |
CN109379453B (zh) | 一种DNS出口服务器ip地址的探测方法及系统 | |
CN111556123A (zh) | 一种基于边缘计算的自适应网络快速配置及负载均衡系统 | |
CN112702441B (zh) | 基于容器的访问数据处理方法、装置、系统及存储介质 | |
CN113315852B (zh) | 一种域名解析的方法、装置及系统 | |
CN114422469B (zh) | IPv4/IPv6流量智能调度方法、装置和调度系统 | |
CN113596105B (zh) | 内容的获取方法、边缘节点及计算机可读存储介质 | |
US11336615B2 (en) | Global load balancing achieved by using distributed DNS reflection | |
CN114301872A (zh) | 基于域名的访问方法及装置、电子设备、存储介质 | |
CN109451047B (zh) | 监控告警系统的数据传送方法、装置、设备及存储介质 | |
CN113572863A (zh) | 基于动态路由协议的应用加速方法及系统 | |
CN108462743B (zh) | 用于传输模拟数据的系统、方法及数据服务器 | |
CN111865639B (zh) | 一种snmp服务设备信息收集方法、装置及电子设备 |
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 |