一种VPN客户端代理DNS的方法及装置与流程

文档序号:14351574阅读:893来源:国知局
一种VPN客户端代理DNS的方法及装置与流程

本申请涉及通信领域,尤其涉及一种vpn客户端代理dns的方法及装置。



背景技术:

在相关技术中,用户在使用vpn访问域名时,内网域名通常要求使用内网dns服务器进行解析,而公网域名通常要求使用公网dns服务器进行解析。而在实际应用中,由于内网dns服务器和公网dns服务器通可能存在优先级上的差异,因此可能会出现将内网域名的dns请求提交至公网dns服务器进行解析,从而造成内网域名无法解析,或者将内网域名解析成公网ip地址,而导致用户无法正确访问内网域名的问题。



技术实现要素:

本申请提供一种vpn客户端代理dns的方法,应用于vpn客户端,包括:

监听主机向内网dns服务器发送的针对内网域名的dns请求报文;

当监听到主机向内网dns服务器发送的dns请求报文时,将所述dns请求报文转发至所述内网dns服务器;以及,

在接收到所述内网dns服务器返回的针对所述dns请求报文的dns响应报文时,将所述dns响应报文返回至所述主机。

可选的,所述主机的物理网卡上的内网dns服务器的ip地址被预先配置为本机地址;

所述监听主机向内网dns服务器发送的针对内网域名的dns请求报文,包括:

监听主机的域名解析端口,通过与所述主机之间的第一socket接收所述主机向所述内网dns服务器发送的针对内网域名的dns请求报文。

可选的,所述方法还包括:

在监听到主机向内网dns服务器发送的dns请求报文时,从所述dns请求报文中提取源ip和源端口;

建立与所述主机之间的第一socket,与所述内网dns服务器之间的第二socket,以及所述源ip和源端口的映射关系。

可选的,所述将所述dns请求报文转发至所述内网dns服务器,包括:

基于所述第二socket将所述dns请求报文转发至所述内网dns服务器。

可选的,所述在接收到所述内网dns服务器返回的针对所述dns请求报文的dns响应报文时,将所述dns响应报文返回至所述主机,包括:

在基于所述第二socket接收到所述内网dns服务器返回的针对所述dns请求报文的dns响应报文时,从该dns响应报文中提取目的ip以及目的端口;

查询所述映射关系,基于与提取到的目的ip以及目的端口对应的第一socket将所述dns响应报文返回至所述主机。

可选的,所述方法还包括:

当将所述dns响应报文返回至所述主机后,

更新所述第二socket的句柄。

本申请还提供一种vpn客户端代理dns的装置,应用于vpn客户端,包括:

监听模块,用于监听主机向内网dns服务器发送的针对内网域名的dns请求报文;

转发模块,用于当监听到主机向内网dns服务器发送的dns请求报文时,将所述dns请求报文转发至所述内网dns服务器;以及,

返回模块,用于在接收到所述内网dns服务器返回的针对所述dns请求报文的dns响应报文时,将所述dns响应报文返回至所述主机。

可选的,所述主机的物理网卡上的内网dns服务器的ip地址被预先配置为本机地址;

所述监听模块进一步用于:

监听主机的域名解析端口,通过与所述主机之间的第一socket接收所述主机向所述内网dns服务器发送的针对内网域名的dns请求报文。

可选的,所述装置还包括:

映射建立模块,用于

在监听到主机向内网dns服务器发送的dns请求报文时,从所述dns请求报文中提取源ip和源端口;

建立与所述主机之间的第一socket,与所述内网dns服务器之间的第二socket,以及所述源ip和源端口的映射关系。

可选的,所述转发模块进一步用于:

基于所述第二socket将所述dns请求报文转发至所述内网dns服务器。

可选的,所述返回模块进一步用于:

在基于所述第二socket接收到所述内网dns服务器返回的针对所述dns请求报文的dns响应报文时,从该dns响应报文中提取目的ip以及目的端口;

查询所述映射关系,基于与提取到的目的ip以及目的端口对应的第一socket将所述dns响应报文返回至所述主机。

可选的,所述装置还包括:

句柄更新模块,用于

当将所述dns响应报文返回至所述主机后,

更新所述第二socket的句柄。

