本发明属于linux内核和dns解析技术领域,具体涉及一种基于linux内核解析dns实现使用域名访问路由器的方法。
背景技术:
在路由器的出厂时,路由器会默认配置本地ip地址。在路由器部署过程中,路由器要通过wan口上联智能网关或其他路由器等上联设备,上联设备会给路由器分配本地ip地址,这个新分配的ip地址一般情况下和默认配置的ip地址是不同的,并且在同一个路由器设备上,上联设备分配的ip地址也会动态变化。
路由器一般都会提供web配置或其他方式配置路由器的参数,这需要直接访问路由器设备。一般的访问方法是通过ip地址来访问路由器,但如果路由器的ip地址是由上联设备动态分配的,那么就不能使用出厂配置的ip地址来访问路由器。这就会造成路由器设备ip动态变化时终端设备无法得知路由器ip地址的情况下访问路由器。
因此,现阶段需设计一种基于linux内核解析dns实现使用域名访问路由器的方法,来解决以上问题。
技术实现要素:
本发明目的在于提供一种基于linux内核解析dns实现使用域名访问路由器的方法,用于解决上述现有技术中存在的技术问题,如:路由器一般都会提供web配置或其他方式配置路由器的参数,这需要直接访问路由器设备。一般的访问方法是通过ip地址来访问路由器,但如果路由器的ip地址是由上联设备动态分配的,那么就不能使用出厂配置的ip地址来访问路由器。这就会造成路由器设备ip动态变化时终端设备无法得知路由器ip地址的情况下访问路由器。
为实现上述目的,本发明的技术方案是:
一种基于linux内核解析dns实现使用域名访问路由器的方法,包括以下步骤:
s1:提供一待访问路由器,一终端设备,以及所述终端设备与所述待访问路由器之间的访问链路;
其中,所述访问链路是指:所述终端设备通过域名方式连接到所述待访问路由器;
s2:所述终端设备通过域名访问所述待访问路由器,所述待访问路由器判断接收到的报文是否为域名解析请求报文,若是,则进入步骤s3,若不是,则丢弃此报文;
s3:判断所述待访问路由器的域名地址是否设置有本地域名,若是,则进入步骤s4,若不是,则丢弃此报文;
s4:分析所述域名解析请求报文中的域名,判断所述域名解析请求报文中的域名与所述待访问路由器中的本地域名是否相同,若是,则进入步骤s5,若不是,则丢弃此报文;
s5:分析域名解析请求,若是ipv4请求,则获取所述待访问路由器的ipv4地址,并将所述ipv4地址组织域名解析应答报文发送回所述终端设备;
若是ipv6请求,则获取所述待访问路由器的ipv6地址,并将所述ipv6地址组织域名解析应答报文发送回所述终端设备。
进一步的,所述步骤s2中,所述待访问路由器判断接收到的报文是否为域名解析请求报文的具体过程如下:
实时接收报文;
将所述报文按照域名解析请求报文的常用判断方式进行第一次判断;
若第一次判断结果为:所述报文是域名解析请求报文;
则以所述第一次判断结果作为所述待访问路由器的实际判断结果;
若第一次判断结果为:所述报文不是域名解析请求报文;
则暂时保留所述第一次判断结果;
将所述报文按照域名解析请求报文的备用判断方式进行第二次判断;
若第二次判断结果为:所述报文是域名解析请求报文;
则以所述第二次判断结果作为所述待访问路由器的实际判断结果,丢弃暂时保留的所述第一次判断结果;
若第二次判断结果为:所述报文不是域名解析请求报文;
则以所述第一次判断结果作为所述待访问路由器的实际判断结果,并直接丢弃所述第二次判断结果。
进一步的,步骤s3中,判断所述待访问路由器的域名地址是否设置有本地域名具体如下:
获取所述待访问路由器的域名地址;
将所述域名地址按照本地域名的常用判断方式进行第一次本地域名判断;
若第一次域名判断结果为:域名地址设置有本地域名;
则以第一次域名判断结果作为所述待访问路由器的实际本地域名判断结果;
若第一次本地域名判断结果为:域名地址没有设置本地域名;
则暂时保留所述第一次本地域名判断结果;
将所述域名地址按照本地域名的备用判断方式进行第二次本地域名判断;
若第二次本地域名判断结果为:域名地址设置有本地域名;
则以第二次本地域名判断结果作为所述待访问路由器的实际本地域名判断结果,丢弃暂时保留的所述第二次本地域名判断结果;
若第二次本地域名判断结果为:域名地址没有设置本地域名;
则以所述第一次本地域名判断结果作为所述待访问路由器的实际本地域名判断结果,并直接丢弃所述第二次本地域名判断结果。
进一步的,步骤s4中,判断所述域名解析请求报文中的域名与所述待访问路由器中的本地域名是否相同具体如下:
所述域名解析请求报文中的域名与所述待访问路由器中的本地域名按照域名的常用判断方式进行第一次域名判断;
若第一次域名判断结果为:所述域名解析请求报文中的域名与所述待访问路由器中的本地域名相同;
则以所述第一次域名判断结果作为步骤s4中的实际域名判断结果;
若第一次域名判断结果为:所述域名解析请求报文中的域名与所述待访问路由器中的本地域名不同;
则暂时保留所述第一次域名判断结果;
所述域名解析请求报文中的域名与所述待访问路由器中的本地域名按照域名的备用判断方式进行第二次域名判断;
若第二次域名判断结果为:所述域名解析请求报文中的域名与所述待访问路由器中的本地域名相同;
则以所述第二次域名判断结果作为步骤s4中的实际域名判断结果,并丢弃暂时保留的所述第一次域名判断结果;
若第二次域名判断结果为:所述域名解析请求报文中的域名与所述待访问路由器中的本地域名不同;
则以所述第一次域名判断结果作为步骤s4中的实际域名判断结果,并直接丢弃所述第二次域名判断结果。
进一步的,所述终端设备包括pc、pda和智能手机中的一种或多种。
进一步的,其中所述终端设备通过域名方式连接到所述待访问路由器是指:通过所述终端设备的应用程序通过域名方式连接到所述待访问路由器,并且在所述终端设备和待访问路由器之间进行数据交互。
进一步的,所述终端设备的应用程序包括浏览器、telnet和ssh中的一种或多种。
与现有技术相比,本发明所具有的有益效果为:
本方案的一个创新点在于,通过在linux内核中劫持和分析dns请求报文,不需要域名服务器的支持,可以使终端设备通过域名直接访问路由器或网关等设备;通过linux内核解析终端设备发送的域名解析请求,如果解析请求中的域名为设备预置的域名,那么就直接将设备的ip地址返回给终端设备,终端设备可以通过域名解决返回的ip地址访问路由器。现在的方法完美的解决了路由器设备ip动态变化时终端设备无法得知路由器ip地址的情况下访问路由器的问题。
本方案的一个创新点在于,几个重要的判断步骤中,设计了相应的常用判断方式和备用判断方式,可有效降低因为内部常用判断程序出错,而引发偶然误差,避免目标报文被错误的丢弃,并且备用判断程序可经常进行调试,保证其准确性。
附图说明
图1是本发明具体实施方式的网络结构示意图。
图2是本发明具体实施方式的流程框图。
具体实施方式
下面结合本发明的附图1-2,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
实施例:
现有技术中,路由器一般都会提供web配置或其他方式配置路由器的参数,这需要直接访问路由器设备。一般的访问方法是通过ip地址来访问路由器,但如果路由器的ip地址是由上联设备动态分配的,那么就不能使用出厂配置的ip地址来访问路由器。这就会造成路由器设备ip动态变化时终端设备无法得知路由器ip地址的情况下访问路由器。
如图1和图2所示,因此提出一种基于linux内核解析dns实现使用域名访问路由器的方法,包括以下步骤:
s1:提供一待访问路由器,一终端设备,以及所述终端设备与所述待访问路由器之间的访问链路;
其中,所述访问链路是指:所述终端设备通过域名方式连接到所述待访问路由器;
所述待访问路由器包括但不限于路由器设备以及网关设备;所述访问链路包括但不限于lan接口以及wifi;所述终端设备是指任何可以通过lan接口或wifi接口访问路由器的终端设备;
s2:所述终端设备通过域名访问所述待访问路由器,所述待访问路由器判断接收到的报文是否为域名解析请求报文,若是,则进入步骤s3,若不是,则丢弃此报文;
s3:判断所述待访问路由器的域名地址是否设置有本地域名,若是,则进入步骤s4,若不是,则丢弃此报文;
s4:分析所述域名解析请求报文中的域名,判断所述域名解析请求报文中的域名与所述待访问路由器中的本地域名是否相同,若是,则进入步骤s5,若不是,则丢弃此报文;
s5:分析域名解析请求,若是ipv4请求,则获取所述待访问路由器的ipv4地址,并将所述ipv4地址组织域名解析应答报文发送回所述终端设备;
若是ipv6请求,则获取所述待访问路由器的ipv6地址,并将所述ipv6地址组织域名解析应答报文发送回所述终端设备。
通过上述方案,通过在linux内核中劫持和分析dns请求报文,不需要域名服务器的支持,可以使终端设备通过域名直接访问路由器或网关等设备;通过linux内核解析终端设备发送的域名解析请求,如果解析请求中的域名为设备预置的域名,那么就直接将设备的ip地址返回给终端设备,终端设备可以通过域名解决返回的ip地址访问路由器。现在的方法完美的解决了路由器设备ip动态变化时终端设备无法得知路由器ip地址的情况下访问路由器的问题。
进一步的,所述步骤s2中,所述待访问路由器判断接收到的报文是否为域名解析请求报文的具体过程如下:
实时接收报文;
将所述报文按照域名解析请求报文的常用判断方式进行第一次判断;
若第一次判断结果为:所述报文是域名解析请求报文;
则以所述第一次判断结果作为所述待访问路由器的实际判断结果;
若第一次判断结果为:所述报文不是域名解析请求报文;
则暂时保留所述第一次判断结果;
将所述报文按照域名解析请求报文的备用判断方式进行第二次判断;
若第二次判断结果为:所述报文是域名解析请求报文;
则以所述第二次判断结果作为所述待访问路由器的实际判断结果,丢弃暂时保留的所述第一次判断结果;
若第二次判断结果为:所述报文不是域名解析请求报文;
则以所述第一次判断结果作为所述待访问路由器的实际判断结果,并直接丢弃所述第二次判断结果,避免第二次判断结果占用系统内存。
通过上述方案,待访问路由器判断接收到的报文是否为域名解析请求报文时,可有效降低因为内部常用判断程序出错,而引发偶然误差,避免目标报文被错误的丢弃,并且备用判断程序可经常进行调试,保证其准确性。
进一步的,步骤s3中,判断所述待访问路由器的域名地址是否设置有本地域名具体如下:
获取所述待访问路由器的域名地址;
将所述域名地址按照本地域名的常用判断方式进行第一次本地域名判断;
若第一次域名判断结果为:域名地址设置有本地域名;
则以第一次域名判断结果作为所述待访问路由器的实际本地域名判断结果;
若第一次本地域名判断结果为:域名地址没有设置本地域名;
则暂时保留所述第一次本地域名判断结果;
将所述域名地址按照本地域名的备用判断方式进行第二次本地域名判断;
若第二次本地域名判断结果为:域名地址设置有本地域名;
则以第二次本地域名判断结果作为所述待访问路由器的实际本地域名判断结果,丢弃暂时保留的所述第二次本地域名判断结果;
若第二次本地域名判断结果为:域名地址没有设置本地域名;
则以所述第一次本地域名判断结果作为所述待访问路由器的实际本地域名判断结果,并直接丢弃所述第二次本地域名判断结果,避免第二次本地域名判断结果占用系统内存。
通过上述方案,判断所述待访问路由器的域名地址是否设置有本地域名时,可有效降低因为内部常用判断程序出错,而引发偶然误差,避免目标报文被错误的丢弃,并且备用判断程序可经常进行调试,保证其准确性。
进一步的,步骤s4中,判断所述域名解析请求报文中的域名与所述待访问路由器中的本地域名是否相同具体如下:
所述域名解析请求报文中的域名与所述待访问路由器中的本地域名按照域名的常用判断方式进行第一次域名判断;
若第一次域名判断结果为:所述域名解析请求报文中的域名与所述待访问路由器中的本地域名相同;
则以所述第一次域名判断结果作为步骤s4中的实际域名判断结果;
若第一次域名判断结果为:所述域名解析请求报文中的域名与所述待访问路由器中的本地域名不同;
则暂时保留所述第一次域名判断结果;
所述域名解析请求报文中的域名与所述待访问路由器中的本地域名按照域名的备用判断方式进行第二次域名判断;
若第二次域名判断结果为:所述域名解析请求报文中的域名与所述待访问路由器中的本地域名相同;
则以所述第二次域名判断结果作为步骤s4中的实际域名判断结果,并丢弃暂时保留的所述第一次域名判断结果;
若第二次域名判断结果为:所述域名解析请求报文中的域名与所述待访问路由器中的本地域名不同;
则以所述第一次域名判断结果作为步骤s4中的实际域名判断结果,并直接丢弃所述第二次域名判断结果,避免第二次域名判断结果占用系统内存。
通过上述方案,判断所述域名解析请求报文中的域名与所述待访问路由器中的本地域名是否相同时,可有效降低因为内部常用判断程序出错,而引发偶然误差,避免目标报文被错误的丢弃,并且备用判断程序可经常进行调试,保证其准确性。
进一步的,所述终端设备包括pc、pda和智能手机中的一种或多种。
进一步的,其中所述终端设备通过域名方式连接到所述待访问路由器是指:通过所述终端设备的应用程序通过域名方式连接到所述待访问路由器,并且在所述终端设备和待访问路由器之间进行数据交互。
进一步的,所述终端设备的应用程序包括浏览器、telnet和ssh中的一种或多种。
以上是本发明的较佳实施例,凡依本发明技术方案所作的改变,所产生的功能作用未超出本发明技术方案的范围时,均属于本发明的保护范围。