我可以在没有虚拟微型端口 driver 的情况下创建 VPN 应用程序吗?

Can I Create a VPN application without Virtual miniport driver?

我想像用户应用程序一样创建一个简单的 VPN。我浏览了不同的 VPN 应用软件。我可以看到他们中的大多数都使用微型端口虚拟适配器 例如: OpenVPN 使用 Windows TAP driver。另一个 VPN 软件同时使用微型端口和过滤器 driver。 注意:过滤器driver从真实的物理微型端口发送和接收数据。不是吗?

现在我是 driver 开发过程的初学者。我对重新分级 VPN drivers 有一些疑问。如果我想在 windows 环境中用 С++ 创建一个简单的 VPN 应用程序,

  1. 为什么大多数 VPN 软件都使用虚拟适配器和过滤器 driver(可选)?
  2. 是否必须为 VPN 创建虚拟微型端口适配器 应用?
  3. 我可以创建一个只有过滤器的 VPN 应用程序吗 driver? (读/写数据包)

如果我创建一个新的虚拟 driver,我是否应该接受 HLK/HCK driver 签名测试 windows 10 及以后?

通常,除非操作系统通过内置的过滤器驱动程序公开 API,否则您确实需要创建自己的过滤器驱动程序。您将进一步看到 2 种基本类型的用法。

  • Virtual Miniport/Nic - VPN 连接创建一个虚拟接口,然后也可以在其他决策中引用该接口,例如路由 table

  • 内联 - 它们位于您的协议栈和物理接口之间,并根据其自身的逻辑对其进行加密和重定向。

也就是说,至少 Windows 您有几种方法可以创建基于用户模式的 VPN 应用程序。最新最活跃的开发在 Windows.networking.vpn 的 UWP api space < https://docs.microsoft.com/en-us/uwp/api/Windows.Networking.Vpn>