实践 Neutron FWaaS - 每天5分钟玩转 OpenStack(118)
前面我们学习了 FWaaS 的理论知识,今天将通过实验来学习 FWaaS。
在我们的实验环境中,有两个 instance: cirros-vm1(172.16.100.3) 和 cirros-vm2(172.16.101.3)。
cirros-vm1 和 cirros-vm2 分别位于网络 vlan100 和 vlan101。 vlan100 和 vlan101 之间由虚拟路由器 test_router 连接。 网络拓扑如下:
在 test_router 没有应用任何 FWaaS 的情况下,cirros-vm1 可以通过 ping 和 ssh 跨网络访问 cirros-vm2。
下面我们将进行如下实验: 1. 创建一个不包含任何 rule 的 firewall “test_firewall” 并应用到 test_router。
此时 FWaaS 生效,默认情况下会阻止任何跨子网的流量。
2. 创建 rule 允许 ssh,并将其添加到 test_firewall。此时 cirros-vm1 应该能够 ssh cirros-vm2。
应用无 rule 的 firewall
点击菜单 Project -> Network -> Firewalls,打开 Firewall Policies 标签页面。
目前没有定义任何 Policie。
点击按钮,显示Policy 创建页面。
将 Policy 命名为 “test_policy”,直接点击 “Add” 按钮。
这样我们创建的 test_policy 不包含任何 Rule。
进入 “Firewalls” 标签页,点击 “Create Firewall” 按钮
将新的 Firewall 命名为 “test_firewall”,并关联 “test_policy”。
在 “Routers” 标签页中选择 “test_router”。
点击 “Add” 创建 firewall。
等待 test_firewall 的 Status 变为 “Active”,此时 test_router 已经成功应用 test_policy。
可以通过 iptables-save 查看 router namespace 的 iptables 规则
为了让大家了解底层到底发生了什么变化,下面用 vimdiff 显示了应用 test_firewall 前后 iptables 规则的变化。
下面我们来分析一下这些规则。
route 在转发数据包时会使用 chain:
-A FORWARD -j neutron-vpn-agen-FORWARD
neutron-vpn-agen-FORWARD 的规则如下:
-A neutron-vpn-agen-FORWARD -o qr-+ -j neutron-vpn-agen-iv4e85f4601
-A neutron-vpn-agen-FORWARD -i qr-+ -j neutron-vpn-agen-ov4e85f4601
-A neutron-vpn-agen-FORWARD -o qr-+ -j neutron-vpn-agen-fwaas-defau
-A neutron-vpn-agen-FORWARD -i qr-+ -j neutron-vpn-agen-fwaas-defau
我们以第一条为例,其含义是:从 router namespace 任何一个 qr-* interface 发出
的流量都会应用 chain neutron-vpn-agen-iv4e85f4601,该 chain 定义如下:
-A neutron-vpn-agen-iv4e85f4601 -m state --state INVALID -j DROP
-A neutron-vpn-agen-iv4e85f4601 -m state --state RELATED,ESTABLISHED -j ACCEPT
其规则为:
1. 如果数据包的状态为 INVALID,则 DROP。
2. 如果数据包的状态为 RELATED 或 ESTABLISHED,则 ACCEPT。
其他正常传输的数据怎么处理呢?
回到 neutron-vpn-agen-FORWARD chain 的下一条关于 router 外出数据的规则:
-A neutron-vpn-agen-FORWARD -o qr-+ -j neutron-vpn-agen-fwaas-defau
neutron-vpn-agen-fwaas-defau 内容为:
-A neutron-vpn-agen-fwaas-defau -j DROP
可见,数据会被丢弃。
同样的道理,router 上所有进入 qr-* interface 的数据也会被丢弃。
其结论是:在没有定义任何 firewall rule 的情况下,进出 router 的数据包都会被丢弃。
ping 和 ssh 测试表明目前 cirros-vm1 确实已经无法与 cirros-vm2 通信。
下节添加新的规则允许 ssh,之后我们也会比较安全组和 FWaaS 的异同。
实践 Neutron FWaaS - 每天5分钟玩转 OpenStack(118)的更多相关文章
- 理解 Neutron FWaaS - 每天5分钟玩转 OpenStack(117)
前面我们学习了安全组,今天学习另一个与安全相关的服务 -- FWaaS.理解概念 Firewall as a Service(FWaaS)是 Neutron 的一个高级服务.用户可以用它来创建和管理防 ...
- FWaaS 实践: 允许 ssh - 每天5分钟玩转 OpenStack(119)
上一节应用了无规则的虚拟防火墙,不允许任何流量通过. 今天我们会在防火墙中添加一条规则,允许 ssh.最后我们会对安全组和 FWaaS 作个比较. 下面我们添加一条 firewall rule:允许 ...
- 两张图总结 Neutron 架构 - 每天5分钟玩转 OpenStack(74)
前面我们详细讨论了 Neutron 架构,包括 Neutron Server,Core 和 Service Agent.现在用两张图做个总结.先看第一张: 与 OpenStack 其他服务一样,Neu ...
- Neutron 架构 - 每天5分钟玩转 OpenStack(67)
前面我们讨论了 Neutron 的基本概念,今天我们开始分析 Neutron 的架构. Neutron 架构 与 OpenStack 的其他服务的设计思路一样,Neutron 也是采用分布式架构,由多 ...
- 实践 config drive - 每天5分钟玩转 OpenStack(170)
如果 instance 无法通过 metadata service 获取 metadata(无 DHCP 或者 nova-api-metadata 服务),instance 还可以通过 config ...
- 动手实践虚拟网络 - 每天5分钟玩转 OpenStack(10)
本节将演示如何在实验环境中实现下图所示的虚拟网络 配置 Linux Bridge br0 编辑 /etc/network/interfaces,配置 br0. 下面用 vimdiff 展示了对 /et ...
- 动手实践 Linux VLAN - 每天5分钟玩转 OpenStack(13)
本节我们来看如何在实验环境中实施和配置如下 VLAN 网络 配置 VLAN 编辑 /etc/network/interfaces,配置 eth0.10.brvlan10.eth0.20 和 brvla ...
- 再次实践 MySQL chart - 每天5分钟玩转 Docker 容器技术(166)
学习了 chart 结构和模板的知识后,现在重新实践一次 MySQL chart,相信会有更多收获. chart 安装前的准备 作为准备工作,安装之前需要先清楚 chart 的使用方法.这些信息通常记 ...
- 实践 Network Policy - 每天5分钟玩转 Docker 容器技术(172)
为了演示 Network Policy,我们先部署一个 httpd 应用,其配置文件 httpd.yaml 为: httpd 有三个副本,通过 NodePort 类型的 Service 对外提供服务. ...
随机推荐
- 故障重现(内存篇2),JAVA内存不足导致频繁回收和swap引起的性能问题
背景起因: 记起以前的另一次也是关于内存的调优分享下 有个系统平时运行非常稳定运行(没经历过大并发考验),然而在一次活动后,人数并发一上来后,系统开始卡. 我按经验开始调优,在每个关键步骤的加入如 ...
- 设计爬虫Hawk背后的故事
本文写于圣诞节北京下午慵懒的午后.本文偏技术向,不过应该大部分人能看懂. 五年之痒 2016年,能记入个人年终总结的事情没几件,其中一个便是开源了Hawk.我花不少时间优化和推广它,得到的评价还算比较 ...
- 前端网络、JavaScript优化以及开发小技巧
一.网络优化 YSlow有23条规则,中文可以参考这里.这几十条规则最主要是在做消除或减少不必要的网络延迟,将需要传输的数据压缩至最少. 1)合并压缩CSS.JavaScript.图片,静态资源CDN ...
- Node.js:进程、子进程与cluster多核处理模块
1.process对象 process对象就是处理与进程相关信息的全局对象,不需要require引用,且是EventEmitter的实例. 获取进程信息 process对象提供了很多的API来获取当前 ...
- ASP.NET Core 1.0 使用 Dapper 操作 MySql(包含事务)
操作 MySql 数据库使用MySql.Data程序包(MySql 开发,其他第三方可能会有些问题). project.json 代码: { "version": "1. ...
- PHP的学习--RSA加密解密
PHP服务端与客户端交互或者提供开放API时,通常需要对敏感的数据进行加密,这时候rsa非对称加密就能派上用处了. 举个通俗易懂的例子,假设我们再登录一个网站,发送账号和密码,请求被拦截了. 密码没加 ...
- 总结30个CSS3选择器
或许大家平时总是在用的选择器都是:#id .class 以及标签选择器.可是这些还远远不够,为了在开发中更加得心应手,本文总结了30个CSS3选择器,希望对大家有所帮助. 1 *:通用选择器 ;; ...
- BAT“搅局”B2B市场,CIO们准备好了吗?
"CIO必须灵活构建其所在企业的IT系统,深入业务,以应对日新月异的数字化业务环境." BAT军团"搅局"B2B市场,CIO们准备好了吗? 庞大的企业级市场 ...
- iOS - 模态Model视图跳转和Push视图跳转的混合需求实现原理
在研发中总会遇到一些莫名的需求,本着存在即合理的态度跟大家分享一下"模态Model视图跳转和Push视图跳转的需求实现",本文仅仅传授研发技术不传授产品以及UE的思想,请大家合理对 ...
- 分享阿里云推荐码 IC1L2A,购买服务器可以直接打9折,另附阿里云服务器部署ASP.NET MVC5关键教程
阿里云推荐码为:IC1L2A 阿里云还是不错滴. 以windows server 2008 R2为例,介绍如何从全新的服务器部署MVC5 站点. 新购买的阿里云服务器是没有IIS的,要安装IIS: 控 ...