[发明专利]一种DNS数据包的代理转发方法有效

专利信息
申请号: 201310003934.6 申请日: 2013-01-07
公开(公告)号: CN103095608A 公开(公告)日: 2013-05-08
发明(设计)人: 朱其武;王金桂 申请(专利权)人: 深圳市共进电子股份有限公司
主分类号: H04L12/883 分类号: H04L12/883;H04L29/12
代理公司: 深圳市凯达知识产权事务所 44256 代理人: 王琦
地址: 518067 广东省深圳市南山区南海*** 国省代码: 广东;44
权利要求书: 查看更多 说明书: 查看更多
摘要:
搜索关键词: 一种 dns 数据包 代理 转发 方法
【说明书】:

技术领域

发明涉及通信技术领域,尤其涉及一种DNS数据包的代理转发方法。

背景技术

DNS( 域名系统,Domain Name System) 是一种用于TCP/IP( 传输控制协议/ 因特网互联协议,Transmission Control Protocol/Internet Protocol) 的应用程序的分布式数据库,它提供主机名字和IP 地址之间的转换信息。

目前通常采用的域名解析方法如下:1) 客户端向DNS服务器发送域名解析请求;2)DNS 服务器对域名进行解析;3)DNS服务器将解析结果返回给客户端;以及4) 客户端从该结果中选择一个IP 地址进行访问。

在家庭网关的使用中,经常会使用家庭网关设备(CPE,Customer Premise Equipment)作为代理,解析LAN侧用户的域名解析请求。   这样可以对用户的上网行为进行一定的控制,或者是对通信运营商的业务进行支持(比如说通过注册才可以上网等)。

而一个CPE中,时常需要建立多条wan连接,用于上网,用于IPTV,用TR069管理等。每条wan连接使用不同的业务,都有相应的DNS请求解析。这些请求可以是来自CPE,也可能是LAN侧用户请求的。对于来自用户的请求,CPE代理都统一使用作为默认网关的wan连接解析。

为了在LAN侧区分不同的业务使用,通常使用端口绑定,将LAN端口跟相应的WAN连接绑定起来。这样,如图1所示,通过特定LAN端口进来的数据包,会被标记相应的mark值,然后根据这个mark值走策略路由,最终到达绑定的对应WAN接口;而未被标记mark值的数据包,通过默认路由发送出去。

但是,因为DNS解析使用了代理,由于代理进程属于应用层,代理进程在接收内核数据的时候不能读取skb数据包(skb是socket buffer(套接字缓存)的缩写,在整个linux的协议栈中是用来打包数据的结构体,习惯上用skb表示一个数据包)的mark属性值,所以进程接收的DNS数据包不知道之前ebtables设置的mark值,使得在转发的时候发送的数据包是不带mark值的。因而代理进程在接收DNS数据包并转发的时候,会使得mark值丢失,于是转发的数据包最终会通过默认路由发送出去,而不是绑定的WAN接口。

如果所有的WAN连接使用的DNS服务器都是相同的,那么无论走那条WAN连接都可以正确解析。但是,如果不同WAN连接的DNS服务器不同,并且各DNS服务器的业务内容也不同(运营商有时会在某些业务上构建自己的DNS服务器),则会出现异常错误,最终不能解析或者解析错误。因而,有必要针对此问题提供一种有效的解决方案。

发明内容

本发明的目的在于提供一种DNS数据包的代理转发方法,克服现有DNS数据包的代理转发方法过程中mark值丢失所造成的解析失败的缺陷。

本发明的目的是通过以下技术方案实现的:

一种DNS数据包的代理转发方法,包括步骤:

在代理进程接收域名解析请求数据包时,读取linux内核中对应skb数据包的mark值,将该域名解析请求数据包与其对应的mark值一并存储于缓冲链表中;

在数据包转发前,对于缓冲链表中有标记mark值的域名解析请求数据包,从缓冲链表中读取标记的mark值,将该mark值设置于该域名解析请求数据包对应的套接字的属性选项中,然后通过套接字转发域名解析请求数据包。

上述方法中,通过系统调用recvmsg函数读取linux内核中对应skb数据包的mark值。

上述方法中,对于缓冲链表中未标记有mark值的域名解析请求数据包,将该域名解析请求数据包通过默认路由转发至域名服务器。

上述方法中,在通过套接字转发域名解析请求数据包的过程中,将套接字中的mark值设置于对应skb数据包的mark选项中,由linux内核路由模块根据该mark值选择匹配的策略路由。

与现有技术相比,本发明实施例具有以下有益效果:

为了避免DNS数据包在转发过程中其mark值丢失,本发明实施利用数据包透传技术:采用扩展linux套接字的选项配置,使得代理进程可以在读取LAN侧数据包的时候读取记录mark值;在转发数据包的时候,设置mark值到套接字选项中。这样可以保证mark值不会丢失,DNS数据包能够根据原来的mark值走策略路由,从而确保了域名解析的正确性。

附图说明

图1是现有技术中DNS数据包的代理转发方法流程图。

下载完整专利技术内容需要扣除积分,VIP会员可以免费下载。

该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于深圳市共进电子股份有限公司,未经深圳市共进电子股份有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服

本文链接:http://www.vipzhuanli.com/pat/books/201310003934.6/2.html,转载请声明来源钻瓜专利网。

×

专利文献下载

说明:

1、专利原文基于中国国家知识产权局专利说明书;

2、支持发明专利 、实用新型专利、外观设计专利(升级中);

3、专利数据每周两次同步更新,支持Adobe PDF格式;

4、内容包括专利技术的结构示意图流程工艺图技术构造图

5、已全新升级为极速版,下载速度显著提升!欢迎使用!

请您登陆后,进行下载,点击【登陆】 【注册】

关于我们 寻求报道 投稿须知 广告合作 版权声明 网站地图 友情链接 企业标识 联系我们

钻瓜专利网在线咨询

周一至周五 9:00-18:00

咨询在线客服咨询在线客服
tel code back_top