在本申请中,通过监听主机向内网dns服务器发送的针对内网域名的dns请求报文,当监听到主机向内网dns服务器发送的dns请求报文时,将所述dns请求报文转发至所述内网dns服务器,并且在接收到所述内网dns服务器返回的针对所述dns请求报文的dns响应报文时,所述vpn客户端可以将所述dns响应报文返回至所述主机。

本申请中,用户在使用vpn访问内网域名时,可以将vpn客户端作为代理,由vpn客户端将监听到的主机向内网dns服务器发送的dns请求报文,转发至所述内网dns服务器,以及将内网dns服务器返回的dns响应报文再正确返回至主机,可以避免由于公网dns优先级高于vpndns优先级,而将针对内网域名的dns请求报文发往公网dns服务器进行域名解析,而导致的内网域名错误解析造成的用户无法正确访问内网域名的问题。

附图说明

为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,对于本领域普通技术人员来讲,还可以根据这些附图获得其他的附图。

图1是本申请示出的一种vpn客户端代理dns方法的流程图;

图2是本申请示出的一种vpn客户端代理dns方法的交互示意图;

图3为本申请示出的一种vpn客户端向内网dns服务器转发dns请求报文的示意图;

图4是本申请示出的一种vpn客户端代理dns装置的逻辑框图;

图5是本申请示出的承载所述vpn客户端代理dns装置的一种网络设备硬件结构图。

具体实施方式

在相关技术中,用户在使用vpn访问内网域名时,由于内网dns服务器和公网dns服务器通常可能存在优先级上的差异,因此可能会出现将针对内网域名的dns请求报文,提交至公网dns服务器进行解析,而造成内网域名无法解析,或者将内网域名解析成公网ip地址,而导致用户无法正确访问内网域名的问题。

针对这种问题,目前在一些操作系统中,可以通过诸如修改注册表、修改网卡跃点数等手段修改主机的物理网卡的优先级,从而实现优先使用内网dns服务器对dns请求报文进行解析。

然而,通过修改物理网卡的优先级来解决上述问题,配置较复杂;而且,在实际应用中,会存在一些操作系统使用常规方法无法修改物理网卡的优先级的问题。

有鉴于此,本申请提出一种vpn客户端代理dns的方法,当对内网域名进行域名解析时,可以将vpn客户端作为代理,由vpn客户端将监听到的主机向内网dns服务器发送的dns请求报文,转发至所述内网dns服务器,以及将内网dns服务器返回的dns响应报文再正确返回至主机,可以避免由于公网dns优先级高于vpndns优先级,而将针对内网域名的dns请求报文发往公网dns服务器进行域名解析,而导致的内网域名错误解析造成的用户无法正确访问内网域名的问题。

下面通过具体实施例并结合具体的应用场景对本申请进行描述。

参见图1,图1是本申请示出的一种vpn客户端代理dns方法的流程图,应用于vpn客户端,执行以下步骤:

s101,监听主机向内网dns服务器发送的针对内网域名的dns请求报文;

s102,当监听到主机向内网dns服务器发送的dns请求报文时,将所述dns请求报文转发至所述内网dns服务器;以及,

s103,在接收到所述内网dns服务器返回的针对所述dns请求报文的dns响应报文时,将所述dns响应报文返回至所述主机。

上述vpn客户端包括面向用户提供vpn接入服务的客户端软件;例如,web客户端或者app应用等。

在本申请中,用户在使用vpn访问内网域名时,可以将vpn客户端作为代理,由vpn客户端来监听主机发出的dns请求报文,并将监听到的dns请求报文,转发至所述内网dns服务器,以及将内网dns服务器返回的dns响应报文再正确返回至主机。参见图2,图2是本申请示出的一种vpn客户端代理dns方法的交互示意图。

在本例中,为了确保vpn客户端能够正常监听到主机发往内网dns服务器的dns请求报文,可以对主机的物理网卡预先进行配置。

一方面,可以将物理网卡上的内网dns服务器的ip配置为主机的本地地址。

例如,一种实现方式中,可以将物理网卡上的主用dns配置为127.0.0.1(回送地址,即本机地址),而将备用dns配置为127.0.0.2,或者也可以将物理网卡上的原来的内网dns服务器的ip地址配置为备用dns。

