安装neutron的防火墙、VPN和负载均衡功能

来源:互联网 发布:知乎男朋友 编辑:程序博客网 时间:2024/06/01 07:45

功能简介

FWaaS

Firewall as a Service(FWaaS)是 Neutron 的一个高级服务。用户可以用它来创建和管理防火墙,在subnet的边界上对layer 3和layer 4的流量进行过滤。

传统网络中的防火墙一般放在网关上,用来控制子网之间的访问。FWaaS 的原理也一样,是在 Neutron 虚拟 router 上应用防火墙规则,控制进出租户网络的数据。FWaaS 有三个重要概念:

FirewallPolicyRule

Firewall
租户能够创建和管理的逻辑防火墙资源。Firewall 必须关联某个Policy,因此必须先创建Policy。

Firewall Policy
Policy是Rule的集合,Firewall会按顺序应用Policy中的每一条Rule。

Firewall Rule
Rule是访问控制的规则,由源与目的子网 IP、源与目的端口、协议、allow或deny 动作组成。例如,我们可以创建一条 Rule,允许外部网络通过 ssh 访问租户网络中的 instance,端口为 22。

与 FWaaS 容易混淆的概念是安全组(Security Group)。

安全组的应用对象是虚拟网卡,由 L2 Agent 实现,比如 neutron_openvswitch_agent 和 neutron_linuxbridge_agent。安全组会在计算节点上通过 iptables 规则来控制进出 instance 虚拟网卡的流量。也就是说:安全组保护的是 instance。

FWaaS 的应用对象是 router,可以在安全组之前控制外部过来的流量,但是对于同一个 subnet 内的流量不作限制。也就是说:FWaaS 保护的是 subnet。

所以,可以同时部署 FWaaS 和安全组实现双重防护。

VPNaas

VPNass是neutron的vpn服务,可以为不同数据中内网互访提供服务目前社区提供了基于openswan实现的IPsec VPN以及基于硬件实现CiscoCsrIPsec VPN。

LBaas

Load Balance as a Service(LBaaS)是 Neutron 提供的一项高级网络服务。LBaaS 允许租户在自己的网络中创建和管理 load balancer。load balancer 可以说是分布式系统中比较基础的组件。它接收前端发来的请求,然后将请求按照某种均衡策略转发给后端资源池中的某个处理单元,以完成处理。 load balancer 可以实现系统高可用和横向扩展。LBaaS 有三个主要的概念:

Pool MemberPoolVirtual IP

Pool Member
Pool Member 是 layer 4 的实体,拥有 IP 地址并通过监听端口对外提供服务。例如 Pool Member 可以是一个 web server,IP 为 172.16.100.9 并通过 80 端口提供 HTTP 服务。

Pool
Pool 由一组 Pool Member 组成。这些 Pool Member 通常提供同一类服务。
例如一个 web server pool,包含:
web1:172.16.100.9:80
web2:172.16.100.10:80

Virtual IP
Virtual IP 也称作 VIP,是定义在 load balancer 上的 IP 地址。每个 pool member 都有自己的 IP,但对外服务则是通过 VIP。load balancer 负责监听外部的连接,并将连接分发到 pool member。外部 client 只知道 VIP,不知道也不需要关心是否有 pool 或者有多少个 pool member。

OpenStack Neutron 目前默认通过 HAProxy 软件来实现 LBaaS。HAProxy 是一个流行的开源 load balancer。Neutron 也支持其他一些第三方 load balancer。下图展示了 HAProxy 实现 load balancer 的方式。
这里写图片描述

左图是 client 发送请求到 web server 的数据流:

  • Client 10.10.10.4 通过浏览器访问服务器的外网 IP 10.10.10.7。
  • 请求首先到达路由器,将目的地址设置为服务器的内网 VIP 172.16.100.11
  • VIP 设置在 load balancer 上,load balancer 收到请求后选择 pool member WEB1,将数据包的目的 IP 设为 WEB1 的地址 172.16.100.9。
  • 在将数据包转发给 WEB1 之前,load balancer 将数据包的源 IP 修改为自己的 VIP 地址 172.16.100.11,其目的是保证 WEB1 能够将应答数据发送回 load balancer。
  • WEB1 收到请求数据包。

