建立第 2 層虛擬接口,透過虛擬橋接器連結到 eth0

建立第 2 層虛擬接口,透過虛擬橋接器連結到 eth0

晚安,

我有一個棘手的問題,因為我需要建立一個與虛擬機一起使用的虛擬接口,但它只能是第 2 層:虛擬機將與預先設定的 MAC 位址進行通訊(可以為該位址設定一個)適配器,VM 將使用該適配器,否則VM 將偽裝另一個預設的MAC 位址。

我已經找到的大多數解決方案都與使用第3 層(即IP 位址)有關,不幸的是,這些解決方案對我不起作用:第3 層配置必須在虛擬機器內部完成,並且虛擬網路卡和虛擬交換器必須在虛擬機器內部完成。

出於安全性和操作原因,我根本不需要 IP 位址配置(即僅適用於 IPv4 和 IPv6 的連結本地,或完全停用第 3 層。)

簡而言之,我需要這樣的拓樸:

My VM <-> vnic0 <-> vbr0 <-> eth0 <-> external network

我需要建立一個名為 vnic0 的虛擬適配器,它(與真實適配器 eth0 一起)連接到名為 vbr0 的虛擬橋接器。最好是,我正在尋找 RHEL 7.4 / CentOS 7.4 的配置文件,這些文件將允許配置在重新啟動後自動工作,無需系統管理員的交互。將來我可能還需要創建 vnic1、vnic2、vnic3 等,所有這些都連接到 vbr0。

使用 VLAN 並不是絕對必要的(可以假設所有內容都在非 VLAN/本機 VLAN 上),但如果有天才可以向我展示如何配置(例如,使用本機 VLAN 50 啟用標記的 dot1q 流量) vnic0、vnic1上的本機VLAN 51 等等,以及eth0 作為中繼(允許所有或部分VLAN 沿著其傳輸),嚴重的獎勵分將歸於您。 :)

我已經嘗試過以下操作:

modprobe dummy
ip link set name vnic0 dev dummy0
ip link add vbr0 type bridge
ip link eth0 down
ip link set dev eth0 master vbr0
ip link set dev vnic0 master vbr0
ip link set vbr0 up
ip link set vnic0 up
ip link set eth0 up

最大的問題是我的 vnic0 網路廣播資料包,但從未接收到它們。我的網路不是很活躍,但我希望至少能看到 vnic0 透過 vbr0 接收到的一些廣播封包。然而,這並沒有發生。儘管有一個連接到 eth0 的功能完美的 DHCP 伺服器,但嘗試在連接到 vnic0 的虛擬機器內執行 DHCP 會導致逾時。

答案1

不要使用虛擬設備

這種情況經常出現,我不知道為什麼人們堅持使用它們。虛擬設備僅有用允許長期存在的應用程式綁定到特定的 IP 位址,因此如果需要,可以移動虛擬設備並橋接到其他壽命較短的設備。

你想要的是一個麥克夫蘭或幾個替換您的vnic*.儘管有這個名稱,macvlan 與 VLAN 標記無關。 macvlan 將在第 2 層上運行,並且已經橋接到主介面 ( eth0),如果需要,您可以選擇可能限制橋接裝置互動的多種模式之一。

答案2

虛擬乙太網路介面是成對創建的虛擬接口,其作用類似於跳線:

ip link add name nic0 type veth peer name vnic0 address 00:11:22:33:44:55
ip link set dev eth-VM master vbr0
ip link set nic0 up
ip link set vnic0 up

您最終應該得到一個vnic0可以分配給虛擬機器的鬆散的 00:11:22:33:44:55 MAC 位址。它們在麥克夫蘭上面提到的頁面。我對 macvlan 不太了解,但這應該也能工作,而且你不會使用bridge vbr0

ip link add link eth0 name vnic0 address 00:11:22:33:44:55 type macvlan mode bridge
ip link set vnic0 up

相關內容