其中,以上示出的配置过程,具体可以由管理员手动完成,也可以由vpn客户端来触发完成,在本申请中不进行特别限定;例如,在一种实现方式中,当vpn客户端启动后,可以立即对物理网卡上的主用dns进行重新配置。

另一方面,vpn客户端与主机的物理网卡之间,还可以预先创建一个用于承载vpn客户端和物理网卡之间的通信的第一socket;相应的,vpn客户端与内网dns服务器之间,也可以预先创建一个用于承载vpn客户端和物理网卡之间的通信的第二socket。

其中,socket的创建过程,在本申请中不再进行详述,本领域技术人员在将本申请的技术方案付诸实现时,可以参考相关技术中的记载。

在本例中,当完成以上配置后,此时vpn客户端可以通过监听主机的域名解析端口,通过建立的上述第一socket,来接收监听到的主机发往内网dns服务器的dns请求报文。

例如,在实际应用中,主机上与域名解析对应的端口通常为53端口,因此vpn客户端可以通过监听主机的53端口,来监听主机发往内网dns服务器的dns请求报文。

请继续参见图2,当vpn客户端监听到主机发往内网dns服务器的dns请求报文时,此时可以从该dns请求报文中,提取上述dns请求报文中的源ip和源端口。

当从监听到的dns请求报文中提取出源ip和源端口后,可以建立上述第一socket、上述第二socket,和提取出的源ip和源端口之间的映射关系,并以映射表的形式保存上述映射关系,以备后续的查询。

当vpn客户端将上述映射关系在本地保存后,可以通过本地的路由转发设备,将监听到的上述dns请求转发至内网dns服务器。

请参见图3,图3为本申请示出的一种vpn客户端向内网dns服务器转发dns请求报文的示意图。

如图3所示,vpn客户端可以预先配置虚拟网卡;其中,在vpn客户端上配置虚拟网卡的具体过程,在本申请中不进行详述,本领域技术人员在将本申请的技术方案付诸实现时,可以参考相关技术中的记载。

当vpn客户端监听到主机发往内网dns服务器的dns请求报文,并基于提取出的上述报文属性信息在本地保存了上述映射关系后,可以通过该虚拟网卡转发该dns请求报文,将该dns请求报文引流到本地的路由转发设备,然后由本地的路由转发设备再将该dns请求报文进一步转发至内网dns服务器。

可见,通过将vpn客户端作为代理,可以将主机发往内网dns服务器的dns请求报文,正确引流至内网dns服务器进行域名解析,从而可以避免由于公网dns服务器的解析优先级更高,而将该dns请求报文转发至公网dns服务器进行解析,导致的域名解析错误的问题。

请继续参见图2,当内网dns服务器收到vpn客户端转发的dns请求报文后,可以对该dns请求报文中的内网域名进行域名解析,然后将解析出的与该内网域名对应的ip地址,携带在dns响应报文中返回给vpn客户端。

而对于vpn客户端而言,仍然可以通过上述第二socket与内网dns服务器保持通信,接收内网dns服务器返回的与上述dns请求报文对应的dns响应报文;

例如,请继续参见图3,内网dns服务器可以将与上述dns请求报文对应的dns响应报文转发至本地的路由转发设备,然后本地的路由转发设备再将该dns响应报文引流至vpn客户端配置的虚拟网卡,通过虚拟网卡将该dns响应报文返回给dns客户端。

当vpn客户端通过上述第二socket收到内网dns服务器返回的dns响应报文时,vpn客户端可以从该dns响应报文中提取目的ip以及目的端口,然后基于提取到的目的ip以及目的端口,来查询上述映射表,来确定与该目的ip以及目的端口对应的socket。

由于此前在映射表中,已经保存了上述dns请求报文中的源ip和源端口,与上述第一socket的映射关系,因此vpn客户端通过上述查询,可以准确定位到vpn客户端与主机之间的上述第一socket,从而可以基于该第一socket将该dns响应报文正确的返回给上述主机,

通过这种方式,可以确保vpn客户端不仅能够将主机发往内网dns服务器的dns请求报文转发至内网dns服务器,也可以将内网dns服务器返回的与该dns请求报文对应的dns响应报文,正确返回给该主机。

