两个 TAP 接口之间的桥接需要 IP 地址吗?

两个 TAP 接口之间的桥接需要 IP 地址吗?

我正在尝试在一台机器上设置 openvpn,以便拥有 2 个不同的 tap 接口(tap0 和 tap1),然后有一个连接这些接口的桥接器。openvpn 为每个 TAP 接口设置了一个服务器桥接配置。这个想法是 tap0 上的客户端将能够与 tap1 上的客户端通信,反之亦然。

桥接中不涉及任何物理网卡,桥接接口的设置没有 ip/网络掩码/广播。只需输入一个“ifconfig brX up”即可

当两个客户端都连接到 openvpn 服务器时,我能够在两个客户端之间进行 ping 操作,每个客户端都连接到上面提到的自己的 tap 接口,但是在尝试 tcpdump 桥接接口时我看不到任何流量。

我对一些事情有点困惑:

  1. 我是否需要在桥接接口上配置 IP?我不太明白这样做的原因,因为它所做的只是让虚拟接口相互通信

  2. 是不是因为桥接接口没有分配 ip/网络掩码/广播,导致我在对桥接接口进行 tcpdump 时无法看到该接口上的 ping 流量?

  3. 如果第 2 个问题的答案是肯定的,那么我认为使用 iptables 阻止/允许该接口上的流量是不可能的,对吗?如果是这样,还有其他方法可以完成在这样的接口上使用 iptables 所做的事情吗?

答案1

我是否需要在桥接接口上配置 IP?我不太明白这样做的原因,因为它所做的只是让虚拟接口相互通信

不,纯桥接器仅在以太网层工作 - 它甚至不查看 IP 标头。当您将 IP 地址分配给 br0 时,实际上是将其分配给连接到该桥接器的主机操作系统。

但是,你还没有提到实际添加tap接口桥接端口。您需要明确告诉网桥它管理哪些端口:

  • brctl addif br0 tap0

  • ip link set tap0 master br0

是不是因为桥接接口没有分配 ip/网络掩码/广播,导致我在对桥接接口进行 tcpdump 时无法看到该接口上的 ping 流量?

不。

但网桥可能仍处于“学习”模式;其默认时间仍为 30 秒 – 使用 检查brctl showstp br0。端口可能未添加到网桥(见上文)。端口接口本身可能仍处于关闭状态。

(还有,亲爱的神们为什么人们认为他们需要设置广播地址。实际上,操作系统已经可以根据 IP | ~netmask 计算出它。手动配置广播地址几乎没有用,只是更容易意外地获取它错误的

如果第 2 个问题的答案是肯定的,那么我认为使用 iptables 阻止/允许该接口上的流量是不可能的,对吗?如果是这样,还有其他方法可以完成在这样的接口上使用 iptables 所做的事情吗?

是的,您需要ebtables过滤流量;它不会穿过 IP 防火墙。

(不过,我猜这并不总是正确的。例如,Untangle 防火墙似乎在混合路由器/桥接模式下工作,这有点令人困惑。)

相关内容