建立VPC到本地数据中心的连接(双隧道模式)

更新时间:2024-08-09 08:22:12

本文介绍如何使用公网网络类型的VPN网关在专有网络VPC(Virtual Private Cloud)和本地数据中心之间建立IPsec-VPN连接(双隧道模式),实现本地数据中心与VPC之间加密通信以及IPsec-VPN连接的高可用。

环境要求

  • IPsec连接绑定VPN网关实例时,本地数据中心的网关设备必须配置公网IP地址。

    对于支持IPsec-VPN连接双隧道模式的地域,推荐本地数据中心的网关设备配置2个公网IP地址或者本地数据中心拥有两个本地网关设备,每个本地网关设备均拥有一个公网IP地址,以建立高可用的IPsec-VPN连接。关于支持IPsec-VPN连接双隧道模式的地域信息,请参见【升级公告】IPsec-VPN连接升级为双隧道模式

  • 本地数据中心的网关设备必须支持IKEv1IKEv2协议,支持任意一种协议的设备均可以和转发路由器建立IPsec-VPN连接。

  • 本地数据中心的网段与待访问的网段没有重叠。

场景示例

本文以下图场景示例。某公司在阿里云华北5(呼和浩特)地域创建了VPC,VPC主网段为192.168.0.0/16。企业在呼和浩特地域拥有一个本地数据中心,因业务发展,本地数据中心172.16.0.0/16网段下的设备需要访问VPC下的资源。您可以在本地数据中心与云上VPC之间建立IPsec-VPN连接,实现云上和云下加密通信以及IPsec-VPN连接的高可用。

IDC和VPC互通(双隧道).png

准备工作

  • 您已经在阿里云华北5(呼和浩特)地域创建了VPC,VPC中使用云服务器ECS(Elastic Compute Service)部署了相关业务。具体操作,请参见搭建IPv4专有网络

  • 您已经了解VPCECS实例所应用的安全组规则以及本地数据中心应用的访问控制规则,并确保ECS安全组规则和本地数据中心访问控制规则允许本地数据中心和VPC之间互相互访。关于ECS安全组规则更多内容,请参见查询安全组规则添加安全组规则

配置流程

IDC和VPC互通(双隧道)-配置流程.png

步骤一:创建VPN网关

  1. 登录VPN网关管理控制台

  2. 在顶部菜单栏,选择VPN网关的地域。

    VPN网关的地域需和本地数据中心要访问的VPC实例的地域相同。

  3. VPN网关页面,单击创建VPN网关

  4. 在购买页面,根据以下信息配置VPN网关,然后单击立即购买并完成支付。

    配置项

    说明

    本文示例值

    配置项

    说明

    本文示例值

    实例名称

    输入VPN网关实例的名称。

    输入VPNGW。

    资源组

    选择VPN网关实例所属的资源组。

    如果不选择,VPN网关实例创建后将归属于默认资源组。

    本文保持为空。

    地域和可用区

    选择VPN网关实例所属的地域。

    选择华北5(呼和浩特)

    网关类型

    选择VPN网关实例的网关类型。

    选择普通型

    网络类型

    选择VPN网关实例的网络类型。

    • 公网:VPN网关通过公网建立VPN连接。

    • 私网:VPN网关通过私网建立VPN连接。

    选择公网

    隧道

    系统直接展示当前地域IPsec-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网关使用此角色来访问其他云产品中的资源,更多信息,请参见。

    若本配置项显示为已创建,则表示您当前账号下已创建了该角色,无需重复创建。

    根据需求创建服务关联角色或跳过本配置项。

  5. 返回VPN网关页面,查看创建的VPN网关实例。

    刚创建好的VPN网关实例的状态是准备中,约1~5分钟左右会变成正常状态。正常状态表明VPN网关已经完成了初始化,可以正常使用。

    系统会为公网网络类型的VPN网关实例分配两个不同的公网IP地址,用于建立两个加密隧道。本文中系统分配的两个公网IP地址如下表:

    IPsec-VPN连接隧道

    地址

    IPsec-VPN连接隧道

    地址

    IPsec地址1(主隧道)

    39.XX.XX.218

    IPsec地址2(备隧道)

    182.XX.XX.19

