Openstack(Juno)中VPNaaS的配置

vpnaas配置的资料很少,官网目前参考的https://wiki.openstack.org/wiki/Neutron/VPNaaS/HowToInstall比较旧,方面配置基本没有讲

经历漫长时间的查找资料、学习,现终于配置成功了,记录下来给大家参考一下,有什么不正确的地方及时留言

1. 配置

1.1 准备

yum install openstack-neutron-vpn-agent libreswan -y  

vi /etc/sysctl
net.ipv4.ip_forward=1
net.ipv4.conf.default.send_redirects = 0
net.ipv4.conf.default.accept_redirects = 0
net.ipv4.conf.default.rp_filter = 0

1.2添加vpn服务

vim /etc/neutron/neutron.conf
[DEFAULT]
service_plugins = router,vpnaas
[service_providers]
service_provider = VPN:Vpn:neutron.services.vpn.service_drivers.ipsec.IPsecVPNDriver:default

1.3 配置vpnaas

vim /etc/neutron/vpn_agent.ini 
[DEFAULT]
# VPN-Agent configuration file
# Note vpn-agent inherits l3-agent, so you can use configs on l3-agent also
interface_driver = neutron.agent.linux.interface.OVSInterfaceDriver
[vpnagent]
vpn_device_driver=neutron.services.vpn.device_drivers.ipsec.OpenSwanDriver
[ipsec]
ipsec_status_check_interval=30
vi /usr/share/neutron/rootwrap/vpnaas.filters
[Filters]
ip: IpFilter, ip, root
ip_exec: IpNetnsExecFilter, ip, root
openswan: CommandFilter, ipsec, root
libreswan: CommandFilter, certutil, root

1.4 dashboard启用vpn

vim /etc/openstack-dashboard/local_settings

OPENSTACK_NEUTRON_NETWORK = {
        ‘enable_vpn‘: True,
        }

1.5 确认ipsec

#cat test.sh

