一种基于Linux的动态域名解析模块及其黑白名单实现方法与流程

文档序号:12740250阅读:508来源:国知局
本发明涉及互联网
技术领域
:,具体涉及一种基于Linux的动态域名解析模块及其黑白名单实现方法。
背景技术
::目前业界对网络安全的要求越来越高,提出了基于动态域名的黑白名单的要求,所谓基于动态域名的黑白名单是指用户可以使用某动态域名来定义黑白名单,比如:*.sina.com来指定用户不能访问/只能访问所有新浪的网站的,比如house.sina.comfinance.sina.com。该要求的难点在于,此域名是动态的,网络设备无法提前预测/获悉该域名所对应的IP地址,从而不能按照传统的基于固定IP地址的方式来配置黑白名单。并且由于交换机和瘦Wi-Fi路由器(以下简称瘦AP)都是工作在2层的设备,其网络效率更高,很多用户提出在交换机和瘦AP上实现上述功能,从而进一步加大了这一问题的实现难度。目前大多数家用/商用路由器和胖AP提供的基于动态域名的黑白名单的功能的局限性在于:1.其内部必须嵌套内置DNS服务器,并且路由器必须工作在NAT模式,AP必须是胖AP(NAT模式)。2.大多数厂商只能屏蔽域名解析,如果用户使用其域名对应的IP地址来直接访问,就可以绕过黑名单的设置。目前大多数家用/商用交换机和瘦AP并不提供基于动态域名的黑白名单的功能的主要原因有二:1.交换机和瘦AP是工作在二层的设备,而域名解析功能是七层的功能,二层设备无法提供。2.动态域名因为其无法提前获知的特性,导致算法设计复杂度高,实时性得不到满足。技术实现要素:针对上述问题,本发明提供了一种基于Linux的动态域名解析模块及其黑白名单实现方法,其目的在于:提供了路由器,交换机,胖AP,瘦AP通用的基于动态域名的黑白名单的功能。本发明的技术解决方案:一种基于Linux的动态域名解析模块包括:路由器、交换机、胖AP、瘦AP以及域名解析模块,所述域名解析模块包括域名配置模块、域名拦截模块、域名判定模块和数据放行模块,所述域名配置模块工作于用户空间,主要是接收用户从云端发来的指令配置具体哪些域名要加入黑白名单;所述域名拦截模块,工作于内核空间,其功能是拦截DNS响应报文,并将其通过IP组播的形式发放到用户空间的域名判定模块;所述域名判定模块,工作于用户空间,接收从域名拦截模块发来的拦截下来的DNS响应包,查询步骤(1)中配置下来的黑白名单列表,如果发现该域名在列表中,就从DNS响应包中提取其对应的一个或多个IP地址并通知数据放行模块;所述数据放行模块,数据放行模块分为两个部分,一是当上述截获的DNS响应包通过了域名判定模块的分析后,便将其放行,可利用iptablesnf-queue内核模块来实现。另一个是符合黑白名单的IP地址加入对应的IPset后,将前往上述IP地址的数据包放行或者阻拦,可利用iptablesfilter表加ipset模块来实现。一种基于Linux动态域名解析模块的黑白名单实现方法,包括以下步骤:(1)在iptablesmangle表的POSTROUTINGchain中加入对DNS服务器回送的包的拦截,并将拦截包发送到组播队列。(2)组播队列将DNS响应包发送到位于用户空间的“域名判定模块”。(3)“域名判定模块”解析该DNS响应,如果发现其域名符合配置的要求,如查询的域名是house.sina.com.cn,配置的域名是*.sina.com.cn,则提取响应中所有返回的IP地址加入到“IP数据库”。(4)“域名判定模块”通过iptables的扩展内核模块nf_queue来放行该dns响应包。(5)每当收到流入的数据包时要通过路由设备时,在iptablesfilter表的FORWARDchain中加入对IP数据库的查询,如果IP报文的目的地址在IP数据库中就drop该IP包,也就是不允许该IP报文通过。本发明的有益效果:1、提供了路由器,交换机,胖AP,瘦AP通用的配置基于动态域名的黑白名单的功能2、能实时更新动态域名的黑(白)名单,即使该域名在频繁的更新其IP地址,从而避免因为只屏蔽域名而导致的错误和遗漏3、实现效率高,算法简单,对路由器性能基本无影响。附图说明图1:本发明结构原理示意图。图2:本发明实施流程图。具体实施方式下面结合附图和实施例来对本发明做进一步描述:一种基于Linux的动态域名解析模块包括:路由器、交换机、胖AP、瘦AP以及域名解析模块,所述域名解析模块包括域名配置模块、域名拦截模块、域名判定模块和数据放行模块,所述域名配置模块工作于用户空间,主要是接收用户从云端发来的指令配置具体哪些域名要加入黑白名单;所述域名拦截模块,工作于内核空间其功能是拦截DNS响应报文,并将其通过IP组播的形式发放到用户空间的域名判定模块;所述域名判定模块,工作于用户空间,接收从域名拦截模块发来的拦截下来的DNS响应包,查询1)中配置下来的黑白名单列表,如果发现该域名在列表中,就从DNS响应包中提取其对应的一个或多个IP地址并通知数据放行模块;所述数据放行模块,数据放行模块分为两个部分,一是当上述截获的DNS响应包通过了域名判定模块的分析后,便将其放行,可利用iptablesnf-queue内核模块来实现。另一个是符合黑白名单的IP地址加入对应的IPset后,将前往上述IP地址的数据包放行或者阻拦,可利用iptablesfilter表加ipset模块来实现。一种基于Linux动态域名解析模块的黑白名单实现方法,包括以下步骤:1、在iptablesmangle表的POSTROUTINGchain中加入对DNS服务器回送的包的拦截,并将拦截包发送到组播队列。2、组播队列将DNS响应包发送到位于用户空间的“域名判定模块”。3、“域名判定模块”解析该DNS响应,如果发现其域名符合配置的要求,如查询的域名是house.sina.com.cn,配置的域名是*.sina.com.cn,则提取响应中所有返回的IP地址加入到“IP数据库”。4、“域名判定模块”通过iptables的扩展内核模块nf_queue来放行该dns响应包。5、每当收到流入的数据包时要通过路由设备时,在iptablesfilter表的FORWARDchain中加入对IP数据库的查询,如果IP报文的目的地址在IP数据库中就drop该IP包,也就是不允许该IP报文通过。本发明具体步骤参见图一详述如下:S1域名配置模块接收到外部指令,将黑白名单的配置,包括,配置的是黑名单还是白名单,动态域名的具体值,如(*.sina.com.cn,*.163.com,*.news.xjtu.edu.cn)等传送到域名拦截模块,域名判定模块和数据放行模块。S2域名拦截模块在iptablesmangle表的POSTROUTINGchain中向Linux内核注册了域名拦截通知服务,利用了iptablesnf-queue内核模块,也就是说当内核网络模块解析到了域名解析的响应的时候,将该响应报文通过Netlink组播机制发送到用户空间的多播组地址。S3域名判定模块加入该响应对应的IP多播组中,等待接收域名响应消息。S4数据放行模块向Linux内核发送消息,如果配置的是黑名单,就创建黑名单IPset,并在iptablesfilter表Forwardchain中配置内核网络模块,使得所有目标地址属于该黑名单IPset的非DNS协议的IP包全部拦阻,其余全部放行。如果配置的是白名单,就创建白名单IPset,并利用iptablesfilter表配置内核网络模块,使得所有目标地址属于该白名单IPset的IP包全部放行,其余非DNS协议的报文全部拦阻。S5当用户要上网的时候,如访问新浪新闻网站(news.sina.com.cn),用户键入该域名,浏览器解析该域名,发送域名解析请求到DNS服务器,dns服务器返回该域名解析的响应,DNS请求和响应都会经过路由设备,当路由设备的Linux内核收到DNS响应包时,因为S2中域名拦截模块已经注册了针对该报文的通知服务,该DNS响应包会被内核发送到对应的IP多播组中,因为S3中域名判定模块已经加入了多播组所以域名判定模块将收到该报文,利用S2中nf-queue内核模块,我们让Linux内核等待判定结果来决定是否放行还是拦阻该DNS响应报文。S6域名判定模块收到S5中内核传来的完整的DNS响应报文后,会进行包解析,从包里提取出该响应对应的DNS域名和该域名对应的IP地址,如果该域名匹配S1配置的域名规则,如DNS响应的域名为news.sina.com.cn配置的域名为*.sina.com.cn。就将该域名对应的IP地址(一个或者多个)通知到域名放行模块。S7域名放行模块收到了此域名对应的一个或多个IP地址后,如果是配置的黑名单,就将该地址加入到黑名单IPset中,如果是配置的白名单就将该地址加入到白名单IPset中。然后向域名判定模块发送IPset更新确认消息。S8当域名判定模块收到了IPset更新的确认消息后,它向域名放行模块发送放行DNS响应的指令,后者再利用NF-Queue内核模块的相关功能向Linux内核转发此命令放行该DNS响应。S9当用户浏览器收到了该DNS解析响应后,浏览器就会访问该域名对应的IP地址,Linux内核网络模块会通知数据放行模块。如果配置的是黑名单,该地址包含在黑名单ipset中,该数据包将被拦阻,该访问将被拒绝,否则放行该数据包,允许此次访问。如果配置的是白名单,该地址包含在白名单ipset中,该数据包将被放行,该访问将被允许,否则拦阻该数据包,拒绝此次访问。注意这里S8的放行DNS响应的时机非常重要,一定要在ipset更新以后才可以放行dns响应,否则浏览器先于ipset更新完成访问目标地址,黑白名单就会失效。综上,本发明达到预期目的。当前第1页1 2 3 当前第1页1 2 3 
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1