为什么“dev tun”vpn 使用 tap 适配器?

为什么“dev tun”vpn 使用 tap 适配器?

Windows 10 上的 OpenVPN 版本 2.5.0。安装后,我得到了两个新的网络适配器:OpenVPN WintunOpenVPN TAP-Windows6

我的 .ovpn 配置文件包含该行dev tun,因此我假设连接将使用接口tun,但事实并非如此tap。我尝试重新安装 OpenVPN,仅安装tun接口,连接失败并显示以下日志:

...
open_tun
MANAGEMENT: Client disconnected
All tap-windows6 adapters on this system are currently in use
Exiting due to fatal error

这是有道理的,因为没有tap安装适配器,但如果配置中说明了,那为什么不使用呢tun?日志甚至告诉了open_tun

出于好奇,我尝试更改dev tun为,但失败并出现多个错误,所以我的 vpn 确实是这种类型。有人能解释一下为什么它会这样工作吗?如果无论如何都要使用适配器,那适配器有什么用呢?dev taptunOpenVPN Wintuntap

如果出于某种原因这种行为是正确的,那么它是否实际上像tun应该的那样在第 3 级运行?

答案1

对 Wintun 的支持(来自 WireGuard)是 OpenVPN 2.5 的最新功能,因此您需要明确选择使用它:

windows-driver wintun

长期以来,不是Windows 上任何类似于“tun”接口的东西都可以被 OpenVPN 使用,所以dev tun别无选择,只能使用“TAP-Windows”驱动程序并创建一个 L2 以太网接口,即使对于 L3 隧道也是如此——它只会模拟所有 L2 的东西(比如客户端的 ARP 响应,甚至为本地机器提供假 DHCP。

然而,尽管对于第 3 层链接来说它很笨重,但“TAP-Windows”驱动程序已经运行了很长时间,因此目前仍然是默认驱动程序。(Wintun 还采用了更严格的权限检查,因此 OpenVPN 需要以系统权限作为服务运行。看来 OpenVPN 为此使用了“交互式服务”模式。)

另一个类似的选项是 OpenVPN 自己的“数据通道卸载”驱动程序ovpn-dco,它将随 OpenVPN 2.6 一起提供。

相关内容