關於 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 通訊。我想將所有流量從 br1 通過 vlan.4001 路由到外部世界。我不想將 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 層。任何一種選擇都會產生特定的後果。
如果您選擇橋接,您的虛擬機器將直接與網關 2a01:1111:2222:3333::1 通信,將其 MAC 位址暴露給該網關和中間的第 2 層網路。另一方面,該解決方案非常簡單,因此更加安全可靠。
如果選擇路由,則需要在虛擬機器和外部介面之間有一個路由實例,以及一個具有自己的 IPv6 位址範圍的單獨網段,以將該路由實例連接到託管伺服器的網關路由器。因此,您必須向 Hetzner 詢問另一個 /64,他們將路由到您的內部路由器,或詢問 /56,然後您可以自己進行子網路劃分。路由實例可以作為運行防火牆的專用虛擬機器來實現,也可以透過裸機伺服器的作業系統來實現。
無論您使用 Ubuntu 20.04 還是任何其他作業系統,都不會在該層級發揮作用。無論您選擇哪種解決方案,都可以在 Ubuntu 以及任何其他作業系統上實現。