如何使用NetworkManager創建Linux橋接器和Open vSwitch橋接器


我的虛擬基礎架構Ansible角色支持將VM連接到Linux和Open vSwitch橋,但是它們必須已經存在於KVM主機上。

這是將現有以太網設備轉換為網橋的方法。如果在只有一個連接的遠程計算機上執行此操作,請小心!確保您還有其他登錄方式(例如控制台),或者可以添加其他界面。

導出接口和現有連接
首先,導出要轉換的設備,以便我們以后可以輕松引用它(例如eth1)。

export NET_DEV="eth1"
現在,在上方列出您設備導出的當前NetworkManager連接,以便我們以后知道要禁用什么。

sudo nmcli con |egrep -w "${NET_DEV}"
這可能類似於System eth1或Wired connection 1,我們也將其導出以供以后參考。

export NM_NAME="Wired connection 1"
創建一個Linux網橋
這是使用NetworkManager創建持久性Linux橋的示例。它將使用諸如eth1(適當替換)之類的設備並將其轉換為網橋。請注意,我們將專門為其指定設備名稱,br0因為這是標准約定以及libvirt查找的內容。

確保已從上方將設備導出為NET_DEV和現有的NetworkManager連接名稱NM_NAME,並將在下面使用它們。

sudo nmcli con add ifname br0 type bridge con-name br0
sudo nmcli con add type bridge-slave ifname "${NET_DEV}" master br0 con-name br0-slave-"${NET_DEV}"
請注意,br0您的物理接口可能具有不同的MAC地址。如果是這樣,請確保您進行更新和DHCP保留(或者在網橋啟動后能夠找到新IP)。

sudo ip link show dev br0
sudo ip link show dev "${NET_DEV}"
配置網橋
如上所述,默認情況下,Linux網橋將通過DHCP獲取地址。如果您不希望它在網絡上(您可能具有另一個專用接口),請在其上禁用DHCP。

sudo nmcli con modify br0 ipv4.method disabled ipv6.method disabled
或者,如果您需要設置靜態IP,也可以這樣做。

sudo nmcli con modify br0 ipv4.method static ipv4.address 192.168.123.100/24
最后,默認情況下,生成樹協議處於啟用狀態,因此如有必要,請禁用它。

sudo nmcli con modify br0 bridge.stp no
架起橋
現在,您可以簡單地reboot,或停止當前界面並打開網橋(如果使用一個界面,則可以通過一個命令執行,否則將斷開連接)。請注意,如果您不檢查MAC地址並更新任何靜態DHCP租約,一旦橋接出現,您的IP可能會更改。

sudo nmcli con down "${NM_NAME}" ; \
sudo nmcli con up br0
創建一個開放式vSwitch(OVS)橋
OVS橋接器通常用於將libvirt連接到VLAN中。

我們可以創建一個OVS橋接器,該橋接器由橋接器本身以及將所有內容連接在一起的多個端口和接口組成,包括物理設備本身(以便我們可以在網絡上進行通信)以及VLAN和VM的虛擬端口。默認情況下,網橋上的物理端口將使用未標記的(本機)VLAN,但是如果需要對所有流量進行標記,則可以添加標記的接口。

這是使用NetworkManager創建持久性OVS橋的示例。它將使用諸如eth1(適當替換)之類的設備並將其轉換為ovs-bridge。

安裝依賴
您將需要openvswitch安裝OVS NetworkManager插件。

sudo dnf install -y NetworkManager-ovs openvswitch
sudo systemctl enable --now openvswitch
sudo systemctl restart NetworkManager
創建橋梁
讓我們使用這三個命令創建網橋,其端口和接口。

sudo nmcli con add type ovs-bridge conn.interface ovs-bridge con-name ovs-bridge
sudo nmcli con add type ovs-port conn.interface port-ovs-bridge master ovs-bridge con-name ovs-bridge-port
sudo nmcli con add type ovs-interface slave-type ovs-port conn.interface ovs-bridge master ovs-bridge-port con-name ovs-bridge-int
修補我們的物理界面
接下來,在網橋上創建另一個端口,並在我們的物理設備中打補丁作為以太網接口,以使實際流量可以跨網絡流動。確保已從上方將設備導出為NET_DEV和現有的NetworkManager連接名稱NM_NAME,並將在下面使用它們。

sudo nmcli con add type ovs-port conn.interface ovs-port-eth master ovs-bridge con-name ovs-port-eth
sudo nmcli con add type ethernet conn.interface "${NET_DEV}" master ovs-port-eth con-name ovs-port-eth-int
好的,現在您應該已經配置了一個OVS橋接器,並已通過以太網設備將其修補到本地網絡,但尚未激活。

配置網橋
默認情況下,OVS橋將發送無標記的流量並ovs-bridge通過DHCP 請求IP地址。如果您不希望它在網絡上(您可能有另一個專用接口),請在該接口上禁用DHCP。

sudo nmcli con modify ovs-bridge-int ipv4.method disabled ipv6.method disabled
或者,如果您需要設置靜態IP,也可以這樣做。

sudo nmcli con modify ovs-bridge-int ipv4.method static ipv4.address 192.168.123.100/24
架起橋
在啟動網橋之前,請注意,ovs-bridge該網卡的MAC地址可能與您的物理接口不同。如果您管理DHCP靜態租約,請記住這一點,並確保找到新的IP,以便在網橋啟動后可以重新登錄。

現在,您可以簡單地reboot,或停止當前接口並啟動網橋及其接口(理論上,我們只需要啟動ovs-port-eth-int,但是如果您使用的是一個接口,那么讓我們確定並使用一條命令即可完成此操作,否則您將斷開連接,無法重新登錄)。請注意,您的MAC地址可能會在此處更改,因此,如果您使用的是DHCP,則將獲得新的IP,並且會話將凍結,因此請確保您可以找到新的IP,以便重新登錄。

sudo nmcli con down "${NM_NAME}" ; \
sudo nmcli con up ovs-port-eth-int ; \
sudo nmcli con up ovs-bridge-int
現在,您已經可以使用Open vSwitch了!

創建OVS VLAN端口
從那里,您可能想要為特定VLAN創建一些端口組。例如,如果您的網絡沒有本地VLAN,則需要在OVS橋上創建VLAN接口才能進入網絡。

讓我們為VLAN創建一個新的端口和接口,123默認情況下它將使用DHCP來獲取地址並啟動它。

sudo nmcli con add type ovs-port conn.interface vlan123 master ovs-bridge ovs-port.tag 123 con-name ovs-port-vlan123
sudo nmcli con add type ovs-interface slave-type ovs-port conn.interface vlan123 master ovs-port-vlan123 con-name ovs-int-vlan123
sudo nmcli con up ovs-int-vlan123
如果需要在VLAN接口上設置靜態地址,則可以通過修改接口來實現。

sudo nmcli con modify ovs-int-vlan123 ipv4.method static ipv4.address 192.168.123.100/24
查看OVS配置
顯示交換機配置和使用OVS工具進行橋接。

sudo ovs-vsctl show
清理舊界面配置文件
確實不是必需的,但是可以根據需要禁用設備的當前NetworkManager配置,以使其與網橋不沖突。

sudo nmcli con modify "${NM_NAME}" ipv4.method disabled ipv6.method disabled
或者,您也可以根據需要刪除舊界面的NetworkManager配置(但這不是必需的)

sudo nmcli con delete "${NM_NAME}"

至此,就已經完成了。

A5互聯https://www.a5idc.net/


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM