gpt4 book ai didi

networking - 虚拟网络连接

转载 作者:行者123 更新时间:2023-12-04 07:01:08 25 4
gpt4 key购买 nike

我可以看到很多程序,如 openvpn 和 Teamviewer,它们的 VPN 连接在 Windows 上创建了一个虚拟网络连接。我想为自己创建一个用于测试目的。

是否可以通过编程方式创建一个?

最佳答案

听起来您正在寻找 Tap-Win32 驱动程序。它是 Windows 上的 OpenVPN 驱动程序,用于创建您所看到的虚拟界面,实际上是 the OpenVPN package 的一部分.这个子系统也可用于许多 *nixes。

此 TAP 驱动程序的接口(interface)在所有操作系统上大致相同。您打开一个特殊文件,并将原始以太网帧写入此文件。然后驱动程序将这些帧插入到虚拟接口(interface)中。相反,在虚拟接口(interface)上传输的任何数据包都可以作为原始以太网帧从特殊文件中读取。

大多数实现还有一个 TUN 模式,它在第 3 层而不是第 2 层运行。因此,您将读取原始 IP、IPv6 等数据包而不是以太网帧。

我在 Windows 上没有这方面的经验,所以我将在这里快速浏览源代码。 OpenVPN 在 tun.c 函数 open_tun 中完成了大部分这些步骤。您会发现此函数的多个定义,但它们是针对不同操作系统的#ifdef(因此请搜索 CreateFile)。这似乎在 Windows 上运行的基本方式是:

  • 在启动任何操作 TAP 接口(interface)的应用程序之前,会预先创建一个或多个虚拟接口(interface)(由安装程序?)。这些接口(interface)一开始是断开的。
  • 您的应用程序启动并在“\\.\Global\GUID.tap”上执行特殊的 CreateFile 调用。其中 GUID 替换为描述特定虚拟接口(interface)的 GUID。虚拟接口(interface)可以在注册表项中迭代,该注册表项在 OpenVPN 源代码的“tap-win32\common.h”中定义为 ADAPTER_KEY。
  • 您的应用程序可能会执行一些 DeviceIoControl 调用。 OpenVPN 多次使用它来获取驱动程序版本、获取 MTU、设置 TUN 模式和其他杂项。
  • 此时,该界面可能在 Windows 中显示为已连接,您甚至可能正在读取您已经从 Windows 本身接收到的 DHCP 请求。 OpenVPN 使用 Windows 网络 API 的其他部分通过大量的 hoopla 配置接口(interface),但这并不特定于 TAP 驱动程序。

  • 因此,虽然 API 实际上只是一个特殊文件,因此相当简单,但实际管理接口(interface)还有很多工作要做。但如果你只是为了测试,这可能就足够了。然后,您可以在 Windows 中手动配置您的测试界面。

    关于networking - 虚拟网络连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1809054/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com