Linux

在 KVM 主機上配置 IPTables 以阻止訪客網橋流量

  • May 16, 2020

我正在做一個論文研究項目,我很難弄清楚如何iptables(在 KVM 主機上執行)阻止流向 BRIDGED KVM 來賓的流量(或者更確切地說,操縱流量)。我無法獲取iptables條目(粘貼在下面)來阻止進出虛擬機的流量。

實際上,我希望我的主機系統充當這些來賓 VM 的防火牆,目前,我想通過簡單地丟棄所有發往特定 VM 的數據包來測試此功能。在不遠的將來,我還想實現更精細的控制,甚至涉及代理。同樣,這應該完全發生在 HOST 級別,而不是GUEST 級別。

我正在執行 CentOS 6,並且基於我寫的另一個問題:使用一個 NIC 為 Linux KVM 創建多個介面,我配置了以下介面:

eth0
br0
tap0

以下是每個介面的網路設置腳本:

eth0的配置:

DEVICE="eth0"
BOOTPROTO="none"
NM_CONTROLLED="no"
ONBOOT=yes
TYPE="Ethernet"
UUID="<<UUID-HERE>>"
HWADDR=<<MAC-ADDR-HERE>>
DEFROUTE=yes
PEERDNS=yes
PEERROUTES=yes
IPV4_FAILURE_FATAL=yes
IPV6INIT=no
NAME="System eth0"
BRIDGE="br0"

br0的配置:

DEVICE="br0"
TYPE="Bridge"
ONBOOT="yes"
BOOTPROTO="dhcp"
DELAY=0

tap0的配置:

DEVICE="tap0"
TYPE="Tap"
BRIDGE="br0"
ONBOOT="yes"

我有一個 CentOS 6 VM 正在執行,它被配置為使用tap0橋接介面。VM 上的網路工作正常。沒有對主機系統進行其他更改。

以下是iptables我添加到FORWARD鏈中的無效規則(值得注意的是,我還不是專家iptables

sudo iptables -I FORWARD -i any -o tap0 -j DROP
sudo iptables -I FORWARD -i tap0 -o any -j DROP

執行命令後,FORWARD表格如下所示:

Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target     prot opt in     out     source               destination         
   0     0 DROP       all  --  tap0   any     anywhere             anywhere            
   0     0 DROP       all  --  any    tap0    anywhere             anywhere            
   0     0 REJECT     all  --  any    any     anywhere             anywhere            reject-with icmp-host-prohibited 

不幸的是,這不會阻塞交通。我不明白為什麼這不起作用。

**更新:2014 年 11 月 25 日:**自從我上次更新以來已經有一段時間了。事實證明,iptablesphysdev外掛,這實際上是我在研究中成功使用的,並且更靈活ebtables

確保您了解此處涉及的網路基礎知識。網橋是交換機,在第 2 層執行。您的iptables規則適用於第 3 層,不會在此級別通過。

在那裡查看ebtables並指定第 2 層規則 - 或者 - 完全禁用網橋的使用並轉移到所有流量都通過第 3 層主機傳遞的路由設置。不確定後一個選項是否可以使用 Libvirt/KVM。

如果你這樣做:

echo 1 > /proc/sys/net/bridge/bridge-nf-call-iptables

它將在網橋上啟用 netfilter,然後您可以在 FORWARD 鏈上設置 iptables 規則,以影響通過網橋介面進出虛擬機的數據包。

要使其在重新啟動時永久生效:

編輯/etc/sysctl.conf和設置net.bridge.bridge-nf-call-iptables = 1

https://wiki.libvirt.org/page/Net.bridge.bridge-nf-call_and_sysctl.conf

儘管 wiki 說這樣做是不可取的,但我多年來一直在這樣做。它允許我在 FORWARD 鏈上設置黑名單和其他 iptables/ipset 規則,這些規則全域適用於所有 VM。它在中等負載的伺服器上執行良好。

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