
對於上下文,我正在設定一個供個人使用的 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 位址不同,但其他配置相同。介面eno1
和eno2
是網路的一部分10.83.86.0
,並且eno3
和eno4
是網路的一部分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 層實體網路(例如乙太網路)連接,則實體網路卡只需成為網橋的一部分。