Networking
KVM如何設置自己的netfilter規則?
我一直在 Centos 6.4 上使用 KVM VM,但我的 VM 上沒有 Internet 連接,我發現了一些奇怪的東西:
啟動機器後,iptables 在 FORWARD 鏈中有規則允許流量通過虛擬機,一切都很好。但是,當我執行
service iptables restart
時,它看起來像是從/etc/sysconfig/iptables
(拒絕所有轉發的預設設置)中提取了配置規則,因此,我已被降級為在物理主機上完全刪除防火牆或重新啟動以添加 FORWARD 規則所以它再次起作用。編輯:
確實,我可以自己修改防火牆規則以允許它,但這不是這個問題的重點。我更關注以下問題#1:
我的問題是:
- 這些 FORWARD 規則是在什麼時候(或通過什麼機制)添加的?
- 如何在不重新啟動機器的情況下恢復 FORWARD 規則?
坦率地說,我什至不確定從哪裡開始搜尋這個問題。我發現這個頁面說要
/etc/sysctl.conf
使用以下變數進行修改,據稱這些變數會使 netfilter 忽略到橋接連接的流量:net.bridge.bridge-nf-call-ip6tables = 0 net.bridge.bridge-nf-call-iptables = 0 net.bridge.bridge-nf-call-arptables = 0
問題在於 my
sysctl.conf
已經這樣設置了,而 netfilter 仍然在做它的事情,很高興地阻止了 VM 的所有內容。
KVM 本身除了執行 VM 什麼都不做。iptables 規則由 libvirt 制定,(或者如果你正在做一些硬核和手動操作,則使用 qemu-ifup 腳本)
在任何情況下,如果您想避免 iptables 的複雜性,請不要在 NAT 配置中使用虛擬機,而是改用網橋或 OVS。