libvirt nwfilter 破壞其他虛擬機器的網絡

libvirt nwfilter 破壞其他虛擬機器的網絡

我剛從VirtualBox 切換到帶有KVM 的Virt Manager,我對這次切換非常滿意(我最初的動機是透過放棄Virtualbox 和vanilla Proxmox 轉而使用libvirt,為桌面虛擬機和伺服器虛擬機使用相同的虛擬化)。也就是說,我真的不知道自己在做什麼,所以我可以尋求一些幫助。

我在 Debian 主機上執行 Debian VM。我在主機上定義了一個簡單的橋接器(在 /etc/network/interfaces 中),並將所有虛擬機器放在上面。主機運行 UFW 預設配置。一切都很愉快,直到我嘗試使用 nwfilters。

我定義了一個過濾器 (virsh nwfilter-define) 並將其新增至 VM“my-vm1”(在 my-vm1 的網路設備中又稱為 reffilter filter='my-vm1-filter')。「my-vm1」的流量按預期進行過濾,但其他虛擬機器令人困擾地失去連接

  • 重新啟動這些其他虛擬機器沒有幫助:看起來它們無法執行 DHCP
  • 停止 my-vm1 沒有幫助
  • 要恢復其他虛擬機器上的網絡,需要重新啟動主機而不啟動 my-vm1
  • 我試圖理解啟動 my-vm1 後 iptables -L 的變化,但它很令人困惑。但我首先對 iptables 一無所知。

第一個問題:使用 nwfilters 是否有我錯過的眾所周知的問題或步驟或限制?

如果沒有,建議下一步嘗試什麼?很高興學習與我的問題相關的新事物。

答案1

如果有人登陸這裡,這裡有一些進展:

  • 我意識到 nft 會給我比舊帖子引用的 iptables 更好的畫面。據我了解,libvirt 現在使用 nftables
  • 事實證明 ufw 不能很好地與 libvirt 配合使用:如果我禁用它,那麼我的問題就會消失,而其他沒有任何 nwfilter 的虛擬機也可以正常工作。
  • 在某處讀到,firewalld 可能與 libvirt 配合使用效果更好,但還沒有嘗試過

編輯:對於像我這樣的菜鳥來說,firewalld 確實至少對於我的簡單用例來說運作得更好:

  • 將主機橋放入“libvirt”區域
  • 該區域的服務、連接埠等僅適用於主機傳入流量(不適用於可以依賴其自己的 nwfilter 的虛擬機器)
  • libvirt 區域的目標必須保持「接受」(不丟棄也不拒絕):有點違反直覺,主機不接受服務/連接埠未覆蓋的資料包,但「接受」對於虛擬機器流量是必要的。

相關內容