Debian

在 Debian 11 上與 VLAN 和網橋綁定

  • March 25, 2022

我正在嘗試在 Linux綁定主動備份(2 個物理介面 eth2 和 eth3,使用一個)上配置,但也配置兩個 VLAN,然後將其連接到內部網橋。我看到兩個連接選項,都在工作,

  1. 第一種方法工作正常,看起來很簡單,但所有 VLAN 都通過單個物理介面路由(頻寬較低)
  2. 第二個是有問題的(對我來說),但我更喜歡第二個,因為它允許通過 eth2 路由一個 VLAN,通過 eth3 路由第二個 VLAN(更大的頻寬和容錯)。
  • 我不想要bond-mode 4 = 802.3adAKA 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-utilsifenslave在來自測試倉庫的 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 bond10eth2.10 和bond-slaves nonebond10 配置部分的條目
  • 部分使用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),而無需提前配置它們。

我基於此頁面上的配置: https ://docs.nvidia.com/networking-ethernet-software/knowledge-base/Configuration-and-Usage/Network-Interfaces/Compare-ifupdown2-with-ifupdown/

引用自:https://unix.stackexchange.com/questions/696582