步骤二:创建用户网关

  1. 在左侧导航栏,选择网间互联 > VPN > 用户网关

  2. 在顶部菜单栏选择用户网关的地域。

    用户网关地域需和VPN网关实例的地域相同。

  3. 用户网关页面,单击创建用户网关

  4. 创建用户网关面板,根据以下信息进行配置,然后单击确定

    您需要创建两个用户网关用于创建两个加密隧道。以下仅列举本文强相关配置项,其余配置保持默认值或为空。更多信息,请参见创建和管理用户网关

    配置项

    说明

    用户网关1

    用户网关2

    配置项

    说明

    用户网关1

    用户网关2

    名称

    输入用户网关的名称。

    输入CustomerGW1

    输入CustomerGW2

    IP地址

    输入本地数据中心的网关设备的公网IP地址。

    输入211.XX.XX.36

    输入211.XX.XX.71

步骤三:创建IPsec连接

  1. 在左侧导航栏,选择网间互联 > VPN > IPsec连接

  2. 在顶部菜单栏选择IPsec连接的地域。

    IPsec连接的地域需和VPN网关实例的地域相同。

  3. IPsec连接页面,单击创建IPsec连接

  4. 创建IPsec连接页面,根据以下信息进行配置,然后单击确定

    配置项

    说明

    本文示例值

    配置项

    说明

    本文示例值

    名称

    输入IPsec连接的名称。

    输入IPsec-Connection

    资源组

    选择VPN网关实例所属的资源组。

    选择默认资源组。

    绑定资源

    选择IPsec连接绑定的资源类型。

    选择VPN网关

    VPN网关

    选择IPsec连接关联的VPN网关实例。

    选择VPNGW

    路由模式

    选择路由模式。

    • 目的路由模式:基于目的IP地址路由和转发流量。

    • 感兴趣流模式:基于源IP地址和目的IP地址精确的路由和转发流量。

    选择目的路由模式

    立即生效

    选择IPsec连接的配置是否立即生效。取值:

    • :配置完成后立即进行协商。

    • :当有流量进入时进行协商。

    选择

    启用BGP

    如果IPsec连接需要使用BGP路由协议,需要打开BGP功能的开关,系统默认关闭BGP功能。

    本文保持默认值,即不开启BGP功能。

    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连接和本地网关设备的加密配置保持一致。

    Tunnel 2

    为隧道2(备隧道)添加VPN相关配置。

    用户网关

    为备隧道添加待关联的用户网关实例。

    选择CustomerGW2

    预共享密钥

    输入备隧道的认证密钥,用于身份认证。

    输入fddsFF456****

    加密配置

    添加IKE配置、IPsec配置、DPD、NAT穿越等配置。

    除以下参数外,其余配置项保持默认值。关于默认值的说明,请参见创建和管理IPsec连接(双隧道模式)

    • IKE配置DH分组选择group14

    • IPsec配置DH分组选择group14

    说明

    您需要根据本地网关设备的支持情况选择加密配置参数,确保IPsec连接和本地网关设备的加密配置保持一致。

    标签

    IPsec连接添加标签。

    本文保持为空。

  5. 创建成功对话框中,单击取消

  6. 保持在IPsec连接页面,找到创建的IPsec连接,在操作列单击生成对端配置

    对端配置是指需要在IPsec连接对端添加的VPN配置。本文场景中您需要将这些配置添加在本地网关设备上。

  7. IPsec连接配置对话框,复制配置并保存在您的本地,用于后续配置本地网关设备。

步骤四:配置本地网关设备

在阿里云侧创建IPsec连接后,您需要在本地网关设备上添加VPN配置和路由配置,使本地网关设备与VPN网关之间成功建立IPsec-VPN连接,同时使本地数据中心去往VPC的流量优先通过主隧道进行传出,在主隧道中断后自动切换至备隧道进行传输。

说明

本文以思科防火墙ASA(软件版本9.19.1)作为配置示例。不同软件版本的配置命令可能会有所差异,操作时请根据您的实际环境查询对应文档或咨询相关厂商。更多本地网关设备配置示例,请参见本地网关配置

