Openstack Nova docker实现安全组

现在容器通过nova-docker项目中的veth对(ns和tap)直接连接到OVS桥。

如下:

容器<===> nsXXX <===> tapXXX <===> br-int

我为每个容器创build了一个Linux桥(qbr),并在Linux桥和OVS桥之间使用了veth对连接(qvb和qvo),并且在Linux桥和容器之间使用了veth对连接(ns和ms) 。

如下:

容器<===> nsXXX <===> msXXX <===> qbrXXX <===> qvbXXX <===> qvoXXX <===> br-int

我用nsXXX的MAC(1e:b0:df:a3:e7:fa)和设备nsXXX的规则(即后面的$ DEVICE)添加了一条规则。

如下:

iptables -A neutron-openvswi-sa04f7303-2 -s 10.0.0.43/32 -m mac \ --mac-source 1e:b0:df:a3:e7:fa -j RETURN iptables -A neutron-openvswi-FORWARD -m physdev --physdev-out \ $DEVICE --physdev-is-bridged -j neutron-openvswi-sg-chain iptables -A neutron-openvswi-FORWARD -m physdev --physdev-in \ $DEVICE --physdev-is-bridged -j neutron-openvswi-sg-chain iptables -A neutron-openvswi-INPUT -m physdev --physdev-in \ $DEVICE --physdev-is-bridged -j neutron-openvswi-o$ID iptables -A neutron-openvswi-sg-chain -m physdev --physdev-out \ $DEVICE --physdev-is-bridged -j neutron-openvswi-i$ID iptables -A neutron-openvswi-sg-chain -m physdev --physdev-in \ $DEVICE --physdev-is-bridged -j neutron-openvswi-o$ID 

不幸的是,它不工作:不同的安全组中的虚拟机可以连接到它。

有人可以告诉我原因吗?