[发明专利]一种在使用虚拟网卡的Windows主机上绑定源IP的方法有效
申请号: | 201210587692.5 | 申请日: | 2012-12-28 |
公开(公告)号: | CN103905302B | 公开(公告)日: | 2017-06-06 |
发明(设计)人: | 赵亚;掌晓愚;韩洪慧;叶寒 | 申请(专利权)人: | 上海格尔软件股份有限公司 |
主分类号: | H04L12/70 | 分类号: | H04L12/70;H04L12/741 |
代理公司: | 上海天翔知识产权代理有限公司31224 | 代理人: | 刘粉宝 |
地址: | 200070 上海市*** | 国省代码: | 上海;31 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 使用 虚拟 网卡 windows 主机 绑定 ip 方法 | ||
技术领域
本发明涉及网络数据传输技术,具体涉及在使用虚拟网卡的Windows主机上绑定源IP的技术。
背景技术
诸如Windows这类操作系统在不作路由器使用时,其数据包发送时的行为遵循RFC1122定义的强主机模式,其具体流程如图1所示。
这种方式简化了用户的配置,通过系统中的路由表来为IP数据报选择一个源IP地址。
但强主机发送行为在和基于虚拟网卡的VPN一起使用时,会使通过VPN隧道的IP数据报丧失透明性,即远端接收主机收到的IP数据报的源IP地址将会是虚拟网卡的IP地址,要做到VPN隧道对用户数据报的透明,远端接收主机收到的IP数据报的源IP地址必须为发送端主机在不通过VPN隧道时本来应该经由的物理网卡的IP地址。
展现上述这个问题的例子有很多,例如Cisco的VTI技术、著名的开源VPN实现-OpenVPN等等。
由此可见如在不修改应用程序的情况下为数据包绑定源IP地址是本领域亟需解决的问题。
发明内容
本发明针对现有技术中使用虚拟网卡的Windows主机在发送数据包时所存在的问题,而提供一种在使用虚拟网卡的Windows主机上绑定源IP的方法。该方法可以在不修改应用程序的情况下为数据包绑定源IP地址。
为了达到上述目的,本发明采用如下的技术方案:
一种在使用虚拟网卡的Windows主机上绑定源IP的方法,所述方法使用Windows的LSP技术动态的截获发往虚拟网卡的数据包,将其源IP地址设定为一个非虚拟网卡的IP地址。
在本发明的优选实例中,所述方法通过在LSP中实现socket处理流程、bind处理流程、connect处理流程、sendto处理流程以及closesocket处理流程,以此来完成源IP的绑定;
所述socket处理流程包括如下步骤:
(1a)在LSP中创建socket;
(2a)将创建的socket关联到一个socket跟踪链表表项,该链表项用于指示一个数据包是否需要绑定一个源IP地址;
所述bind处理流程包括如下步骤:
(1b)在LSP中查询socket跟踪链表表项;
(2b)查看相应的bind地址参数是否为0;若为0,转入步骤(4b);若不为0,转入步骤(3b);
(3b)调用原生bind逻辑;
(4b)更新socket跟踪链表表项,为该socket的后续数据包指示需要绑定源IP地址;
所述connect处理流程包括如下步骤:
(1c)查询socket跟踪链表表项;
(2c)若查找到相应的表项,则调用NeedBind例程,该NeedBind例程的逻辑为判断是否需要为数据包绑定一个源IP地址;
(3c)通过调用NeedBind例程来判断数据包是否需要绑定源IP地址,若需要,则转入步骤(4c);若不需要,则转入步骤(5c);
(4c)调用LSP中实现的bind处理流程;
(5c)调用原生connect;
所述sendto处理流程包括如下步骤:
(1d)查询socket跟踪链表表项;
(2d)若查找到相应的表项,则调用NeedBind例程,该NeedBind例程的逻辑为判断是否需要为数据包绑定一个源IP地址;
(3d)通过调用NeedBind例程来判断数据包是否需要绑定源IP地址,若需要,则转入步骤(4d);若不需要,则转入步骤(5d);
(4d)调用LSP中实现的bind处理流程;
(5d)调用原生sendto;
所述closesocket处理流程包括如下步骤:
(1e)查询socket跟踪链表表项;
(2e)若查找到相应的表项,则删除该socket跟踪链表表项;
(3e)调用原生closesocket。
根据上述方案形成的技术方案能够在不修改应用程序的情况下为数据包绑定源IP地址;同时能够灵活实现源地址伪装。
附图说明
以下结合附图和具体实施方式来进一步说明本发明。
图1为现有Windows这类操作系统在不作路由器使用时数据包的发送流程图;
图2为socket处理流程的示意图;
图3为bind处理流程的示意图;
图4为connect处理流程的示意图;
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于上海格尔软件股份有限公司,未经上海格尔软件股份有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201210587692.5/2.html,转载请声明来源钻瓜专利网。
- 上一篇:一种手术室用清创护理架
- 下一篇:一种内科手术托架