以下内容包含的第三方产品信息仅供参考。阿里云对第三方产品的性能、可靠性以及操作可能带来的潜在影响,不做任何暗示或其他形式的承诺。

  1. 登录思科防火墙的命令行窗口并进入配置模式。

    ciscoasa> enable
    Password: ********             #输入进入enable模式的密码。
    ciscoasa# configure terminal   #进入配置模式。
    ciscoasa(config)#     
  2. 查看接口配置。

    请确保思科防火墙已完成了接口配置,并已开启接口。以下为本文的接口配置示例。

    #查看本地网关设备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地址。
    !
  3. 为公网接口开启IKEv2功能。

    #分别在本地网关设备1和本地网关设备2上添加如下配置
    crypto ikev2 enable outside1 #为本地网关设备的outside1接口(公网接口)开启IKEv2功能。
  4. 创建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生存周期。
  5. 创建IPsec proposalprofile,指定思科防火墙侧的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生存周期。
  6. 创建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本段的预共享密钥,需和阿里云侧的保持一致。
    !
  7. 创建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接口。
    !
  8. 配置静态路由。

    //在本地网关设备1上添加如下配置
    route ALIYUN1 192.168.0.0 255.255.0.0 39.XX.XX.218          #配置去往阿里云VPC(192.168.0.0/16)的静态路由。
    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          #配置去往本地数据中心的路由。
    //在本地网关设备2上添加如下配置
    route ALIYUN1 192.168.0.0 255.255.0.0 182.XX.XX.19          #配置去往阿里云VPC(192.168.0.0/16)的静态路由。
    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          #配置去往本地数据中心的路由。
  9. 请根据您的实际网络环境按需在本地数据中心添加路由配置,使本地数据中心去往VPC的流量优先通过本地网关设备1进行传输,在本地网关设备1故障后可以自动通过本地网关设备2进行传输。具体命令,请咨询相关设备厂商。

步骤五:配置VPN网关路由

  1. 在左侧导航栏,选择网间互联 > VPN > VPN网关

  2. 在顶部菜单栏选择VPN网关实例的地域。

  3. VPN网关页面,找到VPN网关实例,单击实例ID。

  4. 单击目的路由表页签,然后单击添加路由条目

  5. 添加路由条目面板,根据以下信息配置路由,然后单击确定

    配置项

    说明

    路由条目

    配置项

    说明

    路由条目

    目标网段

    输入本地数据中心的网段。

    输入172.16.0.0/16

    下一跳类型

    选择下一跳的类型。

    选择IPsec连接

    下一跳

    选择下一跳。

    选择IPsec-Connection

    发布到VPC

    选择是否将新添加的路由发布到VPN网关关联的VPC中。

    选择

步骤六:验证测试

  1. 测试本地数据中心和VPC之间的连通性。

    1. 登录VPC下任意一个ECS实例。关于如何登录ECS实例,请参见连接方式概述

    2. ECS实例中执行ping命令,访问本地数据中心内的服务器,验证通信是否正常。

      如果ECS实例可以收到本地数据中心服务器的回复报文,则证明本地数据中心和VPC之间可以正常通信。

      ping <本地数据中心服务器私网IP地址>
  2. 测试IPsec-VPN连接的高可用性。

    1. 登录VPC下任意一个ECS实例。关于如何登录ECS实例,请参见连接方式概述

    2. 执行以下命令,使VPC下的ECS实例连续向本地数据中心发送访问报文。

      ping <本地数据中心服务器私网IP地址> -c 10000
    3. 中断IPsec-VPN连接下的主隧道。

      您可以通过修改IPsec连接主隧道的预共享密钥来中断主隧道,主隧道两端的预共享密钥不一致,则主隧道会中断。

    4. 中断主隧道后,您可以观察VPC实例下ECS实例的通信情况,发现ECS实例下的流量在短暂中断后,又重新恢复通信,则表示在主隧道中断后,流量自动通过备隧道进行通信。

  • 本页导读 (1)
  • 环境要求
  • 场景示例
  • 准备工作
  • 配置流程
  • 步骤一:创建VPN网关
  • 步骤二:创建用户网关
  • 步骤三:创建IPsec连接
  • 步骤四:配置本地网关设备
  • 步骤五:配置VPN网关路由
  • 步骤六:验证测试