[发明专利]一种实现TCP代理完全透明的方法有效
申请号: | 201810731684.0 | 申请日: | 2018-07-05 |
公开(公告)号: | CN108924138B | 公开(公告)日: | 2020-10-23 |
发明(设计)人: | 刘佳;范渊;吴永越;郑学新;刘韬 | 申请(专利权)人: | 成都安恒信息技术有限公司 |
主分类号: | H04L29/06 | 分类号: | H04L29/06;H04L29/12 |
代理公司: | 成都君合集专利代理事务所(普通合伙) 51228 | 代理人: | 张鸣洁 |
地址: | 610000 四川省成都市高新区*** | 国省代码: | 四川;51 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 实现 tcp 代理 完全 透明 方法 | ||
1.一种实现TCP代理完全透明的方法,其特征在于:具体包括以下步骤:
步骤F1:TCP代理服务器通过对Client流向Server的TCP Syn报文进行拦截和缓存,实现MAC地址透明;
步骤F2:TCP代理服务器检查并拷贝Client和Server之间的互发的报文头部字段,实现IP头部TOS和TTL字段透明;
步骤F3:TCP代理服务器为Client建立network namespace,实现TCP端口透明;
所述TCP代理服务器包括相互连接的TCP代理模块、Syn_handler模块、Bridge,所述TCP代理模块包括Tcpproxy_client、Tcpproxy_server、Fd_binder;
所述步骤F1具体包括以下步骤:
步骤F101:Client发出Tcp Syn报文请求,试图与Server建立连接,Bridge学习并记录Client的源MAC地址;
步骤F102: Client发出的Tcp Syn报文到达TCP代理服务器,被Syn_handler模块拦截并缓存;
步骤F103:Syn_handler模块向TCP代理模块发送消息,通知TCP代理模块记录拦截的Tcp Syn报文五元组信息并且发起与Server的TCP连接;
步骤F104:TCP代理模块中的Tcpproxy_client通过Bridge向Server发送Tcp Syn报文,尝试与Server建立连接;
步骤F105:TCP代理服务器中的Bridge转发Tcpproxy_client发出的Tcp Syn报文到Server,此时TCP代理服务器发出的报文的源MAC地址被改成Client的MAC地址,Tcpproxy_client伪装为Client;
步骤F106:Server回复并通过Bridge与TCP代理模块握手建立连接,Bridge通过Server回复的报文进行二层信息学习,记录Server的源MAC地址;
步骤F107:Bridge转发Server回复的报文到Tcpproxy_client,同时TCP代理模块发送确认给Bridge,并且得到与Server连接的文件描述符Client fd;
步骤F108:TCP代理模块的Tcpproxy_client向Fd_binder提交连接的文件描述符Client fd;
步骤F109:TCP代理模块通知Syn_handler模块将步骤F102中Client发来的原始TcpSyn报文放行;
步骤F110:Syn_handler模块将Client发来的原始Tcp Syn报文提交到TCP代理模块中;
步骤F111:TCP代理模块回复ACK确认报文给Client,通过Bridge与Client交互握手,TCP代理服务器发出的所有交互报文源MAC地址被修改为Server的MAC地址,此时建立TCP代理服务器与Client的连接,得到与Client连接的文件描述符Server fd;
步骤F112:TCP代理模块的Tcpproxy_server向Fd_binder提交连接文件描述符Serverfd,Fd_binder根据五元组信息对文件描述符Server fd和文件描述符Client fd进行关联绑定为fd关联组;
步骤F113:Tcpproxy_server和Tcpproxy_client通过Fd_binder绑定的fd关联组进行数据转发。
2.根据权利要求1所述的一种实现TCP代理完全透明的方法,其特征在于:所述步骤F2具体包括以下步骤:
步骤F201:TCP代理服务器检查Client发往Server的报文头部字段;
步骤F202:所述步骤F201中的报文头部字段的TOS和TTL值被Tcpproxy_client拷贝到TCP代理服务器发往Server的请求报文中;
步骤F203:TCP代理服务器检查Server发往Client的报文头部字段;
步骤F204:所述步骤F203中的报文头部字段的TOS和TTL值被Tcpproxy_server拷贝到TCP代理服务器发往Client的请求报文中。
3.根据权利要求1所述的一种实现TCP代理完全透明的方法,其特征在于:所述Client的数量有多个且分别与TCP代理服务器连接,所述network namespace的数量有多个且与多个所述Client一一对应,所述network namespace分别与Bridge连接;
所述步骤F3具体包括以下步骤:
步骤F301:任意一个Client发起Tcp Syn报文请求,被TCP代理服务器截获;
步骤F302:TCP代理服务器检查收到的Tcp Syn报文是否属于某个已经存在的Client,如果是,则找到与所述Client相对应的network namespace;如果不是,则为Client创建对应的network namespace;
步骤F303:步骤F301中所述Client发出的Tcp Syn报文被送往对应的networknamespace中进行处理;
步骤F304:TCP代理模块进程通过在步骤F303中所述network namespace与Server建立连接并通信,Tcpproxy_client使用的IP地址和TCP源端口与步骤F301中所述Client的完全一致。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于成都安恒信息技术有限公司,未经成都安恒信息技术有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201810731684.0/1.html,转载请声明来源钻瓜专利网。