分享

VPNaaS in OpenStack

问题导读
1、什么是VPN?
2、虚拟机之间如何互相访问?
3、集群中如何为OpenStack安装VPN?





在Openstack的Havana版本中,neutron增加的一个功能就是VPNaas,将VPN功能引入到了neutron中,虽然在Havana版中只支持IPSec协议的VPN,功能还比较弱,但这个关键特性已经有了,后续会不断加强该特性,在这次的design summit会议上也有专门议题讨论了icehouce版本中VPNaas会做什么,具体可以参考这里,在介绍VPNaas之前,先简单说一下VPN的一些基本概念, 参考资料

VPN介绍
什么是VPN
VPN可以通过在L2或L3层建立一条逻辑链路让广域网上多个内网能够相互访问。VPN的实现方式很多,有基于租用专用物理线路实现的(如帧中继和ATM,因为是专用线路,贵啊,但QoS好,对语音等对延迟敏感的数据流至关重要,可运行上层的IP,IPX, AppleTalk,IP多播多种协议),也有基于以太网的虚连接的实现方式(不是专用线路,灵活,数据通道不安全要结合如IPSec来保证)分类如下:
- ATM和帧中继都是L2层VPN
- GRE,L2TP,MPLS和IPSec属于L3层VPN技术

GRE VPN:建VPN很方便,但没有安全机制,需结合IPSec来支持身份验证、完整性、访问控制和机密性。
SSL VPN:这种VPN的最大好处在于,仅需要一个单独的TCP或UDP端口便可以轻易穿越大多数防火墙进行数据传送
MPLS VPN:当使用GRE这些遂道技术来实现VPN时,因为是点至点的,当新添一个站点,需修改每个站点的VPN配置。MPLS是在传数据之前就先用L3层的路由机制将L2层的标签在途径的每个路由器上都事先算好了,并且这种标签是自动配置的,所以添加一个新站点很方便

IPSec VPN
在Havana版本中仅实现了IPSec VPN,为了方便在neutron中操作VPNaas,先介绍IPSec的一些基本概念。
IPSec的使用模式:
- IPSec传输模式:传输过程中IPSec源端点不会修改IP报中的目标IP地址。
- IPSec遂道模式:传输过程中IPSec源端点会修改IP报中的目标IP地址。
在neutron中使用的就是IPSec的遂道模式。

IPSec中的两个重要协议:
- AH:它使用消息摘要算法生成一个散列值,包括不变的报头字段(如源IP,目标IP),不同于ESP,不提供机密性,即不加密数据本身,所以不是很有用。计算报头摘要时要排除一些可变字段(如服务类型ToS,标记,分段偏移、存活时间TTL和报头校验和)。关于IPSec与NAT,NAT要发挥作用,它可能要修改IP源地址、目标地址、源端口、目标端口、IP和TCP报头的校验和、TCP序列号和确认号以及有效负载中的IP地址。因为,使用AH时,NAT不可行。
- ESP:提供机密性、数据完整性、数据来源验证和反重放功能。对于IPSec传输模式,使用ESP时NAT依然不可行。但在遂道模式下,只要NAT执行1:1的地址转换,不将多个内网地址转换一个外部地址并使用端口来区分它们,NAT和ESP便可以共存。一个最简单的办法就是在IPSec之间执行NAT,但这并非总是可能的,所以有了NAT跨越技术(NAT Traversal, NAT-T),它由三部分组成,首先判断远程peer是否支持NAT跨越,其次是检测peer之间的路径上是否有NAT;最后是决定如何使用UDP封闭来处理NAT。

IPsec IKE密钥交换协议
Internet 密钥交换(IPsec IKE)是 IPsec 体系结构中的一种主要协议。它是一种混合协议,使用部分 Oakley 和部分 SKEME,并协同 ISAKMP 提供密钥生成材料和其它安全连系,比如用于 IPsec DOI 的 AH 和 ESP 。

VPN安装部署
Neutron中VPN代码架构
下面介绍一下VPNaas在neutron中的实现,VPNaas的模块架构如下图所示
1.png

逻辑架构即在Network node的router上安装openswan来为内部的子网提供vpn服务
1.png


