有沒有辦法使用具有靜態路由的介面建立網橋?

有沒有辦法使用具有靜態路由的介面建立網橋?

對於上下文,我正在設定一個供個人使用的 3 節點 Proxmox 集群,並在 4 個介面上設定 2 個不同的網狀網路(每個網狀網路每個節點有 2 個介面)。這樣每個節點都可以直接連接到其他每個節點。為了使網路正常運作,我依賴每個介面上的靜態路由,配置如下:

auto lo
iface lo inet loopback

iface enp5s0f0 inet manual

iface enp5s0f1 inet manual

auto eno1
iface eno1 inet static
        address 10.83.86.10/24
        up ip route add 10.83.86.11/32 dev eno1
        down ip route del 10.83.86.11/32

auto eno2
iface eno2 inet static
        address 10.83.86.10/24
        up ip route add 10.83.86.12/32 dev eno2
        down ip route del 10.83.86.12/32

auto eno3
iface eno3 inet static
        address 10.83.67.10/24
        up ip route add 10.83.67.11/32 dev eno3
        down ip route del 10.83.67.11/32

auto eno4
iface eno4 inet static
        address 10.83.67.10/24
        up ip route add 10.83.67.12/32 dev eno4
        down ip route del 10.83.67.12/32

auto vmbr0
iface vmbr0 inet static
        address 192.168.0.20/24
        gateway 192.168.0.1
        bridge-ports enp5s0f0
        bridge-stp off
        bridge-fd 0

source /etc/network/interfaces.d/*

節點之間的 IP 位址不同,但其他配置相同。介面eno1eno2是網路的一部分10.83.86.0,並且eno3eno4是網路的一部分10.83.67.0

出現的問題是我不知道如何將這些網路暴露給在 Proxmox 上運行的虛擬機器和容器。例如,我希望能夠對 Proxmox 的 Web 介面進行負載平衡和代理隧道,我計劃僅在網狀網路上公開該介面。另一個例子是我需要某些工作負載才能存取Ceph公共網絡,例如Ceph Kubernetes CSI驅動程式。

據我了解,Proxmox需要一個Linux橋接器來進行虛擬網路卡虛擬化。我嘗試將我的介面配置重寫為:

auto eno1
iface eno1 inet manual
        up ip route add 10.83.86.11/32 dev eno1
        down ip route del 10.83.86.11/32

auto eno2
iface eno2 inet manual
        up ip route add 10.83.86.12/32 dev eno2
        down ip route del 10.83.86.12/32

auto vmbr1
iface vmbr1 inet static
        address 10.83.86.10/24
        bridge-ports eno1 eno2
        bridge-stp off
        bridge-fd 0

但是這個配置只是......當我重新加載時破壞了節點之間的網路ifreload -a。我不完全明白為什麼。

答案1

路由屬於 IP 接口,而不是橋接端口。您的橋接連接埠不應該包含任何內容。所有路由都與具有 IP 位址的介面關聯。

考慮一下你是否有這樣的情況:

auto eno1
iface eno1 inet static
        address 10.83.86.10/24
        up ip route add 10.83.86.11/32 dev eno1
        down ip route del 10.83.86.11/32

然後就變成這樣了:

iface eno1 inet manual

auto vmbr1
iface vmbr1 inet static
        address 10.83.86.10/24
        up ip route add 10.83.86.11/32 dev vmbr1
        down ip route del 10.83.86.11/32
        bridge-ports eno1
        bridge-stp off
        bridge-fd 0

請注意所有與 IP 相關的內容如何簡單地從實體 NIC 轉移到橋接器中。 NIC 成為僅 L2 接口,將其視為交換器端口。交換器的每個介面上都沒有 IP 位址,橋接介面也不應該有。

您可以透過在 中指定所有實體網路卡來橋接多個實體網路卡bridge-ports。所有連接埠都沒有 IP 配置。只有橋才能擁有它。


我無法理解透過讓每個介面都有單獨的 /32 位址和單獨的路由將實現什麼目標。我不知道你為什麼想要這個,但這個網路設定看起來很奇怪。

然而,如果您想要保留問題中的網路(第 3 層)結構,則需要為每個 IP 位址建立專用網橋,並將對應的虛擬機器放入該橋接器中。

如果這一切只是為了主機到虛擬機的通信,則無需將任何實體網卡引入這些網橋。離開時vmbrX不帶任何橋接端口,但配置 IP 位址。您將能夠將虛擬機器放入該「空」橋中,它們將在彼此和主機之間進行通訊。如果您需要將此虛擬網段與第 2 層實體網路(例如乙太網路)連接,則實體網路卡只需成為網橋的一部分。

相關內容