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协议传输较大的数据文件得分包 最近写了个分包组包的方法,拿来和大家分享,如果有什么不妥的地方,欢迎点评 ...
随机推荐
- c++字符串连接方法大观
c++字符串连接方法大观 抛砖引玉: springf(config_itemID[i],"ItemID%s_%d",i,i); 大家说说自己都用什么方法,个有什么利弊呢?
- 常见缓存算法和LRU的c++实现
对于web开发而言,缓存必不可少,也是提高性能最常用的方式.无论是浏览器缓存(如果是chrome浏览器,可以通过chrome:://cache查看),还是服务端的缓存(通过memcached或者red ...
- ubuntu 14.04中Elasticsearch 2.3 中 Nginx 权限认证
前言:本文实现了nginx简单保护elasticsearch,类似的保护也可以采用elasticsearch 官方插件shield 一.准备密码 1.确认htpasswd是否已经安装 which ht ...
- JMeter在Linux系统中的环境变量配置
下载: 在线下载jmeter(或者本地上传): wget http://mirrors.tuna.tsinghua.edu.cn/apache//jmeter/binaries/apache-jmet ...
- bzoj3504: [Cqoi2014]危桥 网络流
一种网络流建图的思路吧,改天最好整理一波网络流建图思路 #include <bits/stdc++.h> using namespace std; int n,h,t,a1,a2,an,b ...
- 详解一下网络广告cpc、cpm、cpl、cpa、cps、cpr的计费方法是什么
CPC(Cost per click)按照 广告 点击数 计费 ,限定一个IP在24小时内只能点击一次.CPM(Cost per mille)按照广告显示次数来计算广告费,可在短时间内为 网站 带来巨 ...
- Form 提交表单
---HTML <form action="/Sample/SampleList/ExportSample" style="display:inline" ...
- 使用ObjectInputStream和ObjectOutputStream注意问题
1.对象序列化,类实现Serializable接口 不需要序列化的属性,使用transient声明 2.使用套接字流在主机之间传递对象注意问题: 学习自:Socket同时使用ObjectInputSt ...
- win8 or win7安装ubuntu双系统
安装双系统的效果 现在使用win和linux双系统,整个环境相当方便好用,比如在Linux系统上,仍能访问NTFS(win的文件系统格式)中的文件和文档,当然win下的一些像matlab.vs等是不能 ...
- filter怎么在程序里写,不用再web.xml中配置