如何連接 2 個虛擬網橋以使流量從一個到另一個?
Debian 系統,目前情況,通過 etc/network/interfaces 配置
網橋“br0”有 2 個物理乙太網介面 eth0(WAN 端,連接到 ISP 調製解調器/路由器) eth1(LAN 端連接到物理交換機)
eth0 和 eth1 之間的流量通過 IPtables 防火牆和 Suricata 作為 IPS。此設置目前工作正常。
現在我想通過 Linux 容器將“pi-hole”添加到這個設置中。linux 容器需要一個虛擬網橋來添加它的虛擬乙太網介面。
所以我想實現以下目標:
虛擬網橋“br0” - 帶有 eth0 (WAN)
<–>
連接到虛擬網橋“lanbr0” - 帶有 eth1(LAN) - 帶有 veth0(LXC 的虛擬乙太網介面)
這樣,如果將來需要,我可以向“lanbr0”網橋添加更多介面。
編輯 我能夠通過以下命令執行此操作 ip link add veth0 type veth peer name veth1
然後將 veth0 添加到 br0 並將 veth1 添加到 lanbr0 + 在啟動所有介面後將 eth1 從 br0 移動到 lanbr0
但是,我如何通過 /etc/network/interfaces 執行此操作(所以它在啟動期間像這樣載入?
沒有專門處理虛擬雙介面的規定
type veth
。因此,主要通過使用該pre-up
選項進行一些修補。我保留了veth0
andveth1
,但你真的應該考慮選擇任何其他名稱(例如veth-br0
和veth-lanbr0
),因為如果沒有提供這些名稱(例如:ip link add type veth
),它們是預設選擇的名稱,它們可能會發生衝突。對於
veth
介面:iface veth0 inet manual pre-up ip link add veth0 type veth peer name veth1 || : hwaddress 02:00:00:01:00:00 iface veth1 inet manual pre-up ip link add veth1 type veth peer name veth0 || : hwaddress 02:00:00:01:00:01
這會在調出其中任何一個界面時啟用這兩個界面。此處不會失敗,
|| :
因為對等介面已由“其他”介面設置。請注意,為了ifup
’s 的內部狀態,最後都應該提出來,即使提出一個會使另一個出現。對於預期用途,這hwaddress
可能是可選的,並且無論如何都可以設置為任何其他正確的值。網橋採用第一個從屬介面的 MAC 地址。現在在橋樑中使用它們。我不會把你所有的設置(因為你沒有真正給它),只是
veth
相關的部分。您將不得不調整我無法猜測的內容以及我在哪裡留下了一些XXXX
或...
(例如,是inet XXXX
inet manual
inet static
或inet dhcp
?)auto br0 iface br0 inet XXXX pre-up ifup veth0 bridge_ports eth0 veth0 ... auto lanbr0 iface lanbr0 inet XXXX pre-up ifup veth1 bridge_ports veth1 eth1 address xx.xx.xx.xx netmask 255.255.255.0 ...
注意我
ifup vethX
在裡面添加了一個命令,否則它會抱怨介面不存在,會在沒有這個介面的情況下啟動橋並認為它已經完成。我不必在|| :
這裡使用,因為調出已經在邏輯上(意思ifupdown
是狀態)的界面不是錯誤。完成缺少的部分後,將它們放在單獨的(或不)配置文件中
/etc/network/interfaces.d
(或什/etc/network/interfaces
至),這應該可以工作。如果它一開始不起作用,請嘗試在邏輯上關閉所有介面(邏輯上我的意思是使用
ifdown
)並重試:那將是因為錯誤的邏輯狀態導致某些介面無法正確(重新)配置。另請注意,可能會與其他網路管理器進行互動,例如… NetworkManager。可能有一些選項可以讓他們忽略某些介面,但這超出了這個答案的範圍。