OpenStack Neutron的安全組默認會對每個網口開啟MAC/IP過濾功能(防arp欺騙),不是該網口的MAC/IP發出的包會被宿主機丟棄。這種限制會導致vNF的上行網口轉發的數據包被丟棄,無法到達vRouter。關閉安全組有兩種方法
第一種是整體關閉
# /etc/neutron/plugins/ml2/openvswitch_agent.ini
firewall_driver=None
整體關閉的弊端是所有的端口不在受安全組保護,私有雲尚且可以,公有雲會帶來安全隱患
局部關閉
OpenStack Neutron的MAC/IP過濾是利用宿主機的iptables實現的,因此可以通過修改iptables配置來達到局部關閉的效果,具體步驟如下:
為每個租戶創建完畢vNF后,從后台進入宿主機,找到對應網口的tap設備,記下tap后面的id,例如sc5695d00-9。
iptables --line-numbers -nvL | grep ${id}
利用iptables -D ...刪除掉對應條目
另一種比較優雅的局部關閉方法是使用OpenStack Cli,可以關閉指定的port的安全組:
opnestack port set --no-security-group <port>
openstack port set --disable-port-security <port>
也可以為port添加允許通過的MAC/IP
openstack port set --allowed-address ip=address=<ip-address>, mac-address=<mac-address> <port>