安装指导
1、安装所需软件
VPNass是运行在Network node节点上的,所以要在Network node节点上安装以下两个包:
(a) neutron-plugin-vpn-agent:vpn agent代码
(b) openswan:ipsec 软件
Ubuntu下:
  1. apt-get install neutron-plugin-vpn-agent
  2. apt-get install openswan
复制代码


2、修改配置文件
修改控制节点上neutron.conf文件
在service_plugins增加对VPN插件的支持,修改如下所示:
  1. service_plugins =neutron.services.vpn.plugin.VPNDriverPlugin
复制代码


修改控制节点上vpn_agent.ini文件
在DEFAULT中添加:
  1. interface_driver = neutron.agent.linux.interface.OVSInterfaceDriver
复制代码

因为VPN agent是继承l3 agent的,所以必须添加interface_driver选项,不然代码会报错。
在/etc/neutron/rootwrap.d目录下放入权限管理文件:vpnaas.filters,默认安装时该目录下没有该文件,所以必须手动将该文件放入,不然运行时会报没有操作权限的错误。

VPN使用指导
创建router和external network
VPN服务是运行在三层网关上的,所以创建VPN之前要先创建一个router,并为这个router创建一个external network。 如果VPN关联的router没有external network,创建VPN服务时不会报错,但运行时会报错。
创建ike policy
ike policy是用来作密钥管理的,操作命令如下:
  1. neutron vpn-ikepolicy-create ikepolicy1
复制代码


创建ipec policy
用来配置ipsec的加密算法、使用模式、密钥生存期、使用协议等
  1. neutron vpn-ipsecpolicy-create ipsecpolicy1
复制代码


创建vpn-service服务
  1. neutron vpn-service-create ROUTER SUBNET
复制代码


ROUTER:VPN关联的router
SUBNET:VPN要保护的内网
1.png


在没有创建下一步的ipsec-site-connection之前,status的状态会一直是pending状态,创建了ipsec-site-connection,并且创建成功后才会变为active
创建ipsec-site-connection服务
  1. neutron ipsec-site-connection-create --name vpnconnection1 --vpnservice-id 1906af89-2059-4388-a91f-a6186086c558 --ikepolicy-id ikepolicy1 --ipsecpolicy-id ipsecpolicy1 --peer-address 200.200.128.151 --peer-id 200.200.128.151 --peer-cidr 20.20.20.0/24 --psk secret
复制代码


vpnservice-id:第四部创建的vpn-service的id
peer-address:对端VPN的IP地址
peer-cidr:对端VPN要保护的内网IP psk:IKE要使用的共享密钥
1.png

如果对端VPN不存在,status状态会一直为down

VPN功能验证
VPN服务可以为不同数据中内网互访提供服务,为了模拟这个场景,我创建了两套单独的openstack环境,环境信息如下,感兴趣的可以自己操作一下。

Openstack1:
管理IP:172.25.100.242
使用VPN通信的subnet:10.10.10.0/24
External network的网关:200.200.128.100

Openstack2:
管理IP :172.25.100.243
使用VPN通信的subnet:20.20.20.0/24
External network的网关:200.200.128.151

在Openstack1创建的vpn-service如下:
1.png


创建的ipsec-site-connection如下:
1.png


在Openstack2创建的vpn-service如下:
1.png


创建的ipsec-site-connection如下:
1.png


在没有建立VPN连接之前,两套openstack中的虚拟机是没办法正常通信的,建立VPN连接后,虚拟机之间就可以互相访问了。

Openstack1中的虚拟机:
1.png


Openstack2中的虚拟机:
1.png


在Openstack1中的虚拟机直接ping Openstack2中的虚拟机:
1.png


在Openstack2中的br-ex管理的网口上抓包,可以看到封装后的IPSec数据包:

1.png


已有(2)人评论

跳转到指定楼层
谢燕益 发表于 2014-7-24 09:26:43
好好好!谢谢分享
回复

使用道具 举报

rbi 发表于 2014-8-1 23:54:37
已配置成功,谢谢!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

推荐上一条 /2 下一条