本文介绍如何使用公网网络类型的VPN网关在专有网络VPC(Virtual Private Cloud)和本地数据中心之间建立IPsec-VPN连接(双隧道模式),实现本地数据中心与VPC之间加密通信以及IPsec-VPN连接的高可用。同时,使用BGP动态路由协议实现路由自动学习,降低网络维护成本和网络配置风险。
环境要求
IPsec连接绑定VPN网关实例时,本地数据中心的网关设备必须配置公网IP地址。
对于支持IPsec-VPN连接双隧道模式的地域,推荐本地数据中心的网关设备配置2个公网IP地址或者本地数据中心拥有两个本地网关设备,每个本地网关设备均拥有一个公网IP地址,以建立高可用的IPsec-VPN连接。关于支持IPsec-VPN连接双隧道模式的地域信息,请参见绑定VPN网关场景双隧道IPsec-VPN连接说明。
本地数据中心的网关设备必须支持IKEv1或IKEv2协议,支持任意一种协议的设备均可以和转发路由器建立IPsec-VPN连接。
本地数据中心的网段与待访问的网段没有重叠。
BGP动态路由支持的地域
区域 | 地域 |
亚太 | 华东1(杭州)、华东2(上海)、华北1(青岛)、华北2(北京)、华北3(张家口)、华北5(呼和浩特)、华南1(深圳)、中国香港、日本(东京)、新加坡、马来西亚(吉隆坡)、印度尼西亚(雅加达) |
欧洲与美洲 | 德国(法兰克福)、英国(伦敦)、美国(弗吉尼亚)、美国(硅谷) |
中东 | 阿联酋(迪拜) |
场景示例
本文以下图场景示例。某公司在阿里云华北5(呼和浩特)地域创建了VPC,VPC主网段为192.168.0.0/16。企业在呼和浩特地域拥有一个本地数据中心,因业务发展,本地数据中心172.16.0.0/16网段下的设备需要访问VPC下的资源。您可以在本地数据中心与云上VPC之间建立IPsec-VPN连接,实现云上和云下加密通信以及IPsec-VPN连接的高可用。
BGP网段规划
本文中本地数据中心和VPN网关之间通过BGP动态路由协议实现路由自动学习和传播,下表为本地数据中心和IPsec连接的BGP网段规划。
在IPsec-VPN连接配置BGP动态路由协议的情况下,两条隧道的本端自治系统号需保持相同,两条隧道对端的BGP AS号可以不相同,但建议保持相同。
资源 | IPsec-VPN连接隧道 | BGP AS号(本端自治系统号) | BGP隧道网段 | BGP IP地址 |
IPsec连接 | 主隧道 | 65530 | 169.254.10.0/30 | 169.254.10.1 |
备隧道 | 65530 | 169.254.20.0/30 | 169.254.20.1 | |
本地数据中心 | 主隧道 | 65500 | 169.254.10.0/30 | 169.254.10.2 |
备隧道 | 65500 | 169.254.20.0/30 | 169.254.20.2 |
准备工作
您已经在阿里云华北5(呼和浩特)地域创建了VPC,VPC中使用云服务器ECS(Elastic Compute Service)部署了相关业务。具体操作,请参见搭建IPv4专有网络。
您已经了解VPC中ECS实例所应用的安全组规则以及本地数据中心应用的访问控制规则,并确保ECS安全组规则和本地数据中心访问控制规则允许本地数据中心和VPC之间互相互访。关于ECS安全组规则更多内容,请参见查询安全组规则和添加安全组规则。
配置流程
步骤一:创建VPN网关
登录VPN网关管理控制台。
在顶部菜单栏,选择VPN网关的地域。
VPN网关的地域需和本地数据中心要访问的VPC实例的地域相同。
在VPN网关页面,单击创建VPN网关。
在购买页面,根据以下信息配置VPN网关,然后单击立即购买并完成支付。
配置项
说明
本文示例值
实例名称
输入VPN网关实例的名称。
输入VPNGW。
资源组
选择VPN网关实例所属的资源组。
如果不选择,VPN网关实例创建后将归属于默认资源组。
本文保持为空。
地域和可用区
选择VPN网关实例所属的地域。
选择华北5(呼和浩特)。
网关类型
选择VPN网关实例的网关类型。
选择普通型。
网络类型
选择VPN网关实例的网络类型。
公网:VPN网关通过公网建立VPN连接。
私网:VPN网关通过私网建立VPN连接。
选择公网。
隧道
系统直接展示当前地域IPsec-VPN连接支持的隧道模式。
双隧道
单隧道
关于单隧道和双隧道的说明,请参见绑定VPN网关场景双隧道IPsec-VPN连接说明。
本文保持默认值双隧道。
VPC
选择VPN网关实例关联的VPC实例。
选择阿里云华北5(呼和浩特)地域的VPC实例。
虚拟交换机
从VPC实例中选择一个交换机实例。
IPsec-VPN连接的隧道模式为单隧道时,您仅需要指定一个交换机实例。
IPsec-VPN连接的隧道模式为双隧道时,您需要指定两个交换机实例。
IPsec-VPN功能开启后,系统会在两个交换机实例下各创建一个弹性网卡ENI(Elastic Network Interfaces),作为使用IPsec-VPN连接与VPC流量互通的接口。每个ENI会占用交换机下的一个IP地址。
说明系统默认帮您选择第一个交换机实例,您可以手动修改或者直接使用默认的交换机实例。
创建VPN网关实例后,不支持修改VPN网关实例关联的交换机实例,您可以在VPN网关实例的详情页面查看VPN网关实例关联的交换机、交换机所属可用区以及交换机下ENI的信息。
选择VPC实例下的一个交换机实例。
虚拟交换机2
从VPC实例中选择第二个交换机实例。
您需要从VPN网关实例关联的VPC实例下指定两个分布在不同可用区的交换机实例,以实现IPsec-VPN连接可用区级别的容灾。
对于仅支持一个可用区的地域 ,不支持可用区级别的容灾,建议您在该可用区下指定两个不同的交换机实例以实现IPsec-VPN连接的高可用,支持选择和第一个相同的交换机实例。
说明如果VPC实例下没有第二个交换机实例,您可以新建交换机实例。具体操作,请参见创建和管理交换机。
选择VPC实例下的第二个交换机实例。
带宽规格
选择VPN网关实例的带宽规格。单位:Mbps。
本文使用默认值。
IPsec-VPN
选择开启或关闭IPsec-VPN功能。默认值:开启。
选择开启IPsec-VPN功能。
SSL-VPN
选择开启或关闭SSL-VPN功能。默认值:关闭。
选择关闭SSL-VPN功能。
计费周期
选择购买时长。
您可以选择是否自动续费:
按月购买:自动续费周期为1个月。
按年购买:自动续费周期为1年。
本文使用默认值。
服务关联角色
单击创建关联角色,系统自动创建服务关联角色AliyunServiceRoleForVpn。
VPN网关使用此角色来访问其他云产品中的资源,更多信息,请参见。
若本配置项显示为已创建,则表示您当前账号下已创建了该角色,无需重复创建。
根据需求创建服务关联角色或跳过本配置项。
返回VPN网关页面,查看创建的VPN网关实例。
刚创建好的VPN网关实例的状态是准备中,约1~5分钟左右会变成正常状态。正常状态表明VPN网关已经完成了初始化,可以正常使用。
系统会为公网网络类型的VPN网关实例分配两个不同的公网IP地址,用于建立两个加密隧道。本文中系统分配的两个公网IP地址如下表:
IPsec-VPN连接隧道
地址
IPsec地址1(主隧道)
39.XX.XX.218
IPsec地址2(备隧道)
182.XX.XX.19
步骤二:创建用户网关
在左侧导航栏,选择
。在顶部菜单栏选择用户网关的地域。
用户网关地域需和VPN网关实例的地域相同。
在用户网关页面,单击创建用户网关。
在创建用户网关面板,根据以下信息进行配置,然后单击确定。
您需要创建两个用户网关用于创建两个加密隧道。以下仅列举本文强相关配置项,其余配置保持默认值或为空。更多信息,请参见创建和管理用户网关。
配置项
说明
用户网关1
用户网关2
名称
输入用户网关的名称。
输入CustomerGW1。
输入CustomerGW2。
IP地址
输入VPC要连接的本地数据中心的网关设备的公网IP地址。
输入211.XX.XX.36。
输入211.XX.XX.71。
自治系统号
输入本地网关设备BGP AS号。
输入65500。
输入65500。
步骤三:创建IPsec连接
在左侧导航栏,选择
。在顶部菜单栏选择IPsec连接的地域。
IPsec连接的地域需和VPN网关实例的地域相同。
在IPsec连接页面,单击创建IPsec连接。
在创建IPsec连接页面,根据以下信息进行配置,然后单击确定。
配置项
说明
本文示例值
名称
输入IPsec连接的名称。
输入IPsec-Connection。
资源组
选择VPN网关实例所属的资源组。
选择默认资源组。
绑定资源
选择IPsec连接绑定的资源类型。
选择VPN网关。
VPN网关
选择IPsec连接关联的VPN网关实例。
选择VPNGW。
路由模式
选择路由模式。
目的路由模式:基于目的IP地址路由和转发流量。
感兴趣流模式:基于源IP地址和目的IP地址精确的路由和转发流量。
选择目的路由模式。
说明在使用BGP动态路由协议的情况下,推荐使用目的路由模式。
立即生效
选择IPsec连接的配置是否立即生效。取值:
是:配置完成后立即进行协商。
否:当有流量进入时进行协商。
选择是。
启用BGP
如果IPsec连接需要使用BGP路由协议,需要打开BGP功能的开关,系统默认关闭BGP功能。
本文开启BGP功能。
本端自治系统号
输入隧道本端的自治系统号。默认值:45104。自治系统号取值范围:1~4294967295。
输入65530。
Tunnel 1
为隧道1(主隧道)添加VPN相关配置。
系统默认隧道1为主隧道,隧道2为备隧道,且不支持修改。
用户网关
为主隧道添加待关联的用户网关实例。
选择CustomerGW1。
预共享密钥
输入主隧道的认证密钥,用于身份认证。
密钥长度为1~100个字符,支持数字、大小写英文字母及右侧字符
~`!@#$%^&*()_-+={}[]\|;:',.<>/?
,不能包含空格。若您未指定预共享密钥,系统会随机生成一个16位的字符串作为预共享密钥。创建IPsec连接后,您可以通过隧道的编辑按钮查看系统生成的预共享密钥。具体操作,请参见修改隧道的配置。
重要隧道及其对端网关设备配置的预共享密钥需一致,否则系统无法正常建立IPsec-VPN连接。
输入fddsFF123****。
加密配置
添加IKE配置、IPsec配置、DPD、NAT穿越等配置。
除以下参数外,其余配置项保持默认值。关于默认值的说明,请参见创建和管理IPsec连接(双隧道模式)。
IKE配置的DH分组选择group14。
IPsec配置的DH分组选择group14。
说明您需要根据本地网关设备的支持情况选择加密配置参数,确保IPsec连接和本地网关设备的加密配置保持一致。
BGP配置
为IPsec连接主隧道添加BGP配置。
隧道网段:输入隧道的网段。
该网段需要在169.254.0.0/16网段内,且掩码长度为30。
隧道网段需要是在169.254.0.0/16内的子网掩码为30的网段,且不能是169.254.0.0/30、169.254.1.0/30、169.254.2.0/30、169.254.3.0/30、169.254.4.0/30、169.254.5.0/30、169.254.6.0/30和169.254.169.252/30。
说明一个VPN网关实例下,每个隧道的网段需保持唯一。
本端BGP地址:输入隧道本端的BGP IP地址。
该地址为隧道网段内的一个IP地址。
隧道网段:169.254.10.0/30
本端BGP地址:169.254.10.1
Tunnel 2
为隧道2(备隧道)添加VPN相关配置。
用户网关
为备隧道添加待关联的用户网关实例。
选择CustomerGW2。
预共享密钥
输入备隧道的认证密钥,用于身份认证。
输入fddsFF456****。
加密配置
添加IKE配置、IPsec配置、DPD、NAT穿越等配置。
除以下参数外,其余配置项保持默认值。关于默认值的说明,请参见创建和管理IPsec连接(双隧道模式)。
IKE配置的DH分组选择group14。
IPsec配置的DH分组选择group14。
说明您需要根据本地网关设备的支持情况选择加密配置参数,确保IPsec连接和本地网关设备的加密配置保持一致。
BGP配置
为IPsec连接备隧道添加BGP配置。
隧道网段:169.254.20.0/30
本端BGP地址:169.254.20.1
标签
为IPsec连接添加标签。
本文保持为空。
在创建成功对话框中,单击取消。
保持在IPsec连接页面,找到创建的IPsec连接,在操作列单击生成对端配置。
对端配置是指需要在IPsec连接对端添加的VPN配置。本文场景中您需要将这些配置添加在本地网关设备上。
在IPsec连接配置对话框,复制配置并保存在您的本地,用于后续配置本地网关设备。
步骤四:开启BGP路由自动传播功能
为VPN网关实例开启BGP路由自动传播功能后,VPN网关实例才会将学习到的本地数据中心的路由传播至VPC实例中。
在左侧导航栏,选择 。
在顶部菜单栏,选择VPN网关实例的地域。
在VPN网关页面,找到已创建的VPN网关,在路由自动传播列开启路由自动传播功能。
步骤五:配置本地网关设备
在阿里云侧完成配置后,您需要在本地网关设备上添加VPN配置和路由配置,使本地网关设备与VPN网关之间成功建立IPsec-VPN连接,同时使本地数据中心去往VPC的流量优先通过主隧道进行传出,在主隧道中断后自动切换至备隧道进行传输。
本文以思科防火墙ASA(软件版本9.19.1)作为配置示例。不同软件版本的配置命令可能会有所差异,操作时请根据您的实际环境查询对应文档或咨询相关厂商。更多本地网关设备配置示例,请参见本地网关设备配置示例。
以下内容包含的第三方产品信息仅供参考。阿里云对第三方产品的性能、可靠性以及操作可能带来的潜在影响,不做任何暗示或其他形式的承诺。
登录思科防火墙的命令行窗口并进入配置模式。
ciscoasa> enable Password: ******** #输入进入enable模式的密码。 ciscoasa# configure terminal #进入配置模式。 ciscoasa(config)#
查看接口配置。
请确保思科防火墙已完成了接口配置,并已开启接口。以下为本文的接口配置示例。
#查看本地网关设备1的接口配置 ciscoasa(config)# show running-config interface ! interface GigabitEthernet0/0 nameif outside1 #GigabitEthernet0/0接口名称。 security-level 0 ip address 211.XX.XX.36 255.255.255.255 #GigabitEthernet0/0接口配置的公网IP地址。 ! interface GigabitEthernet0/1 #连接本地数据中心的接口。 nameif private #GigabitEthernet0/1接口名称。 security-level 100 #指定连接本地数据中心接口(私网接口)的security-level低于公网接口。 ip address 172.16.50.217 255.255.255.0 #GigabitEthernet0/1接口配置的IP地址。 ! #查看本地网关设备2的接口配置 ciscoasa(config)# show running-config interface ! interface GigabitEthernet0/0 nameif outside1 #GigabitEthernet0/0接口名称。 security-level 0 ip address 211.XX.XX.71 255.255.255.255 #GigabitEthernet0/0接口配置的公网IP地址。 ! interface GigabitEthernet0/1 #连接本地数据中心的接口。 nameif private #GigabitEthernet0/1接口名称。 security-level 100 #指定连接本地数据中心接口(私网接口)的security-level低于公网接口。 ip address 172.16.40.218 255.255.255.0 #GigabitEthernet0/1接口配置的IP地址。 !
为公网接口开启IKEv2功能。
#分别在本地网关设备1和本地网关设备2上添加如下配置 crypto ikev2 enable outside1 #为本地网关设备的outside1接口(公网接口)开启IKEv2功能。
创建IKEv2 Policy,指定IKE阶段认证算法、加密算法、DH分组和SA生存周期,需和阿里云侧保持一致。
#分别在本地网关设备1和本地网关设备2上添加如下配置 crypto ikev2 policy 10 encryption aes #指定加密算法。 integrity sha #指定认证算法。 group 14 #指定DH分组。 prf sha #prf和integrity保持一致,阿里云侧prf与认证算法默认保持一致。 lifetime seconds 86400 #指定SA生存周期。
创建IPsec proposal和profile,指定思科防火墙侧的IPsec阶段加密算法、认证算法、DH分组和SA生存周期,需和阿里云侧保持一致。
#分别在本地网关设备1和本地网关设备2上添加如下配置 crypto ipsec ikev2 ipsec-proposal ALIYUN-PROPOSAL #创建ipsec proposal。 protocol esp encryption aes #指定加密算法,协议使用ESP,阿里云侧固定使用ESP协议。 protocol esp integrity sha-1 #指定认证算法,协议使用ESP,阿里云侧固定使用ESP协议。 crypto ipsec profile ALIYUN-PROFILE set ikev2 ipsec-proposal ALIYUN-PROPOSAL #创建ipsec profile并应用已创建的proposal。 set ikev2 local-identity address #指定本端ID使用IP地址格式,与阿里云侧RemoteId格式保持一致。 set pfs group14 #指定pfs和DH分组。 set security-association lifetime seconds 86400 #指定基于时间的SA生存周期。 set security-association lifetime kilobytes unlimited #关闭基于流量的SA生存周期。
创建tunnel group,指定隧道的预共享密钥,需和阿里云侧保持一致。
#在本地网关设备1上添加如下配置 tunnel-group 39.XX.XX.218 type ipsec-l2l #指定隧道1的封装模式为l2l。 tunnel-group 39.XX.XX.218 ipsec-attributes ikev2 remote-authentication pre-shared-key fddsFF123**** #指定隧道1对端的预共享密钥,即阿里云侧的预共享密钥。 ikev2 local-authentication pre-shared-key fddsFF123**** #指定隧道1本段的预共享密钥,需和阿里云侧的保持一致。 ! #在本地网关设备2上添加如下配置 tunnel-group 182.XX.XX.19 type ipsec-l2l #指定隧道2的封装模式为l2l。 tunnel-group 182.XX.XX.19 ipsec-attributes ikev2 remote-authentication pre-shared-key fddsFF456**** #指定隧道2对端的预共享密钥,即阿里云侧的预共享密钥。 ikev2 local-authentication pre-shared-key fddsFF456**** #指定隧道2本段的预共享密钥,需和阿里云侧的保持一致。 !
创建tunnel接口。
#在本地网关设备1上添加如下配置 interface Tunnel1 #创建隧道1的接口。 nameif ALIYUN1 ip address 169.254.10.2 255.255.255.252 #指定接口的IP地址。 tunnel source interface outside1 #指定隧道1源地址为公网接口GigabitEthernet0/0。 tunnel destination 39.XX.XX.218 #指定隧道1目的地址为阿里云侧隧道1的公网IP地址。 tunnel mode ipsec ipv4 tunnel protection ipsec profile ALIYUN-PROFILE #指定隧道1应用ipsec profile ALIYUN-PROFILE。 no shutdown #开启隧道1接口。 ! #在本地网关设备2上添加如下配置 interface Tunnel1 #创建隧道2的接口。 nameif ALIYUN1 ip address 169.254.20.2 255.255.255.252 #指定接口的IP地址。 tunnel source interface outside1 #指定隧道2源地址为公网接口GigabitEthernet0/0。 tunnel destination 182.XX.XX.19 #指定隧道2目的地址为阿里云侧隧道2的公网IP地址。 tunnel mode ipsec ipv4 tunnel protection ipsec profile ALIYUN-PROFILE #指定隧道2应用ipsec profile ALIYUN-PROFILE。 no shutdown #开启隧道2接口。 !
配置路由。
#在本地网关设备1上添加如下配置 route outside1 39.XX.XX.218 255.255.255.255 192.XX.XX.172 #配置访问阿里云侧隧道1公网IP地址的路由,下一跳为外网地址。 route private 172.16.0.0 255.255.0.0 172.16.50.216 #配置去往本地数据中心的路由。 router bgp 65500 address-family ipv4 unicast neighbor 169.254.10.1 remote-as 65530 #指定BGP邻居,即阿里云侧隧道1的IP地址。 neighbor 169.254.10.1 ebgp-multihop 255 neighbor 169.254.10.1 activate #激活BGP邻居。 network 172.16.0.0 mask 255.255.0.0 #宣告本地数据中心的网段。 exit-address-family #在本地网关设备2上添加如下配置 route outside1 182.XX.XX.19 255.255.255.255 192.XX.XX.123 #配置访问阿里云侧隧道2公网IP地址的路由,下一跳为外网地址。 route private 172.16.0.0 255.255.0.0 172.16.40.219 #配置去往本地数据中心的路由。 router bgp 65500 address-family ipv4 unicast neighbor 169.254.20.1 remote-as 65530 #指定BGP邻居,即阿里云侧隧道2的IP地址。 neighbor 169.254.20.1 ebgp-multihop 255 neighbor 169.254.20.1 activate #激活BGP邻居。 network 172.16.0.0 mask 255.255.0.0 #宣告本地数据中心的网段。 exit-address-family
完成上述配置后,本地数据中心和VPN网关之间已经建立了IPsec-VPN连接,并且也通过BGP路由协议学习到了对方的路由。
请根据您的实际网络环境按需在本地数据中心添加路由配置,使本地数据中心去往VPC的流量优先通过本地网关设备1进行传输,在本地网关设备1故障后可以自动通过本地网关设备2进行传输。具体命令,请咨询相关设备厂商。
步骤六:验证测试
测试本地数据中心和VPC之间的连通性。
登录VPC下任意一个ECS实例。关于如何登录ECS实例,请参见连接实例。
在ECS实例中执行
ping
命令,访问本地数据中心内的服务器,验证通信是否正常。如果ECS实例可以收到本地数据中心服务器的回复报文,则证明本地数据中心和VPC之间可以正常通信。
ping <本地数据中心服务器私网IP地址>
测试IPsec-VPN连接的高可用性。
登录VPC下任意一个ECS实例。关于如何登录ECS实例,请参见连接实例。
执行以下命令,使VPC下的ECS实例连续向本地数据中心发送访问报文。
ping <本地数据中心服务器私网IP地址> -c 10000
中断IPsec-VPN连接下的主隧道。
您可以通过修改IPsec连接主隧道的预共享密钥来中断主隧道,主隧道两端的预共享密钥不一致,则主隧道会中断。
中断主隧道后,您可以观察VPC实例下ECS实例的通信情况,发现ECS实例下的流量在短暂中断后,又重新恢复通信,则表示在主隧道中断后,流量自动通过备隧道进行通信。