右图是 web server 应答的数据流:

  • WEB1 将数据包发送给 load balancer。
  • load balancer 收到 WEB1 发回的数据后,将目的 IP 修改为 Client 的地址 10.10.10.4。同时也将数据包的源 IP 修改为 VIP 地址 172.16.100.11,保证 Client 能够将后续的数据发送给自己。
  • load balancer 将数据发送给路由器。
  • 路由器将数据包的原地址恢复成服务器的外网 IP 10.10.10.7,然后发送给 Client。
  • Client 收到应答数据。

插件安装

测试环境

  • Openstack版本: Mitaka
  • Linux系统: Ubuntu14
  • Python版本: python2.7
  • Fwaas版本: neutron-fwaas-8.2.0
  • Vpnaas版本: neutron-vpnaas-8.2.0
  • Lbaas版本: neutron-lbaas-8.2.0
  • 插件下载链接: https://tarballs.openstack.org/

插件安装

fwaas

  • 下载neutron-fwaas-8.2.0压缩包,并解压
  • 修改文件夹权限 chmod -R 777 neutron-fwaas-8.2.0/
  • 在neutron-fwaas-8.2.0目录下执行安装脚本 python setup.py install
  • 把neutron-fwaas-8.2.0/etc/oslo-config-generator/目录下的fwaas_driver.ini拷贝到/etc/neutron
  • 配置fwaas服务vi /etc/neutron/fwaas_driver.ini
    [DEFAULT]
    output_file = etc/fwaas_driver.ini.sample
    wrap_width = 79
    namespace = firewall.agent
    driver=neutron_fwaas.services.firewall.drivers.linux.iptables_fwaas.IptablesFwaasDriver
    enabled = True
  • 数据库建表 neutron-db-manage –subproject neutron-fwaas upgrade head

vpnaas

  • 下载neutron-vpnaas-8.2.0压缩包,并解压
  • 修改文件夹权限
    chmod -R 777 neutron-vpnaas-8.2.0/
  • 在neutron-VPNaas-8.2.0目录下执行安装脚本
    python setup.py install
  • 把neutron-vpnaas-8.2.0/etc/oslo-config-generator/目录下的vpn_agent.ini和neutron_vpnaas.conf拷贝到/etc/neutron
  • 配置vpnaas服务vi /etc/neutron/vpn_agent.ini
    [DEFAULT]
    output_file = etc/vpn_agent.ini.sample
    wrap_width = 79
    namespace = neutron.vpnaas.agent
    interface_driver = neutron.agent.linux.interface.BridgeInterfaceDriver
    [vpnagent]
    vpn_device_driver=neutron_vpnaas.services.vpn.device_drivers.ipsec.OpenSwanDriver
    [ipsec]
    ipsec_status_check_interval=60
  • 配置neutron_vpnaas.conf,添加红色的行
    [DEFAULT]
    output_file = etc/neutron_vpnaas.conf.sample
    wrap_width = 79
    namespace = neutron.vpnaas
    [service_providers]
    service_provider=VPN:openswan:neutron_vpnaas.services.vpn.service_drivers.ipsec.IPsecVPNDriver:default
  • 添加权限管理文件
    vi /usr/local/etc/neutron/rootwrap.d/vpnaas.filters
    [Filters]
    ip: IpFilter, ip, root
    ip_exec: IpNetnsExecFilter, ip, root
    ipsec: CommandFilter, ipsec, root
    openswan: CommandFilter, ipsec, root
    libreswan: CommandFilter, certutil, root
  • 数据库建表
    neutron-db-manage –subproject neutron-vpnaas upgrade head

