Centos

CentOS、KVM、VLAN 和橋接

  • November 2, 2015

我需要幫助為使用 KVM 的虛擬訪客設計網路。我的機器執行的是 CentOS 7 並且有 2 個網卡。我想實現以下目標

  • 一個物理介面 (em1) 只能用於主機訪問。主機將具有非常正常的配置,其中包含未標記的流量和靜態 IP 地址。
  • 另一個物理介面 (em2) 接收不同 VLAN 的標記流量。
  • 虛擬機只能看到其特定 VLAN 的流量。訪客間通信不需要在 KVM 內完成。
  • 我希望虛擬 NIC 上的流量不被標記,以確保來賓不會更改其內部 NIC 配置來欺騙其他網路。

連結到概念圖

我是 libvirt 的新手,也不習慣網路管理器。我搜尋了文件,但發現了相互矛盾的資訊,首先是是否可以通過網路管理器配置此橋接的問題。我還閱讀了關於讓 KVM 進行切換的可能性。

我將不勝感激直接的配置幫助或指向不使用(在 CentOS 7 上)不推薦使用的工具或同時解決問題的解決方法的最新文件的指針。

提前致謝。

你想要的,雖然有用,但不是很直接。基本上,您有 3 種可能性:

  1. 使用 Open vSwitch 堆棧來虛擬化網橋/交換機
  2. 為每個 VLAN 使用專用的軟體橋接器
  3. 在最近的核心上,可以使用“網橋 VLAN 過濾器”功能來擁有一個“智能”網橋來統治它們

解決方案 n.1(可能)是最完整的,但最難設置。

解決方案 n.2是我在實驗室測試中採用的。例如,對於 VLAN 10 和 20,您必須創建類似的設置:

eth0(物理介面)-> eth0.10(VLAN 標記)-> br10(帶有 eth0.10 和相關虛擬 qemu/kvm 介面的橋接)
eth0(物理介面)-> eth0.20(VLAN 標記)-> br20(帶有 eth0.20 和相關虛擬 qemu/kvm 介面的橋接)

請注意,如果您還需要在標記的網橋上擁有未標記的流量,則必鬚髮出以下 ebtables 規則: ebtables -t broute -A BROUTING -i eth0 -p 802.1Q -j DROP 由於 Linux 網路堆棧如何管理傳入的數據包,因此需要此規則。有關更多資訊,請參見此處此處此處

解決方案 n.3應該是一個聰明的解決方案,但您需要核心支持它(還有 libvirt)。CentOS7 應該有足夠的最新核心,但我不知道是否所有其他軟體都準備好了。

解決方案 n.4(獎勵一):如果您不需要訪客/主機通信,請查看 macvtap 驅動程序。雖然我不使用它,但您應該能夠設置類似的解決方案:

eth0(物理介面)-> eth0.10(VLAN 標記)-> eth0.10 上的 MAC vtap
eth0(物理介面)-> eth0.20(VLAN 標記)-> eth0.20 上的 MAC vtap

對我來說,無法與客人/主人交流是一個太大的限制,但您的要求可能會有所不同。

最後,看看這裡,值得一讀。

引用自:https://serverfault.com/questions/733312