Neutron 为 instance 提供了两种管理网络安全的方法:linux
安全组(Security Group)和虚拟防火墙。安全
安全组的原理是经过 iptables 对 instance 所在计算节点的网络流量进行过滤。网络
虚拟防火墙则由 Neutron Firewall as a Service(FWaaS)高级服务提供。
其底层也是使用 iptables,在 Neutron Router 上对网络包进行过滤。ssh
这两种安全方案咱们都会讨论,本章先重点学习安全组。学习
每一个 Project(租户)都有一个命名为 “default” 的默认安全组。测试
点击菜单 Project -> Compute -> Access & Security,查看 Security Group 列表。google
点击按钮,查看 “default” 安全组的规则。spa
“default” 安全组有四条规则,其做用是:
容许全部外出(Egress)的流量,但禁止全部进入(Ingress)的流量。网络安全
当咱们建立 instance 时,能够在 “Access & Security” 标签页中选择安全组。
若是当前只有 “default” 这一个安全组,则会强制使用 “default” 。ip
当前在 devstack-controller 上有 instance “cirros-vm1”。
在 devstack-controller 上执行 iptables-save 命令查看相关规则。
iptables 的规则较多,这里咱们节选了 cirros-vm1 相关的规则。
这些规则是 Neutron 根据安全组自动生成的。
若是你们想深刻理解 iptables,可 google 相关文档。
cirros-vm1 的 TAP interface 为 tap8bca5b86-23,能够看到:
1. iptables 的规则是应用在 Neutron port 上的,port 在这里是 cirros-vm1 的虚拟网卡 tap8bca5b86-23。
2. ingress 规则集中定义在命名为 “neutron-linuxbri-i8bca5b86-2” 的 chain 中。
3. egress 规则集中定义在命名为 “neutron-linuxbri-o8bca5b86-2” 的 chain 中。
下面咱们经过 dhcp namespace 对 cirros-vm1 进行 ping 和 ssh 测试。
没法 ping 和 ssh cirros-vm1,可见当前的规则实现了 “default” 安全组,全部 ingress 流量都被禁止。
下节咱们会建立新的安全组容许 ping 和 ssh。