本文介绍如何在阿里云专有网络 VPC(Virtual Private Cloud)和AWS VPC(Amazon Virtual Private Cloud)之间建立IPsec-VPN连接,实现阿里云VPC和AWS VPC之间的相互通信。
场景示例
本文以下图场景为例。某企业在阿里云德国(法兰克福)地域创建了一个VPC,并在AWS的欧洲(法兰克福)地域也拥有一个VPC,企业希望阿里云VPC和AWS VPC可以互相通信。
企业可以使用阿里云VPN网关产品(使用公网网络类型的VPN网关实例)和AWS VPN产品在两个VPC之间建立IPsec-VPN连接,实现两个VPC之间的加密通信。
网段规划
您可以自行规划网段,请确保要互通的网段之间没有重叠。
VPC实例网段规划
资源 | VPC实例的网段 | 实例IP地址 |
阿里云VPC |
| ECS IP地址:10.0.0.223 |
AWS VPC |
| EC2 IP地址:192.168.10.113 |
IPsec-VPN连接BGP网段规划
本文中将分别描述IPsec-VPN连接使用静态路由和BGP动态路由情况下如何实现阿里云VPC和AWS VPC之间的通信。如果您不需要使用BGP动态路由方式,可以忽略本部分。以下为本文的BGP网段规划。
在IPsec-VPN连接配置BGP动态路由协议的情况下,阿里云侧两条隧道的本端自治系统号需保持相同,两条隧道对端的BGP AS号可以不相同,但建议保持相同。
资源 | IPsec连接名称 | 隧道 | BGP隧道网段 | BGP IP地址 | BGP AS号(本端自治系统号) |
阿里云VPN网关 | IPsec连接 | 主隧道 | 169.254.116.208/30 说明 一个VPN网关实例下,每个隧道的网段需保持唯一。 | 169.254.116.210 | 65530 |
备隧道 | 169.254.214.96/30 | 169.254.214.98 | |||
AWS虚拟私有网关 | 站点到站点VPN连接1 | 隧道1 | 169.254.116.208/30 | 169.254.116.209 | 64512 |
隧道2 | 备隧道不使用。 | ||||
站点到站点VPN连接2 | 隧道1 | 169.254.214.96/30 | 169.254.214.97 | ||
隧道2 | 备隧道不使用。 |
准备工作
您已经在阿里云德国(法兰克福)地域创建一个VPC,VPC下通过云服务器 ECS(Elastic Compute Service)部署相关资源。具体操作,请参见搭建IPv4专有网络。
您已经在AWS欧洲(法兰克福)地域创建了一个VPC,VPC下通过EC2部署了相关资源。具体操作,请咨询AWS平台。
配置流程
步骤一:在阿里云创建VPN网关实例
您需要先在阿里云创建一个VPN网关实例,VPN网关实例创建完成后,系统会为VPN网关实例分配2个IP地址,这2个IP地址用于与AWS平台建立IPsec-VPN连接。
登录VPN网关管理控制台。
在顶部菜单栏,选择VPN网关的地域。
VPN网关的地域需和待绑定的VPC实例的地域相同。
在VPN网关页面,单击创建VPN网关。
在购买页面,根据以下信息配置VPN网关,然后单击立即购买并完成支付。
以下仅列举本文强相关的配置,其余配置项保持默认值或为空。更多信息,请参见创建和管理VPN网关实例。
配置项
说明
本文示例值
实例名称
输入VPN网关实例的名称。
输入VPN网关。
地域
选择VPN网关实例所属的地域。
选择德国(法兰克福)。
网关类型
选择VPN网关实例的网关类型。
选择普通型。
网络类型
选择VPN网关实例的网络类型。
选择公网。
隧道
系统直接展示当前地域IPsec-VPN连接支持的隧道模式。
双隧道
单隧道
关于单隧道和双隧道的说明,请参见【升级公告】IPsec-VPN连接升级为双隧道模式。
本文保持默认值双隧道。
专有网络
选择VPN网关实例关联的VPC实例。
选择阿里云德国(法兰克福)地域的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实例下的第二个交换机实例。
IPsec-VPN
选择开启或关闭IPsec-VPN功能。默认值:开启。
选择开启IPsec-VPN功能。
SSL-VPN
选择开启或关闭SSL-VPN功能。默认值:关闭。
选择关闭SSL-VPN功能。
返回VPN网关页面,查看创建的VPN网关实例。
刚创建好的VPN网关实例的状态是准备中,约1~5分钟左右会变成正常状态。正常状态表明VPN网关已经完成了初始化,可以正常使用。
系统为VPN网关实例分配的2个IP地址如下表所示:
VPN网关实例的名称
VPN网关实例ID
IP地址
VPN网关
vpn-gw8dickm386d2qi2g****
IPsec地址1(默认为主隧道地址):8.XX.XX.146
IPsec地址2(默认为备隧道地址):8.XX.XX.74
步骤二:在AWS平台部署VPN
为在AWS VPC和阿里云VPC之间建立IPsec-VPN连接,您需要根据以下信息在AWS平台部署VPN,配置需要的具体命令或操作请咨询AWS平台。
使用静态路由方式
创建客户网关。
您需要在AWS侧创建2个客户网关,将阿里云VPN网关实例的2个IP地址作为客户网关的IP地址。
创建虚拟私有网关。
您需要在AWS侧创建虚拟私有网关,并将虚拟私有网关绑定到需要和阿里云互通的VPC实例上。
创建站点到站点VPN连接。
重要阿里云和AWS平台下的IPsec-VPN连接均支持双隧道模式,但由于AWS平台的两条隧道默认关联至同一个客户网关,而阿里云侧两条隧道拥有不同的IP地址,导致AWS平台和阿里云侧的两条隧道无法做到一一对应建立连接。为确保阿里云侧IPsec-VPN连接下两条隧道同时启用,您需要在AWS平台创建两个站点到站点的VPN连接,每个站点到站点VPN连接关联不同的客户网关。
下图展示其中一个站点到站点VPN连接的配置,隧道选项配置使用默认值。另一个站点到站点VPN连接关联与当前VPN连接不同的客户网关,其余配置与当前VPN连接相同。
说明上图中本地IPv4网络CIDR需指定为阿里云VPC下的网段,远程IPv4网络CIDR需指定为AWS VPC下的网段。
站点到站点VPN连接创建完成后,您可以查看VPN连接下的隧道地址信息,用于后续在阿里云侧创建IPsec-VPN连接。
本文中,2个VPN连接隧道1的外部IP地址以及关联的客户网关IP地址如下表所示:
站点到站点VPN连接
隧道
外部IP地址
关联的客户网关IP地址
站点到站点VPN连接1
Tunnel 1
3.XX.XX.52
8.XX.XX.146
站点到站点VPN连接2
Tunnel 1
3.XX.XX.56
8.XX.XX.74
配置路由传播。
您需要在虚拟私有网关关联的VPC实例的路由表下开启路由传播,以确保站点到站点VPN连接下的路由可以自动传播到VPC实例的路由表中。
使用BGP动态路由方式
创建客户网关。
您需要在AWS侧创建2个客户网关,将阿里云VPN网关实例的2个IP地址作为客户网关的IP地址,同时将阿里云IPsec连接的BGP AS号注册到AWS上。
创建虚拟私有网关。
您需要在AWS侧创建虚拟私有网关,并将虚拟私有网关绑定到需要和阿里云互通的VPC实例上。创建虚拟私有网关时需要指定AWS侧的BGP AS号。
创建站点到站点VPN连接。
重要阿里云和AWS平台下的IPsec-VPN连接均支持双隧道模式,但由于AWS平台的两条隧道默认关联至同一个客户网关,而阿里云侧两条隧道拥有不同的IP地址,导致AWS平台和阿里云侧的两条隧道无法做到一一对应建立连接。为确保阿里云侧IPsec-VPN连接下两条隧道同时启用,您需要在AWS平台创建两个站点到站点的VPN连接,每个站点到站点VPN连接关联不同的客户网关。
下图展示其中一个站点到站点VPN连接的配置,未展示的配置项使用默认值。另一个站点到站点VPN连接关联与当前VPN连接不同的客户网关、隧道 1的内部IPv4 CIDR配置为169.254.214.96/30,其余配置与当前VPN连接相同。
说明上图中本地IPv4网络CIDR需指定为阿里云VPC下的网段,远程IPv4网络CIDR需指定为AWS VPC下的网段。
站点到站点VPN连接创建完成后,您可以查看VPN连接下的隧道地址信息。
查看隧道的预共享密钥和阿里云侧需配置的BGP IP地址。
站点到站点VPN连接创建完成后,您需要在AWS平台下载隧道对端设备(本文中指阿里云VPN网关)的VPN配置文件,在VPN配置文件中查看阿里云侧需配置的预共享密钥和BGP IP地址。下载配置文件的操作,请参见下载配置文件。本文下载配置文件时供应商选择Generic、IKE版本选择IKEv2。
说明创建站点到站点的VPN连接时如果您指定了预共享密钥,无需再通过VPN配置文件查看。如果您使用了系统自动生成的预共享密钥,您可以通过VPN配置文件查看系统生成的预共享密钥。阿里云侧和AWS侧隧道的预共享密钥需保持一致。
本文中,两个VPN连接隧道1的外部IP地址、BGP IP地址以及关联的客户网关IP地址如下表所示:
站点到站点VPN连接
隧道
外部IP地址
AWS侧BGP IP地址
阿里云侧BGP IP地址
关联的客户网关IP地址
站点到站点VPN连接1
Tunnel 1
3.XX.XX.52
169.254.116.209
169.254.116.210
8.XX.XX.146
站点到站点VPN连接2
Tunnel 1
3.XX.XX.56
169.254.214.97
169.254.214.98
8.XX.XX.74
配置路由传播。
您需要在虚拟私有网关关联的VPC实例的路由表下开启路由传播,以确保站点到站点VPN连接下的路由可以自动传播到AWS VPC实例的路由表中。
步骤三:在阿里云部署VPN网关
在AWS平台完成VPN配置后,请根据以下信息在阿里云侧部署VPN网关,以便AWS VPC和阿里云VPC之间建立IPsec-VPN连接。
创建用户网关。
登录VPN网关管理控制台。
在左侧导航栏,选择
。在顶部菜单栏选择用户网关的地域。
用户网关地域需和VPN网关实例的地域相同。
在用户网关页面,单击创建用户网关。
在创建用户网关面板,根据以下信息进行配置,然后单击确定。
您需要创建两个用户网关,并将AWS平台站点到站点VPN连接的隧道外部IP地址作为用户网关的IP地址,以建立两个加密隧道。以下仅列举本文强相关配置项,其余配置保持默认值或为空。更多信息,请参见创建和管理用户网关。
重要仅使用每个站点到站点VPN连接的Tunnel1的外部IP地址作为用户网关的地址。每个站点到站点VPN连接的Tunnel2的外部IP地址默认不使用,IPsec-VPN连接创建完成后,每个站点到站点VPN连接的Tunnel2默认不通。
配置项
说明
用户网关1
用户网关2
名称
输入用户网关的名称。
输入用户网关1。
输入用户网关2。
IP地址
输入AWS平台隧道的外部IP地址。
输入3.XX.XX.52。
输入3.XX.XX.56。
自治系统号
输入AWS虚拟私有网关的BGP AS号。
说明使用BGP动态路由方式时,需配置该项。
输入64512。
输入64512。
创建IPsec连接。
在左侧导航栏,选择
。在顶部菜单栏选择IPsec连接的地域。
IPsec连接的地域需和VPN网关实例的地域相同。
在IPsec连接页面,单击创建IPsec连接。
在创建IPsec连接页面,根据以下信息配置IPsec连接,然后单击确定。
配置项
说明
本文示例值
名称
输入IPsec连接的名称。
输入IPsec连接。
绑定资源
选择IPsec连接绑定的资源类型。
选择VPN网关。
VPN网关
选择IPsec连接关联的VPN网关实例。
选择已创建的VPN网关。
路由模式
选择路由模式。
目的路由模式:基于目的IP地址路由和转发流量。
感兴趣流模式:基于源IP地址和目的IP地址精确的路由和转发流量。
本文使用静态路由方式时,选择使用感兴趣流模式(推荐)。
本端网段:输入10.0.0.0/16。
对端网段:输入192.168.0.0/16。
本文使用BGP动态路由方式时,选择使用目的路由模式(推荐)。
立即生效
选择IPsec连接的配置是否立即生效。取值:
是:配置完成后立即进行协商。
否:当有流量进入时进行协商。
选择是。
启用BGP
如果IPsec连接需要使用BGP路由协议,需要打开BGP功能的开关,系统默认关闭BGP功能。
本文此处保持默认值不打开BGP配置开关,默认为静态路由方式。IPsec连接创建完成后如需使用BGP动态路由,则再单独添加BGP配置。
Tunnel 1
为隧道1(主隧道)添加VPN相关配置。
系统默认隧道1为主隧道,隧道2为备隧道,且不支持修改。
用户网关
为主隧道添加待关联的用户网关实例。
选择用户网关1。
预共享密钥
输入主隧道的认证密钥,用于身份认证。
密钥长度为1~100个字符,支持数字、大小写英文字母及右侧字符
~`!@#$%^&*()_-+={}[]\|;:',.<>/?
。若您未指定预共享密钥,系统会随机生成一个16位的字符串作为预共享密钥。
重要隧道及其对端网关设备配置的预共享密钥需一致,否则系统无法正常建立IPsec-VPN连接。
当前隧道的认证密钥需和连接的AWS平台隧道的密钥一致。
加密配置
添加IKE配置、IPsec配置、DPD、NAT穿越等配置。
IKE配置的SA生存周期(秒)需与AWS平台保持一致,本文设置为28800。
IPsec配置的SA生存周期(秒)需与AWS平台保持一致,本文设置为3600。
其余配置项使用默认值。关于默认值的说明,请参见创建和管理IPsec连接(双隧道模式)。
Tunnel 2
为隧道2(备隧道)添加VPN相关配置。
用户网关
为备隧道添加待关联的用户网关实例。
选择用户网关2。
预共享密钥
输入备隧道的认证密钥,用于身份认证。
当前隧道的认证密钥需和连接的AWS平台隧道的密钥一致。
加密配置
添加IKE配置、IPsec配置、DPD、NAT穿越等配置。
IKE配置的SA生存周期(秒)需与AWS平台保持一致,本文设置为28800。
IPsec配置的SA生存周期(秒)需与AWS平台保持一致,本文设置为3600。
其余配置项使用默认值。关于默认值的说明,请参见创建和管理IPsec连接(双隧道模式)。
在创建成功对话框中,单击取消。
配置VPN网关路由。
使用静态路由方式
创建IPsec连接后需要为VPN网关实例配置路由。创建IPsec连接时,如果路由模式您选择了感兴趣流模式,在IPsec连接创建完成后,系统会自动在VPN网关实例下创建策略路由,路由是未发布状态。您需要执行本操作,将VPN网关实例下的策略路由发布至VPC中。
在左侧导航栏,选择 。
在顶部菜单栏,选择VPN网关实例的地域。
在VPN网关页面,单击目标VPN网关实例ID。
在VPN网关实例详情页面单击策略路由表页签,找到目标路由条目,在操作列单击发布。
在发布路由对话框,单击确定。
使用BGP动态路由方式
为IPsec连接添加BGP配置。
在左侧导航栏,选择 。
在IPsec连接页面,找到IPsec连接,单击IPsec连接ID。
在IPsec连接基本信息区域,在启用BGP右侧单击按钮,在BGP配置对话框根据以下信息进行配置,然后单击确定。
配置项
配置项说明
IPsec连接配置
本端自治系统号
输入IPsec连接的自治系统号。
本文输入65530。
Tunnel 1
为主隧道添加BGP配置。
为IPsec连接的主隧道添加BGP配置。
隧道网段
输入建立加密隧道时使用的网段。
本文输入169.254.116.208/30。
本端BGP地址
输入IPsec连接的BGP IP地址。
该地址为隧道网段内的一个IP地址。
本文输入169.254.116.210。
Tunnel 2
为备隧道添加BGP配置。
为IPsec连接的备隧道添加BGP配置。
隧道网段
输入建立加密隧道时使用的网段。
本文输入169.254.214.96/30。
本端BGP地址
输入IPsec连接的BGP IP地址。
该地址为隧道网段内的一个IP地址。
本文输入169.254.214.98。
根据以下步骤为VPN网关实例开启BGP路由自动传播功能。
在左侧导航栏,选择 。
在VPN网关页面,找到VPN网关实例,在操作列选择 。
在开启路由自动传播对话框,单击确定。
步骤四:测试连通性
配置完成后,阿里云VPC和AWS VPC之间已经成功建立IPsec-VPN连接。下文以阿里云ECS实例访问AWS EC2实例为例,测试VPC之间的连通性。
在测试连通性前,请先在AWS平台和阿里云侧分别排查VPC实例所应用的访问控制策略(例如网络ACL、安全组规则等),以确保访问控制策略允许两个VPC实例下的资源互相访问。
登录阿里云VPC实例下的一个ECS实例。关于如何登录ECS实例,请参见ECS远程连接方式概述。
在ECS实例中执行
ping
命令,访问AWS平台的EC2实例,验证通信是否正常。如果ECS实例可以收到AWS平台EC2实例的回复报文,则证明VPC之间可以正常通信。
ping <AWS平台EC2实例的私网IP地址>
测试IPsec-VPN连接的高可用性。
双隧道模式的IPsec-VPN拥有高可用性,在主隧道中断的情况下,流量自动通过备隧道进行传输。以下内容介绍如何验证双隧道模式IPsec-VPN连接的高可用性。
保持登录阿里云VPC实例下的ECS实例。
执行以下命令,使阿里云下的ECS实例持续访问AWS平台的EC2实例。
ping <AWS平台EC2实例的私网IP地址> -c 10000
中断IPsec-VPN连接的主隧道。
本文通过在阿里云侧修改IPsec连接下主隧道的预共享密钥来中断主隧道,主隧道两端的预共享密钥不一致,则主隧道会中断。
查看阿里云ECS实例下的通信情况,会发现ECS实例下的流量在短暂中断后,又重新恢复通信,表示在主隧道中断后,流量自动通过备隧道进行通信。
您可以在阿里云监控页签查看隧道的流量监控信息。具体操作,请参见监控IPsec连接。