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