lbaas

  • 下载neutron-lbaas-8.2.0压缩包,并解压
  • 修改文件夹权限
    chmod -R 777 neutron-lbaas-8.2.0/
  • 在neutron-lbaas-8.2.0目录下执行安装脚本
    python setup.py install
  • 把neutron-lbaas-8.2.0/etc/oslo-config-generator/目录下的lbaas_agent.ini和neutron_lbaas.conf拷贝到/etc/neutron
  • 配置lbaas服务vi /etc/neutron/lbaas_agent.ini
    [DEFAULT]
    output_file = etc/lbaas_agent.ini.sample
    wrap_width = 79
    namespace = neutron.lbaas.agent
    namespace = oslo.log
    interface_driver = neutron.agent.linux.interface.OVSInterfaceDriver
    device_driver = neutron.services.loadbalancer.drivers.haproxy.namespace_driver.HaproxyNSDriver
    ovs_use_veth = True
    [haproxy]
    user_group = nobody
    说明:interface_driver 的作用是设置 load balancer 的网络接口驱动,可以有两个选项:Linux Bridge和Open vSwitch。
  • 配置/etc/neutron/neutron_lbaas.conf
    [DEFAULT]
    output_file = etc/neutron_lbaas.conf.sample
    wrap_width = 79
    namespace = neutron.lbaas
    [service_providers]
    service_provider=LOADBALANCER:Haproxy:neutron_lbaas.services.loadbalancer.drivers.
    haproxy.plugin_driver.HaproxyOnHostPluginDriver:default
    说明:除了默认的 HAProxy,Neutron 也支持第三方 provider,比如 radware,VMWareEdge 等。
  • 数据库建表
    neutron-db-manage –service lbaas upgrade head

全局配置

  • 添加fwaas、vpnaas、lbaas服务到neutron中
    vi /etc/neutron/neutron.conf
    ………..
    service_plugins =firewall,vpnaas,lbaas,onos_router,neutron.services.metering.metering_plugin.MeteringPlugin
    …………
  • dashboard启用服务
    vi /usr/share/openstack-dashboard/openstack_dashboard/local/local_settings. py
    ………..
    OPENSTACK_NEUTRON_NETWORK = {
    ‘enable_distributed_router’: False,
    ‘enable_firewall’: True,
    ‘enable_ha_router’: False,
    ‘enable_lb’: True,
    ‘enable_quotas’: True,
    ‘enable_security_group’: True,
    ‘enable_vpn’: True,
    ‘profile_support’: None,
    }
    ………..
  • 重启neutron服务
    service neutron-server stop
    service neutron-server start
    注意:如果neutron服务启动失败,可以查看log
    cat /var/log/neutron/server.log | grep -i error
  • 如果重启neutron,dashboard还是没有出现三个插件,则可以重启虚机
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 3岁宝宝吐怎么办才好 儿童受凉肚子疼发热呕吐怎么办 两岁宝宝半夜呕吐怎么办 两岁宝宝吐了怎么办 2岁宝宝发烧吐怎么办 2岁多宝宝呕吐是怎么办 2周岁宝宝中暑了怎么办 2岁半宝宝着凉呕吐怎么办 3岁宝宝吐了几次怎么办 一岁宝宝恶心吐怎么办 9个月宝宝一直吐怎么办 晚上冻着了呕吐怎么办 2岁宝宝一直吐怎么办 两岁宝宝门牙龋齿怎么办 两岁宝宝得龋齿怎么办 两岁宝宝长龋齿怎么办 宝宝2岁不吃饭怎么办 两岁宝宝总是吐怎么办 3岁儿童受凉呕吐怎么办 两岁宝宝四天没拉大便怎么办 两岁宝宝发烧吐怎么办 四岁宝宝吐了怎么办啊 3岁宝宝突然吐了怎么办 宝宝撑着了吐拉怎么办 2岁宝宝体温37.5怎么办 宝宝2岁乳牙烂了怎么办 孕40周还没入盆怎么办 孕妇脸上长斑了怎么办 七个月宝宝大便干怎么办 两月大婴儿不拉大便怎么办 周岁宝宝大便出血了怎么办 十一个月宝宝大便干燥怎么办 8个月宝宝大便干燥怎么办 7个月宝宝大便干燥怎么办 11个月宝宝大便干燥怎么办 9个月宝宝大便干燥怎么办 10个月宝宝大便干燥怎么办 宝宝两天没拉粑粑了怎么办 小学闺蜜嫉妒我怎么办 三年级孩子对应用题理解很差怎么办 我嫉妒我的朋友怎么办