for FILE in /proc/sys/net/ipv4/conf/*
    do
      echo 0 > $FILE/accept_redirects
      echo 0 > $FILE/rp_filter
    done
sh test.shservice ipsec start
ipsec verify

2 修改代码

2.1

vi /usr/lib/python2.7/site-packages/neutron/services/vpn/device_drivers/ipsec.py

97行添加
        bcertutil = "certutil"
    114行添加
        NSS_FILES = [
         ‘cert8.db‘,
         ‘key3.db‘,
         ‘secmod.db‘
     ]
    189行添加
        def _ensure_nss(self, nss_files):
            if not os.path.isfile(nss_files):
                #start nss database
                self._execute([self.bcertutil,
                        ‘-N‘,
                        ‘--empty-password‘,
                        ‘-d‘, self.ipsecd_dir,
                        ])
    204行添加
        for nss_file in self.NSS_FILES:
             nss_path = os.path.join(self.ipsecd_dir, nss_file)
             self._ensure_nss(nss_path)
    327行添加
        self.ipsecd_dir = os.path.join(
             self.etc_dir, ‘ipsec.d‘)
    409、410行修改和删除
        修改 ‘--ipsecdir‘, self.etc_dir  成:  ‘--ipsecdir‘, self.ipsecd_dir
        删除 ‘--use-netkey‘,
    422行删除
        ‘--defaultroutenexthop‘, nexthop,
    470行添加
        pid_file = self.pid_path + ‘.pid‘
        if os.path.exists(pid_file):
            os.remove(pid_file)

2.2

vi /usr/lib/python2.7/site-packages/neutron/services/vpn/device_drivers/template/openswan/ipsec.conf.template

    3行删除:nat_traversal=yes
    7行删除:keylife=60m 添加:salifetime=60m
    20行删除:leftnexthop=%defaultroute
    31行删除:rightnexthop=%defaultroute
    63行删除:lifetime={{ipsec_site_connection.ipsecpolicy.lifetime_value}}s 添加:salifetime={{ipsec_site_connection.ipsecpolicy.lifetime_value}}s

3. 重启服务

systemctl enable neutron-vpn-agent
service neutron-vpn-agent start
重启neutron所有服务

4. 测试

(10.1.0.0/24 - DevStack East)
              |
              |  10.1.0.1
     [Quantum Router]
              |  172.24.4.226
              |
              |  172.24.4.225
     [Internet GW]
              |  
              |
     [Internet GW]
              | 172.24.4.232
              |
              | 172.24.4.233
     [Quantum Router]
              |  10.2.0.1
              |
     (10.2.0.0/24 DevStack West)

openstack集群A(East)

外网:flat
    网关:172.24.4.225
    路由(routerA)外网ip:172.24.4.226
    路由(routerA)内网ip:10.1.0.1
    子网(netA):10.1.0.0/24

openstack集群B(West)

外网:flat
    网关:172.24.4.232
    路由(routerB)外网ip:172.24.4.233
    路由(routerB)内网ip:10.2.0.1
    子网(netB):10.2.0.0/24

在集群A分别执行下列命令,创建ike策略 ipsec策略 vpn服务 以及连接

neutron vpn-ikepolicy-create ikepolicy1
neutron vpn-ipsecpolicy-create ipsecpolicy1
neutron vpn-service-create --name myvpnA routerA netA
neutron ipsec-site-connection-create --name vpnconnectionA --vpnservice-id myvpnA --ikepolicy-id ikepolicy1 --ipsecpolicy-id ipsecpolicy1 --peer-address 172.24.4.233 --peer-id 172.24.4.233 --peer-cidr 10.2.0.0/24 --psk secret

在集群B分别执行下列命令,创建ike策略 ipsec策略 vpn服务 以及连接

neutron vpn-ikepolicy-create ikepolicy1
neutron vpn-ipsecpolicy-create ipsecpolicy1
neutron vpn-service-create --name myvpnB routerB netB
neutron ipsec-site-connection-create --name vpnconnectionB --vpnservice-id myvpn --ikepolicy-id ikepolicy1 --ipsecpolicy-id ipsecpolicy --peer-address 172.24.4.233 --peer-id 172.24.4.233 --peer-cidr 10.2.0.0/24 --psk secret

> peer-address 和peer-id 对写成对方router的外网ip地址即可

> peer-cidr写成对方路由保护的内网

> psk可以自定义,只要双方一致即可

接下来就是稍等片刻,connection的状态会由pending create 变成active

PS

在同一个集群中,创建两个用户网络和两个路由也可以进行测试
在测试vpn之前先确认两个子网上的vm可以ping通对方路由的外网ip,确认下vm是否可以访问外网

有问题及时留言

时间: 2024-12-23 08:01:36

Openstack(Juno)中VPNaaS的配置的相关文章

在Ubuntu14.04上OpenStack Juno安装部署

在Ubuntu14.04上OpenStack Juno安装部署 0 安装方式 0.1 安装方式 安装方式 说明 目标 备注 单结点 一台服务器运行所有的nova-xxx组件,同时也驱动虚拟实例. 这种配置只为尝试Nova,或者为了开发目的进行安装.   1控制节点+N个计算节点 一个控制结点运行除nova-compute外的所有nova-services,然后其他compute结点运行nova-compute.所有的计算节点需要和控制节点进行镜像交互,网络交互,控制节点是整个架构的瓶颈. 这种配

Openstack Juno新版功能

openstack维持了六个月发布版本的周期.10月16日Openstack将发布Juno版本,包含几个新的项目以及大量新的特性.本文不做全面介绍,对新功能只是浅尝辄止. Nova 作为Openstack的核心功能,Nova需要保持稳定.但这并不意味着更新缓慢,在Juno版本中有重大的变化. NFV:Network Function Virtualization网络功能虚拟化是一个非常重要的概念,可以发现有很多个体开发者和大量公司在讨论NFV Live Upgrades:在线升级在Icehous

[IaaS与数据中心] centos7下安装openstack juno

最近不忙,安装了一下openstack juno与大家分享一下.根据以下安装步骤http://docs.openstack.org/juno/i ... ent/ch_preface.html                                openstack-install-guide-yum-juno.pdf                (1.03 MB, 下载次数: 313)先看一下安装完的效果.cryboy2001  2014-12-18一.整体效果,有两台实例aa与bb

Openstack Juno系列之结合ceph

Openstack Juno系列之结合ceph 原文链接:http://docs.ceph.com/docs/master/rbd/rbd-openstack/ 我针对于ceph官网的英文配置做了如下翻译,如有翻译不周之处敬请谅解. 1.创建两个池. ceph osd pool create volumes 128 ceph osd pool create images 128 补充内容:在glance节点apt-get install python-ceph在nova-compute节点和ci

使用Fuel安装OpenStack juno之一安装Fuel Master

安装OpenStack是一件很复杂的事情,特别是在想目中,如果一个组件一个组件,一台一台的coding部署,估计太消耗时间,而且出错的概率很高,所以使用工具推送部署的效率就很高了,而且必须得可靠.mirantis是一家专门做openstack服务的公司,对openstack的贡献也很高,目前已经实现盈利,其openstack部署工具Fuel也很高效稳定,可以在生产环境使用,而且可以购买其服务. 那就不多说此工具了,咱们开始部署,先来了解下大致的环境: 部署硬件:windows 7 (8GB RA

openstack API部分(Keystone) HAProxy配置(二)

openstack API部分(Keystone) HAProxy配置 廖杰 一.概况与原理 1)所需要的配置组件有:pacemaker+corosync+HAProxy 2)主要原理:HAProxy作为负载均衡器,将对openstack api服务的请求分发到两个镜像的控制节点上,由于openstack api服务是无状态的服务,所以不存在数据同步的问题.具体为在pacemaker中配置一个VIP,HAProxy负责监听这个VIP,将对这个VIP的请求分发到两台控制节点上,同时HAProxy本

openstack Juno系列之控制节点搭建

openstack Juno系列之控制节点搭建 controller控制节点搭建 安装keystone ------------- 所有主机hosts: 取消其中127.0.0.1 10.0.0.11  controller 10.0.0.21  neutron 10.0.0.31  compute to configure prerequisites: apt-get install python-software-properties add-apt-repository cloud-arc

openstack Juno系列之网络节点搭建

openstack Juno系列之网络节点搭建 neutron节点搭建 ------------------ 添加转发 vi  /etc/sysctl.conf net.ipv4.ip_forward=1 net.ipv4.conf.all.rp_filter=0 net.ipv4.conf.default.rp_filter=0 刷新下 sysctl -p 安装neutron各模块服务 apt-get install neutron-plugin-ml2 neutron-plugin-open

openstack Juno系列之计算节点搭建

openstack Juno系列之计算节点搭建 nova-compute安装配置 -------------------- apt-get install nova-compute sysfsutils 编辑配置文件 vi /etc/nova/nova.conf [DEFAULT] verbose = True rpc_backend = rabbit rabbit_host = controller rabbit_password = RABBIT_PASS auth_strategy = k