VPN 连接(VPN Connections)是一种基于网络隧道技术,实现本地数据中心与公有云上资源连通的传输服务,它能帮您在 Internet 上快速构建一条安全、可靠的加密通道。VPN 连接具有配置简单,云端配置实时生效、可靠性高等特点,保证稳定、持续的业务连接,帮您轻松实现异地容灾、混合云部署等复杂业务场景。常用于以下业务场景:
建立本地数据中心与公有云厂商专有网络之间的连接
建立不同公有云厂商之间的连接
建立本地客户端与公有云厂商专有网络之间的连接
多个本地数据中心与公有云网络实现弹性混合云解决方案
通过VPN通道,实现本地数据中心和公有云网络的云上容灾方案
公有云厂商提供的VPN服务具有以下产品特性:
安全:VPN 通道采用 IKE(密钥交换协议)和 IPsec 对传输的数据进行加密,在Internet 上建立一条安全、可信的数据隧道,保障传输途中数据安全。
高可用:VPN 网关具有99.95%可靠性,底层采用热备架构,可实现故障秒级切换,且切换时无需重建通道,保障通信会话不中断,上层应用无感知。
使用简单:VPN 连接支持即买即用,云端配置实时生效,本地网关自动生成配置文件,导入设备即可完成配置,快速开通 VPN 服务。
服务集成:VPN 连接支持与公有云厂商的其他服务集成,如 私有网络 VPC 、专线接入等,搭配不同的产品为您云上业务构筑端到端解决方案。
IBM Cloud为客户提供两种VPN服务:
1. 经典网络架构下的IPSec VPN服务
2. VPC网络架构下的VPN Gateway服务,提供IPsec-VPN和SSL-VPN功能,其中IPsec-VPN可建立VPC网络与本地数据中心或客户办公点之间的VPN连接。SSL-VPN可使客户端远程接入专有网络VPC(Virtual Private Cloud),安全地访问VPC中部署的应用和服务。
接下来给大家介绍如何使用VPC网络架构下的VPN Gateway服务,通过IPSec-VPN功能,实现本地办公网络(使用strongSwan VPN)和IBM Cloud VPC网络之间的连接。连接架构图如下:
我们需要用到以下服务:
IBM Cloud VPC
VPC subnets
VPC 云主机
本地配置的strongSwan VPN
在使用IBM Cloud VPC网络下的VPN网关服务时,我们需要注意以下内容:
1. The VPN gateway is created in the zone that is associated with the subnet that you select. Because the VPN gateway can connect to virtual server instances in this zone only, instances in other zones can’t use this VPN gateway to communicate with the other network. For zone fault tolerance, deploy one VPN gateway per zone.
2. Make sure that there’s enough space in the subnet for the gateway. To ensure VPN management and fail-over functions are able to function properly, create the VPN gateway in a subnet without any other VPC resources to guarantee that there are enough available private IPs for the gateway. A VPN gateway needs four private IP addresses to accommodate high availability and rolling upgrades. Since up to five private IPs in a subnet are reserved, the minimum subnet size that can be used to host a VPN gateway is 16 IPs (prefix /28 or netmask 255.255.255.240).
3. If you plan to set a default route (0.0.0.0/0) in a VPC routing table to let egress traffic from your VPC resources pass through a VPN gateway, and you plan to use a route-based VPN, create your VPN gateway in a subnet different from the one associated with the routing table. Otherwise, this default route causes a routing conflict for the VPN gateway and brings the VPN connection down.
4. By default, PFS (Perfect Forward Secrecy) is disabled for IBM Cloud VPN Gateway for VPC. Some vendors require PFS enablement for Phase 2. Check your vendor instruction and use custom policies if PFS is required.
5. IBM Cloud VPN Gateway for VPC supports only one route-based VPN per zone per VPC.
首先我们需要创建VPN 网关服务
1.选择VPN类型为站点到站点网络(Site to Site)
2. 指定VPN网关的名称
3. 指定VPN网关部署的资源组
4. 选择VPN网关服务部署的地点
5. 选择部署VPN网关服务的VPC网络
6. 选择部署VPN网关服务的VPC子网(该子网需要保证能预留4个IP给VPN网关服务使用)
接下来需要建立VPN连接,在建立VPN连接之前,我们需要预先知道以下内容:
1.需要连接的办公网络的VPN网关IP地址(即安装strongSwan VPN的服务器地址)
2. 需要链接的办公网络服务器所在的子网CIDR
3. 需要建立VPN连接的IBM Cloud VPC子网CIDR
1. IBM Cloud VPN网关服务提供基于静态路由和基于策略两种方式,静态路由方式基于VPN网关服务所在的VPC子网出口路由表中的定制路由确定哪些流量可以通过VPN通道。策略方式基于VPN连接已定义的本地和对等子网CIDR块确定哪些流量可以通过VPN通道。这里我们选择基于策略方式
2. 指定VPN连接名称
3. 对端VPN网关的公网IP地址
4. 用于本端和对端VPN网关之间的身份认证,本端VPN和对端VPN须使用相同的预共享密钥。
5. IBM VPC网络端的子网CIDR
6. 本地办公网络端的子网CIDR
1. 设置VPN连接健康检查的相关配置,例如健康检查间隔时间,VPN连接无响应超时时间,连接无响应时的相关操作
2. 设置VPN握手协商第一阶段中使用的相关参数,在此阶段,vpn和对端网络交换凭证和安全策略相互进行身份验证,并建立一个用于第二阶段协商的安全通信通道。默认使用IKE v2,对端网络也必须使用ikev2。如果您的对端网络不支持ikev2,可以按照下面第三步来自定义IKE策略。
3. 创建自定义的IKE策略
4.设置VPN握手协商第二阶段中使用的相关参数,在此阶段,VPN网关服务和对端网络使用在阶段1中建立的安全关联来协商要发送的通信,以及如何对该通信进行身份验证和加密。IBM Cloud VPN网关服务默认不支持完全前向保密(Perfect Forward Secrecy),如果对端网络要求支持,那么可以按照下面第5步来自定义IPsec策略。
5. 自定义IPsec策略
完成以上设置以后,最后点击创建VPN网关。
接下来我们在对端网络搭建strongSwan VPN服务,使用如下命令安装strongSwan:
yum install strongswan -y
运行以下命令打开ipsec.conf配置文件
vi /etc/strongswan/ipsec.conf
添加如下设置:
conn %default
type=tunnel
auto=start #进程主动时立即建立 IPsec 安全连接
esp=aes256-sha256!
ike=aes128-sha1-modp1024!
left=163.68.76.2 本地部署VPN服务的服务器公网IP
leftsubnet=10.8.11.192/26 本地网络子网CIDR
leftauth=psk
rightauth=psk
keyexchange=ikev2
leftid="163.68.76.2"
lifetime=10800s
ikelifetime=36000s
dpddelay=30s
dpdaction=none
dpdtimeout=120s
conn ibmcloud-vpc-dalas02
rightsubnet=10.240.64.0/24 对端网络的子网CIDR
right=52.116.206.34 对端VPC网络的VPN网关公网IP
rightid="52.116.XXX.XXX" 对端VPC网络的VPN网关公网IP
其中对端网络的VPN网关公网IP可在以下IBM Cloud页面查看
编辑/etc/strongswan/ipsec.secrets,添加VPN通道的pre-shared key,格式为leftsideid rightsideid : PSK “your pre-shared key”
编辑/etc/sysctl.conf,去掉
net.ipv4.ip_forward=1这行前的注释,如果没有,则添加
运行sysctl -p命令使配置生效
运行sudo strongswan start启动VPN服务
执行sudo strongswan status查看VPN连接状态
如上图所示,说明VPN连接已成功
访问IBM Cloud页面,查看VPN连接状态,也显示连接已经成功
两边机器尝试互相访问
至此,通过IBM Cloud VPN网关服务实现与本地办公网络的互通已成功!
如果需要让本地办公网络的其它服务器与IBM Cloud VPC网络互通,可在本地其它机器上添加如下路由:
sudo route -n add -net 10.240.64.0/24 gw 10.8.11.243 dev eth0
其中10.240.64.0/24为对端VPC网络的子网CIDR,10.8.11.243为本地VPN服务器的内网IP
添加路由后,检查是否可以互相访问
参考文档:
https://cloud.ibm.com/docs/vpc?topic=vpc-using-vpn&interface=ui
https://www.ibm.com/cloud/blog/setting-up-a-vpn-between-ibm-cloud-vpc-and-your-home-office