Linux

如何要求所有網路活動在到達主機之前通過 KVM 訪客防火牆?

  • December 8, 2015

我遇到的大部分資訊都傾向於使用橋接連接來設置 KVM 防火牆。

據我了解,如果網路流量無需先通過防火牆即可到達主機,這是一種安全風險。

我已經看到主網卡(例如eth0)被設置為虛擬機網卡,但這是否排除了主機訪問eth0

想到的另一個選項是 NIC 的 PCI 直通,但是我遇到了該方法的問題。

是否有任何其他方法要求主機流量首先通過防火牆?你推薦使用什麼方法?

第一個想法是分離哪些介面用於添加對 VM 的網路訪問,哪些介面用於控制主機。第三組介面通常用於訪問某種網路共享儲存上的 VM 映像。因此,理想情況下您有 6 個介面:4 個千兆乙太網和 2 個十千兆乙太網。

第二個想法是您可以為主機和虛擬機使用不同的 802.1q VLAN。我已經建立了一個網路,其中我們在三個不同的 VLAN 中有 VM,有時一個 VM 可以參與多個 VLAN(通過創建多個虛擬 NIC 並將它們與主機上的多個不同 VLAN 橋接)

注意伺服器硬體通常有一個BMC,用於對主機進行帶外控制。本質上,這是一台可以訪問主機感測器的小型電腦,它可以看到值(溫度、風扇轉速)、電源開/關/重置主機,就像你按下按鈕一樣,甚至具有 IP KVM 功能等等,它有自己的網路地址。它通常還實現 IPMI 協議。它經常被暴露為與 LAN1 共享(即像一個小型交換機,而不是完全交換機 - 主機和 BMC 無法通信,但它們都與外部設備通信)或單獨路由到 BMC 的獨立乙太網插孔。刀片系統每個機箱可能有一個或兩個(冗餘)BMC,而不是在每個刀片伺服器中。

安全設置如下所示:

bond0 是由 LACP 組合而成的 (eth0, eth1),它在主機中有一個 IP 地址,用於控制主機。

bond1 是 (eth2, eth3) 由 LACP 組合而成。它與vlans分開,即主機具有bond1.10,bond1.552虛擬子介面等。創建了橋接:br10橋接bond1.10和參與vlan 10的VM的所有VM主機端介面,br552橋接bond1.552以及 vlan 522 的所有 VM 主機端等。這些介面都沒有 IP 地址,因此 VM 無法與主機通信。

bond2 是(eth4,eth5)組合,用於通過 iSCSI,CEPH 訪問 VM 磁碟鏡像,同步 DRBD 等。它在主機上有一個IP,但由於它的特殊要求連接到完全獨立的儲存網路。

建議bond0和bond1在物理上是分開的,因為虛擬機不僅不能與主機通信,甚至不能飽和主機的控製網路。例如,該網路用於在實時遷移到其他主機時傳輸虛擬機的記憶體內容,並且沒有 VM 可以使此過程的性能飽和。

即使您正在建構具有一個物理介面來託管五個虛擬機並且必須結合bond0和bond1的功能的小型系統,您也可以僅在物理介面(可作為預設/本機vlan訪問)和參與網橋的子介面上擁有IP地址帶有 VM 主機端適配器,均已標記。仍然VM不能直接訪問主機,智能L2交換機和單獨的防火牆設備或L3交換機單獨可以做VLAN間路由和流量過濾。

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