Iptables

libvirt 和主機防火牆

  • January 27, 2015

嗨!

我將 libvirt 與 kvm 一起使用,效果很好。我的願望是使用主機防火牆鎖定主機系統。直到今天,我一直使用shorewall 作為我選擇的iptables 管理工具。但這與 libvirt 的 iptables 管理相衝突。我使用 libvirt 為 kvm 來賓配置 NAT。Libvirt 使用 iptables 為它設置 MASQ,效果很好。但是一旦shorewall啟動,它就會刷新iptables並根據shorewall文件中的配置進行設置。然後我嘗試將所有 libvirt iptables 規則“翻譯”到shorewall,以防止失去功能。但這只是部分有效,無論如何都是一個醜陋的黑客。一旦我使用 libvirt 為來賓更改網路配置,我也必須對shorewall 進行更改。那麼,保護主機系統以及使用 libvirt 管理 kvm 來賓網路的正確方法是什麼?在 CentOS 世界中 libvirt 是否與 firewalld 相結合?快樂!

也許你可以使用 libvirt 的鉤子腳本。你編寫一個 shell 腳本,一旦你的 VM 啟動,libvirt 就會執行該腳本。

/etc/libvirt/hooks/qemu在裡面創建文件:

   #!/bin/bash
   if [ "${1}" = "<the name of your vm>" ] ; then
     VM_NAME=${1}
     VM_IP=172.16.20.10
     if [ "${2}" = "prepare" ] ; then
       iptables -t nat -I POSTROUTING -s ${VM_IP} -o eth0 \
           -m comment --comment "${VM_NAME} nat" -j MASQUERADE
     elif [ "%{2}" = release" ] ; then
       iptables -t nat -D POSTROUTING -s ${VM_IP} -o eth0 \
           -m comment --comment "${VM_NAME} nat" -j MASQUERADE
   fi

確保<the name of yout vm>適當地替換 VM_IP 的 和 值。使文件也可執行:chmod +x /etc/libvirt/hooks/qemu.

現在,每次 libvirt 啟動您的 VM 時,它都會準備 NAT 配置,並且在 VM 停止後,將取消配置 NAT。

有關更多資訊,您可以查看此處此處

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