在 Debian 11 上與 VLAN 和網橋綁定
我正在嘗試在 Linux綁定主動備份(2 個物理介面 eth2 和 eth3,使用一個)上配置,但也配置兩個 VLAN,然後將其連接到內部網橋。我看到兩個連接選項,都在工作,
- 第一種方法工作正常,看起來很簡單,但所有 VLAN 都通過單個物理介面路由(頻寬較低)
- 第二個是有問題的(對我來說),但我更喜歡第二個,因為它允許通過 eth2 路由一個 VLAN,通過 eth3 路由第二個 VLAN(更大的頻寬和容錯)。
- 我不想要
bond-mode 4 = 802.3ad
AKA LACP(伺服器連接到不同的 Cisco 交換機,我聽說過並看到了這種配置的一些問題),所以bond-mode active-backup
需要足夠了。# 1. Two NICs agregated to one bonding, and then separate VLANS from bonding interface: eth2 bond1.10 - xenbr10 > bond1 < eth3 bond1.15 - xenbr15 # 2. VLANs separated form physical NIC, then aggregate to separate binding interfaces. eth2.15 ... eth2 < eth2.10 > bond10 - xenbr10 eth3.10 eth3 < eth3.15 ...
我有帶有 Debian 11 的伺服器、2 個網路介面、已安裝的軟體包
vlan
和(由於 2.12 中的這個問題bridge-utils
,ifenslave
在來自測試倉庫的 2.13 版本中)。模組並載入到系統中。8021q``bonding
問題 1:**這裡是連接最佳實踐的首選嗎?**為什麼?我在問,因為在網際網路上找到的大多數(或全部)教程都是關於第一次連接的(甚至是Debian Wiki)
選項1
這工作正常,我可以通過控制台或配置文件來完成。不利的一面:兩個 VLAN 始終使用單個介面發送。我目前
/etc/network/interfaces
的(已刪除的非重要元素)iface eth2 inet manual iface eth3 inet manual auto bond1 iface bond1 inet manual bond-slaves eth2 eth3 bond-mode active-backup bond-miimon 100 bond-downdelay 200 bond-updelay 200 iface bond1.10 inet manual vlan-raw-device bond1 iface bond1.15 inet manual vlan-raw-device bond1 auto xenbr10 iface xenbr10 inet static address 1.2.3.4/24 bridge_ports bond1.10
重新啟動系統後,此配置工作正常,但我想配置和使用第二個選項。
選項 2:在 shell 中工作,無法從配置文件中進行
我可以從命令行進行此配置:
ifconfig eth2 up ifconfig eth3 up #setting up VLANs ip link add link eth2 name eth2.10 type vlan id 10 ip link add link eth3 name eth3.10 type vlan id 10 #creating bonding interface with 2 slaves NIC ip link add name bond1 type bond mode active-backup ip link set dev eth2.10 down ip link set dev eth3.10 down ip link set master bond10 dev eth2.10 ip link set master bond10 dev eth3.10 ip link set up dev bond10 ip link set dev eth2.10 up ip link set dev eth3.10 up ### Bridge + bonding brctl addbr xenbr10 brctl addif xenbr10 bond10 ip addr add 1.2.3.4/24 dev xenbr10 ip link set dev xenbr10 up
網路已啟動:
cat /proc/net/bonding/bond10 Ethernet Channel Bonding Driver: v5.10.0-12-amd64 Bonding Mode: fault-tolerance (active-backup) Primary Slave: None Currently Active Slave: eth2.10 MII Status: up (..) Slave Interface: eth2.10 MII Status: up Speed: 1000 Mbps Duplex: full Link Failure Count: 0 Permanent HW addr: (..) Slave Interface: eth3.10 MII Status: up (..)
但我無法創建配置文件來使其永久化。我嘗試了很多這樣的選擇,但沒有運氣。如果我將介面
eth2.10
直接連接到某些介面,xenbr10
它可以工作。iface eth2.10 inet manual vlan-raw-device eth2 iface eth3.10 inet manual vlan-raw-device eth3 bond-master bond10 #It doesn't change nothing, for testing auto bond10 iface bond10 inet manual bond-slaves eth2.10 eth3.10 #bond-slaves none bond-mode active-backup bond-miimon 100 bond-downdelay 200 bond-updelay 200 auto xenbr10 iface xenbr10 inet static address 1.2.3.4/24 bridge_ports bond1.10
重新啟動系統後,通常我會收到如下錯誤:
如果上
$$ 686 $$: 無法將 eth2.10 奴役到 bond10。bond10 準備好和綁定介面了嗎?
問題2:**這個配置有什麼問題?**我試過了
- 將 eth2.10 配置設置為高於或低於 bond10 配置,
- 使用
bond-master bond10
eth2.10 和bond-slaves none
bond10 配置部分的條目- 部分使用
bond-slaves eth2.10 eth3.10
條目bond10
- 利用
auto eth2.10
經過一天的搜尋和測試,我找到了兩個解決方案。第一個配置可能不優雅,但有效:
# Using default ifupdown on Debian 11: # Set up NIC and NIC's alias with VLAN: auto eth2 iface eth2 inet manual post-up ip link add link eth2 name eth2.10 type vlan id 10 post-up ip link add link eth2 name eth2.15 type vlan id 15 auto eth3 iface eth3 inet manual post-up ip link add link eth3 name eth3.10 type vlan id 10 post-up ip link add link eth3 name eth3.15 type vlan id 15 auto bond533 iface bond533 inet manual bond-slaves eth2.533 eth3.533 bond-mode active-backup # (...)
感謝 AB 的評論(連結),我發現使用
ifupdown2
. 請注意:在安裝此軟體包期間(它刪除了舊的ifupdown
)我已經失去了網路,直到重新啟動(也許重新啟動網路就足夠了,未經測試)。# After installing ifupdown2: # No need to set up physical NIC or VLAN interface! #iface eth2.10 inet manual # vlan-raw-device eth2 #iface eth2.533 inet manual # vlan-raw-device eth2 #Set up bonding and brige (the same as with ifupdown) auto bond533 iface bond533 inet manual bond-slaves eth2.533 eth3.533 bond-mode active-backup # (...)
對我來說,這樣簡單的配置正確工作有點奇怪。看起來
ifupdown2
可以設置必要的綁定從屬網路介面(甚至是 vlan),而無需提前配置它們。