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

fla*_*g19 5 openvpn windows-10

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
Run Code Online (Sandbox Code Playgroud)

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

出于好奇,我尝试更改dev tundev tap,但由于多个错误而失败,所以我的 vpn 确实是这种tun类型。谁能解释一下为什么它会这样工作?OpenVPN Wintun如果tap无论如何都使用适配器,那么适配器有什么用?

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

use*_*686 9

对 Wintun(从 WireGuard 引入)的支持是 OpenVPN 2.5 的最新补充,因此您需要明确选择使用它:

\n
windows-driver wintun\n
Run Code Online (Sandbox Code Playgroud)\n

很长一段时间以来, OpenVPN都没有任何类似于 Windows 上的“tun”界面的东西,所以dev tun别无选择,只能使用“TAP-Windows”驱动程序并为 L3 隧道创建 L2 以太网接口\xe2\x80\x93 它只会模拟所有 L2 事物(例如客户端的 ARP 响应,甚至向本地计算机提供虚假的 DHCP。

\n

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

\n

另一个类似的选项是 OpenVPN 自己的“Data Channel Offload”驱动程序ovpn-dco,它将在 OpenVPN 2.6 中提供。

\n