neutron openvswitch agent实现安全组的方法
关于openstack安全组,采用一问一答的形式记录如下
1. 是加载在计算节点的还是网络节点的?
是加载在计算节点的
2. 是使用iptable规则实现的吗?
M版的neutron实现了openvswitch 基于流表的防火墙
之前常见的是用iptables实现的,一般会创建neutron-openvswi-XXX链
3. iptables实现的防火墙方法中,添加的规则都是accept,其余的包都是drop的吗?
是的添加的规则一般都在最后默认drop规则的前面return掉。安全组利用iptables实现原理如下
其中需要说明两点
(1). ipset
0 0 RETURN all -- any any anywhere anywhere match-set NIPv4de0fc679-6a26-43d6-a3f6- src,规则的意思是利用ipset来指定src集合,在这个集合中的srcIP报文都可以通过。
通过命令ipset list可以查看到所有的ipset集合
[root@node-129 var]# ipset list
Name: NIPv4de0fc679-6a26-43d6-a3f6-
Type: hash:net
Revision: 3
Header: family inet hashsize 1024 maxelem 65536
Size in memory: 16816
References: 1
Members:
192.168.188.19
Name: NIPv6de0fc679-6a26-43d6-a3f6-
Type: hash:net
Revision: 3
Header: family inet6 hashsize 1024 maxelem 65536
Size in memory: 17552
References: 1
Members:
(2).security-group 远端
如果选择一个安全组作为来访源地址,则该安全组中的任何云主机实例都被允许使用该规则访问任一其它云主机。
例如host-1绑定安全组default, host-2绑定安全组secg1, 这时在default中添加一条规则并且指定远程为secg1, 那么这条规则适用于src-ip是host-2的报文。
4. neutron-openvswitch-agent实现firewall的代码结构是怎么样的?
(1) 首先在/etc/neutron/plugins/ml2/openvswitch_agent.ini 中设置firewall_driver的类名(用于指定加载类的路径),并打开安全组开关。
#firewall_driver = <None>
#firewall_driver = neutron.agent.linux.iptables_firewall.OVSHybridIptablesFirewallDriver
firewall_driver = neutron.agent.linux.openvswitch_firewall.OVSFirewallDriver
enable_security_group = true
(2) 所有的firewall基于父类FirewallDriver,每种firewall都需要实现该父类的几个接口;
prepare_port_filter : port创建时调用一次,初始化安全组信息
apply_port_filter
update_port_filter : port安全组更新时被调用
remove_port_filter : port安全组删除时被调用
filter_defer_apply_on
filter_defer_apply_off
ports
defer_apply
update_security_group_members
update_security_group_rules
security_group_updated
这些接口由securitygroups_rpc.py调用。
neutron openvswitch agent实现安全组的方法的更多相关文章
- 理解 OpenStack 高可用(HA)(2):Neutron L3 Agent HA 之 虚拟路由冗余协议(VRRP)
本系列会分析OpenStack 的高可用性(HA)概念和解决方案: (1)OpenStack 高可用方案概述 (2)Neutron L3 Agent HA - VRRP (虚拟路由冗余协议) (3)N ...
- JVM插码之五:Java agent+ASM实战--监控所有方法执行时间
本文建立在对instrumentation和agent有初步的了解的前提下阅读,关于这2个类的讲解在其它文章中. 这是一个maven项目,pom中需要的配置,lib中有asm的jar包 pom.xml ...
- 2019-10-30-C#-dotnet-core-局域网组播方法
title author date CreateTime categories C# dotnet core 局域网组播方法 lindexi 2019-10-30 9:0:48 +0800 2019- ...
- Development of a High Coverage Pseudotargeted Lipidomics Method Based on Ultra-High Performance Liquid Chromatography−Mass Spectrometry(基于超高效液相色谱-质谱法的高覆盖拟靶向脂质组学方法的开发)
文献名:Development of a High Coverage Pseudotargeted Lipidomics Method Based on Ultra-High Performance ...
- 3种用组策略将域帐号加入本地管理员组的方法_jinifly_新浪博客
次当前系统域帐号是怎么在第一次登录时,自动加入域客户端本地管理员组的?我猜不外乎就是脚本.计算机策略或虚拟机初始化的自动应答脚本,结果系统的前任同事找到了答案--GPO的用户策略(确切讲是用户首选项) ...
- javascript----数组的方法
1---join() //1----->join()方法将数组中所有元素都转化<<字符串>> //并连接在一起 //array.join()方法是string.split ...
- 删除新版UniAccess Agent 办公室监控软件的方法
UniAccess Agent 是在由LeagSoft开发的监控软件,老版本的一般安装在C:\Program Files\LeagSoft\UniAccess Agent这个目录下,一般找到这个目录点 ...
- MySQL学习笔记:三种组内排序方法
由于MySQ没有提供像Oracle的dense_rank()或者row_number() over(partition by)等函数,来实现组内排序,想实现这个功能,还是得自己想想办法,最终通过创建行 ...
- c#Udp分包组包方法
udp通信协议,相信大家都知道这个.由于是无连接的协议,所有udp的传输效率比tcp高.但是udp协议传输较大的数据文件得分包 最近写了个分包组包的方法,拿来和大家分享,如果有什么不妥的地方,欢迎点评 ...
随机推荐
- .Net程序员学用Oracle系列(10):系统函数(下)
<.Net程序员学用Oracle系列:导航目录> 本文大纲 1.转换函数 1.1.TO_CHAR 1.2.TO_NUMBER 1.3.TO_DATE 1.4.CAST 2.近似值函数 2. ...
- python之路 - 基础4
1.函数非固定参数 *args *kwargs def test(*args): print (args) test(1,2,3,4,5) test(*[1,2,3,4,5]) #*args = *[ ...
- UIImage学习笔记
UIImage是什么 用来管理APP里的图片资源,可以用来表示设备支持的图片资源,不仅仅是jpg和png. UIImage是immutable的,因此也是线程安全的. iOS支持的所有的图片格式 链接 ...
- unity中的委托
中午在做一个 数据点击然后 想把当前的Gameobject传过去,但是想了好久就是弄不出来. 之后网上看了下委托,抱着试试的心态,结果成功了 委托的定义 private delegate void C ...
- 距离VR时代的真正到来还有多久?
2016年被称为是VR元年,各大VR设备商的宣传攻势铺天盖地,众VR产品看的人眼花缭乱.随着平民化进程不断推进以及渗透率的提升,VR成为近两年来最引人关注的焦点,在众多领域的共同作用下,VR时代是否即 ...
- 启用div作为编辑器 添加contentEditalbe属性
1.自从HTML5中新引入了contentEditalbe属性以后,div就与textarea一样,可以作为最常用的编辑器使用. 1.启用div作为编辑器 让div进入编辑状态很简单,只需要: 复制代 ...
- Linux进程通信——管道
管道(pipe)本质上是一种文件,管道通信本质上是通过读写文件通信,但是管道解决了文件的两个问题:限制管道大小,解决read()调用文件结束问题. 管道一个环形的缓冲区,通过两个进程以生产者/消费者的 ...
- [Q]打印机页边距设置
问题描述:当您在使用CAD批量打图精灵默认设置打印图纸(使用pdfFactory虚拟打印机),可能会发现打印出的图纸页边距比您手工打印(使用Adobe或系统打印机)的要偏大. Adobe虚拟打印机打印 ...
- 敏捷开发(七)- SCRUM评估会议
本文主要是为了检测你对SCRUM 评估会议的了解和使用程度, 通过本文你可以检测一下 1.你们的SCRUM 评估会议的过程和步骤 2.SCRUM 评估的输出结果一.会议目的 1 ...
- SEO之关键词选择
在网站优化中,关键词应该是奠基石,选择好关键词的重要性也不言而喻了.怎样选择合理化的关键词呢?这个是我今天了解到的. 1.选择的关键词首先是有人搜索过的.没人搜索的词优化就是浪费时间. 2.做有效流量 ...