我可以看到很多像openvpn和Teamviewer这样的VPN连接程序在windows上创建了一个虚拟网络连接。我想为自己创建一个,用于测试目的。
有没有可能通过编程的方式创建一个呢?
发布于 2009-12-05 23:42:34
听起来您正在寻找Tap-Win32驱动程序。它是Windows上的OpenVPN用来创建您所看到的虚拟界面的驱动程序,实际上也是the OpenVPN package的一部分。这个子系统也可以在许多*nixes上使用。
此TAP驱动程序的接口在所有OSes上大致相同。您打开一个特殊文件,并将原始以太网帧写入此文件。然后,驱动程序将这些帧插入虚拟接口。相反,在虚拟接口上传输的任何分组都可以作为原始以太网帧从特殊文件中读取。
大多数实施还具有TUN模式,该模式在第3层而不是第2层运行。因此,您将读取原始IP、IPv6等数据包,而不是以太网帧。
我在Windows上没有这方面的经验,所以我在这里快速浏览一下源代码。OpenVPN在tun.c函数open_tun中完成了这些步骤中的大部分。你会发现这个函数有多个定义,但是它们是针对不同OSes的#ifdef'd (所以搜索CreateFile)。这似乎是在Windows上运行的基本方式:
因此,虽然API实际上只是一个特殊的文件,因此相当简单,但实际管理接口有很多事情要做。但是如果你只是为了测试,这可能就足够了。然后,您可以在Windows中手动配置测试接口。
发布于 2009-12-01 10:29:45
MSDN Ras Dial function
这可能是朝着正确方向迈出的一步?
在该页面中:
除了使用点对点协议的传统远程访问连接之外,远程访问服务(RAS)还支持虚拟专用网络(
)连接。在VPN连接中,VPN数据包被封装在IP数据包中,并通过IP网络(例如Internet )发送。因此,需要访问IP网络才能建立VPN连接。如果客户端计算机具有到IP网络的始终在线连接,例如到IP局域网的连接,则客户端可以使用对RasDial函数的单个调用来建立虚拟专用网连接。
https://stackoverflow.com/questions/1809054
复制相似问题