我有一个标准的br0网桥设置我的KVM客人:
auto br0 iface br0 inet static address 192.168.1.117 netmask 255.255.255.0 network 192.168.1.1 broadcast 192.168.1.225 gateway 192.168.1.1 bridge_ports eth0 bridge_stp off bridge_fd 0 auto eth1 iface eth1 inet static address 10.0.0.117 netmask 255.255.255.0 gateway 10.0.0.1 broadcast 10.0.0.225
eth1保留给其他stream量,但客人可以简单地改变它的IP连接到它。
我试图实现的是,一旦访客尝试更改其IP地址或MAC地址(尝试join另一个networking/欺骗另一个访客),则将所有stream量都丢弃到主机/外部/其他客户端,
我尝试了很多接口(eth0,br0,tap0,tap +),但我似乎无法得到我的规则:
iptables -A INPUT -m physdev --physdev-in tap+ --physdev-out tap+ -s 192.168.1.205 -m mac ! --mac-source 52:54:5a:8d:77:8e -j DROP
IP转发已启用 – iptables中没有其他规则。 我错过了什么 – 甚至应该考虑尝试以另一种方式实现这一目标?
据我所见,你不能做一些你需要做的iptables的事情。 您需要在网桥级别进行过滤。 你可能应该看看ebtables – 这就像桥梁的iptables。
手册: http : //ebtables.sourceforge.net/misc/ebtables-man.html
我试图为你的问题做一个简单的iptables规则集的模板,试试这个:
iptables -t filter -A FORWARD -m physdev --physdev-in $LINK_FOR_THE_VM --physdev-is-bridged -j ${VMID}-out iptables -t filter -A ${VMID}-out -m mac ! --mac-source $MAC_ADDR_FOR_THE_VIRTUAL_NIC -j DROP iptables -t filter -A ${VMID}-out -s 0.0.0.0/32 -d 255.255.255.255/32 -p udp -m udp --sport 68 --dport 67 -j ACCEPT iptables -t filter -A ${VMID}-out ! -s $PERMITTED_IP_ADDR_FOR_THE_VM -j DROP iptables -t filter -A ${VMID}-out -j RETURN
这里是一个例子:
iptables -t filter -A FORWARD -m physdev --physdev-in vm10 --physdev-is-bridged -j 10-out iptables -t filter -A 10-out -m mac ! --mac-source 52:54:5a:8d:77:8e -j DROP iptables -t filter -A 10-out -s 0.0.0.0/32 -d 255.255.255.255/32 -p udp -m udp --sport 68 --dport 67 -j ACCEPT iptables -t filter -A 10-out ! -s 192.168.1.205 -j DROP iptables -t filter -A 10-out -j RETURN