将流量从网桥路由到特定接口

将流量从网桥路由到特定接口

有关 Ubuntu 20.04 中路由的基本问题。

我在 Hetzner 中有一个裸机设置,它有一个 11.22.33.44/32 IPV4 地址以及分配给它的 2a01:db8:30/64 子网。

enp7s0 是具有 11.22.33.44/32 地址的物理接口。

我还将裸机服务器连接到分配有公共子网 2a01:1111:2222:3333::/64 的 vSwitch。此子网的网关为 2a01:1111:2222:3333::1,可通过 vlan.4001 接口(enp7s0 的子接口,VLAN 标签 ID 为 4001)访问

在我的设置中,在名为 br1 的主机上创建了一个网桥,其 IP 地址为 2a01:1111:2222:3333::10/64。在此网桥上创建了多个虚拟机,每个虚拟机都有一个从 2a01:1111:2222:3333::/64 IPV6 子网分配的 IPV6 地址。我必须使用网桥,由于各种要求,没有其他可用选项。

br1 上的虚拟机可以相互通信,也可以与 br1 通信。我想通过 vlan.4001 将所有流量从 br1 路由到外部世界。我不想将 vlan.4001 接口添加到 br1(我不希望虚拟机的 MAC 地址暴露给 vSWitch)。我将地址 2a01:1111:2222:3333::2/64 分配给 vlan.4001,但很难弄清楚如何将流量从 br1 路由到 vlan.4001 接口。

正如我之前提到的,我确实必须使用网桥将主机上的所有虚拟机与 2a01:1111:2222:3333::/64(虚拟机不允许 NAT)连接起来,并且仍然能够通过 vlan.4001 访问外部互联网。

使用 Ubuntu 20.04 可以实现此设置吗?

我也会不是能够使用 VRF 或 netns,但由于其他要求,这两者都被排除在外。

我唯一的选择是使用基于策略的路由,但我无法为 2a01:1111:2222:3333::/64 创建 PBR 以使用 vlan.4001 接口进行外部流量传输。

答案1

桥接不路由。桥接发生在第 2 层,路由发生在第 3 层。您必须决定是否要在连接虚拟机的内部网络(由 br1 实现)和 Internet 连接(vlan.4001)之间进行路由或桥接。无论哪种选择都有特定的后果。

如果您选择桥接,您的虚拟机将直接与网关 2a01:1111:2222:3333::1 通信,将其 MAC 地址暴露给该网关和中间的第 2 层网络。另一方面,该解决方案非常简单,因此更安全可靠。

如果您选择路由,则需要在虚拟机和外部接口之间建立一个路由实例,以及一个具有自己的 IPv6 地址范围的单独网段,以便将该路由实例连接到主机的网关路由器。因此,您必须要求 Hetzner 提供另一个 /64 地址,以便他们路由到您的内部路由器,或者要求提供 /56 地址,然后您自己对其进行子网划分。路由实例可以作为运行防火墙的专用虚拟机来实现,也可以由裸机服务器的操作系统来实现。

无论您使用 Ubuntu 20.04 还是任何其他操作系统,都不会影响到该级别。无论您选择哪种解决方案,都可以在 Ubuntu 以及任何其他操作系统上实现。

相关内容