Iptables
libvirt 和主機防火牆
嗨!
我將 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。