【问题标题】:How to implement a multi-vpn dynamic route table NDIS miniport driver?如何实现多 vpn 动态路由表 NDIS 微型端口驱动程序?
【发布时间】:2012-04-25 15:49:43
【问题描述】:

我想编写一个 NDIS 微型端口驱动程序,作为虚拟适配器映像描述在此处弹出(就像 VMWare 一样)。其目的是将数据包转发到现有连接的 vpn 内部 IP(适配器)。可能有许多现有的 vpn 连接。我的驱动程序通过不同的进程将数据包转发给其中一个(进程可能连接到同一个 IP,因此路由表无法区分不同的连接)。

我可以参考任何提示或示例吗? 谢谢。

【问题讨论】:

    标签: windows vpn ndis miniport


    【解决方案1】:

    NDIS 驱动程序是低级的。他们不了解用户模式进程;当数据包到达 NDIS 时,所有进程上下文都消失了。由于您的问题陈述似乎非常关心用户模式进程标识,因此 NDIS 驱动程序可能不是解决该问题的适当解决方案。

    听起来您可以使用WFP 将流量引导到适当的接口。 WFP 本质上是一个巨大的规则引擎:有输入规则(例如“进程名称是 'notepad.exe'”或“用户是 'bob'”)和输出操作(例如“将所有流量重新路由到网络接口 42”)。如果你足够幸运能够用内置的规则和动作来表达你的问题,你甚至可能根本不需要编写任何内核代码。 (想想你会节省多少时间!)

    如果由于某种原因您不能使用 WFP(也许您需要以 Windows XP 为目标),那么您应该研究编写 Winsock LSP。 LSP 插入目标进程中的套接字代码,并且可以进行某种程度的流量操作。

    【讨论】:

    • 感谢您非常详细的回复。但是,在研究了 Winsock LSP 技术后,我发现可能不可能通过 Winsock LSP dll 重新路由数据包。有什么想法吗?
    猜你喜欢
    • 2015-05-14
    • 2017-08-18
    • 2017-03-31
    • 2020-03-27
    • 1970-01-01
    • 2016-03-10
    • 2012-02-28
    • 2010-10-26
    • 2011-10-20
    相关资源
    最近更新 更多