我可以看到很多像openvpn和Teamviewer这样的程序用于他们的VPN连接在Windows上创建虚拟网络连接。我想为自己创建一个用于测试目的。
是否可以以编程方式创建一个?
答案 0 :(得分:3)
听起来你正在寻找Tap-Win32驱动程序。这是Windows上的驱动程序OpenVPN用于创建您正在看到的虚拟接口,实际上是the OpenVPN package的一部分。该子系统也可用于许多* nixes。
此TAP驱动程序的接口在所有操作系统上大致相同。您打开一个特殊文件,并将原始以太网帧写入此文件。然后,驱动程序将这些帧插入虚拟接口。相反,在虚拟接口上传输的任何数据包都可以作为原始以太网帧从特殊文件中读取。
大多数实现也有TUN模式,它在第3层而不是第2层运行。因此,您将读取原始IP,IPv6等数据包而不是以太网帧。
我在Windows上没有这方面的经验,因此我将在此处快速浏览源代码。 OpenVPN在tun.c函数open_tun中完成了大部分这些步骤。您将找到此函数的多个定义,但它们对于不同的操作系统是#ifdef(因此搜索CreateFile)。这似乎在Windows上运行的基本方式是:
因此虽然API实际上只是一个特殊的文件,因此非常简单,实际管理界面有很多。但如果你只是在进行测试,这可能就足够了。然后,您可以在Windows中手动配置测试界面。
答案 1 :(得分:0)
这可能是朝着正确方向迈出的一步?
从页面:
远程访问服务(RAS)除了使用点对点协议(PPP)的传统远程访问连接外,还支持虚拟专用网络(VPN)连接。在VPN连接中,VPN数据包封装在IP数据包中,并通过IP网络(如Internet)发送。因此,为了建立VPN连接,需要访问IP网络。如果客户端计算机具有到IP网络的始终连接,例如与IP LAN的连接,则客户端可以使用对RasDial功能的单个调用来建立VPN连接。