zoukankan      html  css  js  c++  java
  • 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的报文。

    (3)如果加入了ethertype =ipv4, protocol = any ingress和egress两个方向的安全组,那么所有的ipv4的包都可以通过,包括所有的tcp,udp,icmp.

      

     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调用。

    
    
  • 相关阅读:
    图片轮播
    swoole 内存泄露的问题有没有好的办法解决
    学习Swoole需要掌握哪些基础知识
    通过SSH通道来访问MySQL
    redis常见应用场景
    Redis 消息队列的实现
    PHP-Curl模拟HTTPS请求
    代码重构方向原则指导
    win8.1系统相关
    SQL Server 学习系列之六
  • 原文地址:https://www.cnblogs.com/janeysj/p/6282000.html
Copyright © 2011-2022 走看看