我知道有像 OpenVPN 这样的程序可以使用 tun 与 Tcp/Ip 堆栈交互。我知道我们可以使用 Tun/Tap 和桥接来完成诸如虚拟机网络之类的事情。
但我想知道当 Tun/Tap 连接到桥时,它发生了什么。它还会从 Tcp/Ip 堆栈接收数据吗?
Tun/Tap 如何知道数据包来自何处以及数据将发送到何处(桥接器或堆栈)。
或者当我将其连接到 beidge 时,我应该阻止在正常请求中使用 tun/tap 吗?
我搜索了很多,但没有找到任何关于这个问题的答案。
我知道有像 OpenVPN 这样的程序可以使用 tun 与 Tcp/Ip 堆栈交互。我知道我们可以使用 Tun/Tap 和桥接来完成诸如虚拟机网络之类的事情。
但我想知道当 Tun/Tap 连接到桥时,它发生了什么。它还会从 Tcp/Ip 堆栈接收数据吗?
Tun/Tap 如何知道数据包来自何处以及数据将发送到何处(桥接器或堆栈)。
或者当我将其连接到 beidge 时,我应该阻止在正常请求中使用 tun/tap 吗?
我搜索了很多,但没有找到任何关于这个问题的答案。
TAP 接口在桥接时的行为方式与任何其他类似以太网的接口在桥接时的行为完全相同:通过接口“到达”的以太网帧(无论是来自 Cat5 电缆还是来自 OpenVPN 进程)将正常进入桥接器,并且网桥将根据目标 MAC 地址将它们转发到主机操作系统或通过其他一些网桥端口。
因此,如果传入帧将主机的 MAC 作为其目标 MAC,它们最终将(通过网桥)到达主机的 TCP/IP 堆栈。
(简而言之,唯一的区别是 TAP 接口具有软件过程,而不是真正的以太网电缆。)
TUN 接口不能放入桥中,因为它们没有 L2 寻址(这正是它们与 TAP 接口的不同之处)。