在本例中,当vpn客户端将上述dns响应报文成功返回至上述主机后,此时一次完整的内网域名的域名解析过程完成,主机可以获取该dns响应报文中携带的与待解析的内网域名对应的ip地址,然后基于该ip地址来访问与上述内网域名对应的网络站点上的资源。

进一步的,为了提升vpn客户端与内网dns服务器之间的通信安全,当vpn客户端将dns响应报文成功返回至主机后,还可以对vpn客户端与主机之间的第二socket的句柄进行更新。其中,socket的句柄是指socket的描述符,可以用于唯一标识socket;比如,通常可以是一串一定字节长度的整数值。

通过这种方式,可以避免由于第二socket的句柄泄露,使得内网dns服务器的系统面临安全性风险。

通过以上实施例可知,在本申请中,用户在使用vpn访问内网域名时,通过将vpn客户端作为代理,由vpn客户端将监听到的主机向内网dns服务器发送的dns请求报文,转发至所述内网dns服务器,再将内网dns服务器返回的dns响应报文再正确返回至主机。

一方面,可以避免由于公网dns优先级高于vpndns优先级,而将针对内网域名的dns请求报文发往公网dns服务器进行域名解析,而导致的内网域名错误解析造成的用户无法正确访问内网域名的问题。

另一方面,由于可以不再需要通过修改主机的物理网卡的优先级,来保证优先使用内网dns服务器对dns请求报文进行解析,因此可以降低配置的复杂度,而且也能够兼容一些使用常规方法无法修改物理网卡的优先级的操作系统,使得这些操作系统也能够实现相同功能。

与上述方法实施例相对应,本申请还提供了装置的实施例。

请参见图4,图4是本申请示出的一种vpn客户端代理dns的装置40,应用于vpn客户端;其中,请参考图5,作为承载所述vpn客户端代理dns装置40的一种网络设备所涉及的硬件架构中,通常包括cpu、内存、非易失性存储器以及内部总线等;以软件实现为例,所述vpn客户端代理dns装置40通常可以理解为加载在内存中的计算机程序,通过cpu运行之后形成的软硬件相结合的逻辑装置,所述vpn客户端代理dns装置40,应用于vpn客户端,所述装置包括:

一种vpn客户端代理dns的装置,应用于vpn客户端,包括:

监听模块401,用于监听主机向内网dns服务器发送的针对内网域名的dns请求报文;

转发模块402,用于当监听到主机向内网dns服务器发送的dns请求报文时,将所述dns请求报文转发至所述内网dns服务器;以及,

返回模块403,用于在接收到所述内网dns服务器返回的针对所述dns请求报文的dns响应报文时,将所述dns响应报文返回至所述主机。

可选的,所述主机的物理网卡上的内网dns服务器的ip地址被预先配置为本机地址;

所述监听模块进一步用于:

监听主机的域名解析端口,通过与所述主机之间的第一socket接收所述主机向所述内网dns服务器发送的针对内网域名的dns请求报文。

可选的,所述装置还包括:

映射建立模块404,用于

在监听到主机向内网dns服务器发送的dns请求报文时,从所述dns请求报文中提取源ip和源端口;

建立与所述主机之间的第一socket,与所述内网dns服务器之间的第二socket,以及所述源ip和源端口的映射关系。

可选的,所述转发模块进一步用于:

基于所述第二socket将所述dns请求报文转发至所述内网dns服务器。

可选的,所述返回模块进一步用于:

在基于所述第二socket接收到所述内网dns服务器返回的针对所述dns请求报文的dns响应报文时,从该dns响应报文中提取目的ip以及目的端口;

查询所述映射关系,基于与提取到的目的ip以及目的端口对应的第一socket将所述dns响应报文返回至所述主机。

可选的,所述装置还包括:

句柄更新模块405,用于

当将所述dns响应报文返回至所述主机后,

更新所述第二socket的句柄。

对于装置实施例而言,由于其基本对应于方法实施例,所以相关之处参见方法实施例的部分说明即可。以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本申请方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。

以上所述仅为本申请的较佳实施例而已,并不用以限制本申请,凡在本申请的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本申请保护的范围之内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1