使用IPsec-VPN实现本地数据中心和阿里云VPC之间的网络互通时,在阿里云侧完成VPN网关的配置后,您还需在本地数据中心的网关设备中添加VPN配置。本文以华为防火墙为例,介绍如何在本地网关设备中添加VPN配置。
本文场景中,本地数据中心使用一台华为防火墙的两个公网IP地址,与阿里云建立双隧道模式的IPsec-VPN连接。如果您购买的VPN网关实例仅支持建立单隧道模式的IPsec-VPN连接,请参见文末的单隧道模式配置示例。
推荐您升级IPsec-VPN连接为双隧道模式,双隧道模式的IPsec-VPN连接支持可用区级别的容灾,有效提高了网络的高可用性。
双隧道模式
场景示例
以上图场景为例:
某公司在本地拥有一个数据中心,本地数据中心中要与阿里云互通的网段为10.34.0.0/24。
该公司在阿里云拥有一个专有网络VPC,VPC网段为192.168.0.0/16,VPC中使用云服务器ECS部署了应用服务。
公司计划在本地数据中心与云上VPC之间建立双隧道模式的IPsec-VPN连接,实现资源互访。
地址规划
根据华为防火墙的公网出口数量,本文提供2种场景示例:
单出口:华为防火墙只配置了1个公网出口,对应只有1个公网IP地址。
双出口:华为防火墙配置了2个公网出口,对应有2个公网IP地址。
您可以根据华为防火墙的实际情况,查看对应的地址规划。
单出口
地址规划如下所示。
位置 | 配置项 | 示例值 |
本地IDC | 华为防火墙接口地址 | GE1/0/0(公网出口)地址:10.32.0.174 出口下一跳:10.32.0.173 映射公网IP:1.1.XX.XX |
GE1/0/2(私网接口):10.34.0.9 | ||
私网网段 | 10.34.0.0/24 | |
服务器IP | 10.34.0.1 | |
阿里云 | VPN网关地址 | 主隧道:3.3.XX.XX 备隧道:4.4.XX.XX |
VPC网段 | 192.168.0.0/16 | |
交换机网段 | 可用区J:192.168.1.0/24 可用区K:192.168.2.0/24 | |
ECS地址 | 192.168.1.1 |
双出口
地址规划如下所示。
位置 | 配置项 | 示例值 |
本地IDC | 华为防火墙接口地址 | GE1/0/0(公网出口1):10.32.0.174 出口下一跳:10.32.0.173 映射公网IP:1.1.XX.XX |
GE1/0/1(公网出口2):10.33.0.237 出口下一跳:10.33.0.236 映射公网IP:2.2.XX.XX | ||
GE1/0/2(私网接口):10.34.0.9 | ||
私网网段 | 10.34.0.0/24 | |
服务器IP | 10.34.0.1 | |
阿里云 | VPN网关地址 | 主隧道:3.3.XX.XX 备隧道:4.4.XX.XX |
VPC网段 | 192.168.0.0/16 | |
交换机网段 | 可用区J:192.168.1.0/24 可用区K:192.168.2.0/24 | |
ECS地址 | 192.168.1.1 |
BGP规划
本文将分别描述IPsec-VPN连接使用静态路由方式和BGP动态路由方式下如何配置华为防火墙。如果您不需要使用BGP动态路由方式,可以忽略本部分。以下为本文的BGP地址规划。
资源 | 隧道 | BGP隧道网段 | BGP IP地址 | BGP AS号(本端自治系统号) |
阿里云VPN网关 | 隧道1 | 169.254.10.0/30 说明 一个VPN网关实例下,每个隧道的网段需保持唯一。 | 169.254.10.1 | 45104 |
隧道2 | 169.254.20.0/30 | 169.254.20.1 | ||
华为防火墙 | 隧道1 | 169.254.10.0/30 | 169.254.10.2 | 45001 |
隧道2 | 169.254.20.0/30 | 169.254.20.2 |
IPsec连接配置规划
双隧道模式下,隧道1(主隧道)和隧道2(备隧道)使用相同的示例值。
对于每条隧道,阿里云侧和华为防火墙侧IPsec连接配置需保持相同。
配置项 | 示例值 | |
预共享密钥 | ChangeMe**** | |
IKE | 版本 | ikev2 |
协商模式 | main | |
加密算法 | aes256 | |
认证算法 | sha256 | |
DH分组 | group14 | |
SA生存周期(秒) | 86400 | |
IPsec | 加密算法 | aes256 |
认证算法 | sha256 | |
DH分组 | group14 | |
SA生存周期(秒) | 86400 |
前提条件
配置华为防火墙之前,请先在阿里云侧完成创建VPN网关实例、创建用户网关、创建IPsec连接、配置VPN网关路由的任务。
静态路由方式,请参见建立VPC到本地数据中心的连接(双隧道模式)。
BGP动态路由方式,请参见建立VPC到本地数据中心的连接(双隧道模式和BGP路由)。
针对单出口和双出口场景,用户网关的配置有如下区别:
单出口:只需创建1个用户网关。建立IPsec连接时,两条隧道都选择同一个用户网关。
双出口:需要创建2个用户网关。建立IPsec连接时,两条隧道选择各自对应的用户网关。
操作步骤
本文使用华为USG6000V2防火墙进行配置示例。不同型号版本的防火墙配置可能存在差别,您可以根据实际使用的版本,参考相应的文档或咨询防火墙厂商进行操作配置。
本文给出4种场景配置示例,您可以根据本地设备的实际情况,查看对应的配置步骤。
单出口+静态路由
单公网IP单出口场景下,您可以将华为防火墙的单个出口,绑定至两个Tunnel接口,并为其配置不同的IPsec policy,以此与阿里云的主备隧道进行连接。同时使用IPsec策略的反向路由注入功能来自动生成指向隧道的路由,并自动关联IPsec隧道协商状态来切换流量。
步骤一:接口网络配置
分别为华为防火墙的公网接口和私网接口配置IP地址和安全域,并配置路由。
#公网接口
interface GigabitEthernet1/0/0
ip addr 10.32.0.174 24
service-manage ping permit
quit
#私网接口
interface GigabitEthernet1/0/2
ip addr 10.34.0.9 24
service-manage ping permit
quit
#公私网接口加入安全域
firewall zone untrust
add interface GigabitEthernet 1/0/0
quit
firewall zone trust
add interface GigabitEthernet 1/0/2
quit
#配置对端VPN网关的公网地址32位路由指向公网
ip route-static 3.3.XX.XX 32 10.32.0.174
ip route-static 4.4.XX.XX 32 10.32.0.174
#配置本端内网网段路由指向私网
ip route-static 10.0.0.0 8 10.34.0.253
步骤二:隧道配置
新建两个Tunnel接口,以对接云端的主备隧道。
#配置Tunnel口,应用IPsec安全框架到Tunnel口
interface tunnel 1
tunnel-protocol ipsec
ip address unnumbered interface GigabitEthernet1/0/0
service-manage ping permit
quit
interface tunnel 2
tunnel-protocol ipsec
ip address unnumbered interface GigabitEthernet1/0/0
service-manage ping permit
quit
#Tunnel接口加入安全域
firewall zone untrust
add interface Tunnel 1
add interface Tunnel 2
quit
步骤三:IPsec提议和策略配置
进行IPsec和IKE配置,注意和阿里云侧保持一致。
#配置IPsec安全提议
ipsec proposal to-ali-prop
encapsulation-mode tunnel
esp authentication-algorithm sha2-256
esp encryption-algorithm aes-256
quit
#配置IKE安全提议
ike proposal 1
dh group14
authentication-method pre-share
encryption-algorithm aes-256
integrity-algorithm hmac-sha2-256
prf hmac-sha2-256
sa duration 86400
quit
#配置IKE peer,两个peer分别对应阿里云上两个隧道,remote-address是阿里云上公网ip地址;
ike peer to-ali-peer1
version 2
ike-proposal 1
remote-address 3.3.XX.XX
pre-shared-key ChangeMe****
remote-id-type none
local-id 1.1.XX.XX
dpd type periodic
quit
ike peer to-ali-peer2
version 2
ike-proposal 1
remote-address 4.4.XX.XX
pre-shared-key ChangeMe****
remote-id-type none
local-id 1.1.XX.XX
dpd type periodic
quit
#配置感兴趣流,这里感兴趣流使用地址组的方式
ip address-set to-ali-subnets type group
address 0 192.168.0.0 mask 16
quit
ip address-set local-subnets type group
address 0 10.34.0.0 mask 16
quit
acl number 3000
rule 5 permit ip source address-set local-subnets destination address-set to-ali-subnets
quit
#配置IPsec policy,引用上面创建的acl、ike peer、ipsec proposal,并设置路由注入功能
ipsec policy to-ali-policy1 1 isakmp
security acl 3000
pfs dh-group14
ike-peer to-ali-peer1
proposal to-ali-prop
tunnel local applied-interface
sa duration traffic-based 0
sa duration time-based 86400
route inject dynamic preference 10
quit
ipsec policy to-ali-policy2 1 isakmp
security acl 3000
pfs dh-group14
ike-peer to-ali-peer2
proposal to-ali-prop
tunnel local applied-interface
sa duration traffic-based 0
sa duration time-based 86400
route inject dynamic preference 20
quit
#配置tunnel口,应用IPsec策略到tunnel口
interface tunnel 1
ip address unnumbered interface GigabitEthernet1/0/0
tunnel-protocol ipsec
service-manage ping permit
ipsec policy to-ali-policy1
quit
interface tunnel 2
ip address unnumbered interface GigabitEthernet1/0/0
tunnel-protocol ipsec
service-manage ping permit
ipsec policy to-ali-policy2
quit
步骤四:安全策略配置
配置安全策略,以允许IKE协议流量和IPsec数据流量的通过。
此处示例为简化的配置,请根据实际需要,自行补充细粒度的规则。
如果本地IDC侧有多个网段要与VPC互通,建议采用目的路由模式与华为防火墙对接。具体操作,请参见多网段配置方案推荐。
#配置Local域与Untrust域之间的域间安全策略,放通ike协商报文
security-policy
rule name policy1
source-zone local
source-address 10.32.0.174 32
destination-zone untrust
destination-address 3.3.XX.XX 32
destination-address 4.4.XX.XX 32
action permit
quit
rule name policy2
source-zone untrust
source-address 3.3.XX.XX 32
source-address 4.4.XX.XX 32
destination-zone local
destination-address 10.32.0.174 32
action permit
quit
quit
#配置Trust域与Untrust域之间的域间安全策略,放通数据报文
security-policy
rule name policy3
source-zone trust
source-address 10.0.0.0 8
destination-zone untrust
destination-address 192.168.0.0 16
action permit
quit
rule name policy4
source-zone untrust
source-address 192.168.0.0 16
destination-zone trust
destination-address 10.0.0.0 8
action permit
quit
quit
步骤五:结果验证
在本地数据中心侧,设置本地数据中心服务器到华为防火墙的路由后,您可以开始测试本地数据中心和阿里云VPC之间的网络连通性,并验证主备切换。
测试本地数据中心和VPC之间的连通性。
登录VPC下任意一个ECS实例。关于如何登录ECS实例,请参见ECS远程连接方式概述。
在ECS实例中执行
ping
命令,访问本地数据中心内的服务器,验证通信是否正常。如果ECS实例可以收到本地数据中心服务器的回复报文,则证明本地数据中心和VPC之间可以正常通信。
ping <本地数据中心服务器私网IP地址>
测试IPsec-VPN连接的高可用性。
登录VPC下任意一个ECS实例。关于如何登录ECS实例,请参见ECS远程连接方式概述。
执行以下命令,使VPC下的ECS实例连续向本地数据中心发送访问报文。
ping <本地数据中心服务器私网IP地址> -c 10000
中断IPsec-VPN连接下的主隧道。
您可以通过修改IPsec连接主隧道的预共享密钥来中断主隧道,主隧道两端的预共享密钥不一致,则主隧道会中断。
中断主隧道后,您可以观察VPC实例下ECS实例的通信情况,发现ECS实例下的流量在短暂中断后,又重新恢复通信,则表示在主隧道中断后,流量自动通过备隧道进行通信。
单出口+BGP路由
针对BGP示例,本处直接基于“单出口+静态路由“场景做增量配置。
步骤一:配置BGP
完成“单出口+静态路由”场景的步骤一至步骤四后,进行如下配置。
#关闭路由注入
ipsec policy to-ali-policy1 1 isakmp
undo route inject
sa trigger-mode auto
quit
ipsec policy to-ali-policy2 1 isakmp
undo route inject
sa trigger-mode auto
quit
#感兴趣流的源和目的都设为any
acl number 3000
undo rule 5
rule 10 permit ip
quit
#修改Tunnel的ip地址为169.254.XX.XX地址,需要和阿里云上bgp地址配置在同一个网段内
interface Tunnel1
ip address 169.254.10.2 30
quit
interface Tunnel2
ip address 169.254.20.2 30
quit
#修改IPsec policy的tunnel local地址为公网接口地址
ipsec policy to-ali-policy1 1 isakmp
tunnel local 10.32.0.174
quit
ipsec policy to-ali-policy2 1 isakmp
tunnel local 10.32.0.174
quit
#设置BGP本端和对端
bgp 45001
router-id 169.254.10.2
peer 169.254.10.1 as-number 45104
peer 169.254.20.1 as-number 45104
ipv4-family unicast
undo synchronization
network 10.34.0.0 255.255.255.0
peer 169.254.10.1 enable
peer 169.254.20.1 enable
#添加安全策略
security-policy
rule name policy1
source-address 169.254.0.0 16
quit
rule name policy2
destination-address 169.254.0.0 16
quit
quit
步骤二:结果验证
您可以开始测试本地数据中心和阿里云VPC之间的网络连通性,并验证主备切换。
测试本地数据中心和VPC之间的连通性。
登录VPC下任意一个ECS实例。关于如何登录ECS实例,请参见ECS远程连接方式概述。
在ECS实例中执行
ping
命令,访问本地数据中心内的服务器,验证通信是否正常。如果ECS实例可以收到本地数据中心服务器的回复报文,则证明本地数据中心和VPC之间可以正常通信。
ping <本地数据中心服务器私网IP地址>
测试IPsec-VPN连接的高可用性。
登录VPC下任意一个ECS实例。关于如何登录ECS实例,请参见ECS远程连接方式概述。
执行以下命令,使VPC下的ECS实例连续向本地数据中心发送访问报文。
ping <本地数据中心服务器私网IP地址> -c 10000
中断IPsec-VPN连接下的主隧道。
您可以通过修改IPsec连接主隧道的预共享密钥来中断主隧道,主隧道两端的预共享密钥不一致,则主隧道会中断。
中断主隧道后,您可以观察VPC实例下ECS实例的通信情况,发现ECS实例下的流量在短暂中断后,又重新恢复通信,则表示在主隧道中断后,流量自动通过备隧道进行通信。
双出口+静态路由
双公网IP双出口场景下,您可以将华为防火墙两个出口,分别绑定至两个Tunnel接口,并为其配置不同的IPsec policy,以此与阿里云的主备隧道进行连接。同时使用IPsec策略的反向路由注入功能来自动生成指向隧道的路由,并自动关联IPsec隧道协商状态来切换流量。
步骤一:接口网络配置
分别为公网接口和私网接口配置IP地址和安全域,并配置路由。
#公网接口1
interface GigabitEthernet1/0/0
ip addr 10.32.0.174 24
service-manage ping permit
quit
#公网接口2
interface GigabitEthernet1/0/1
ip addr 10.33.0.237 24
service-manage ping permit
quit
#私网接口
interface GigabitEthernet1/0/2
ip addr 10.34.0.9 24
service-manage ping permit
quit
#公私网接口加入安全域
firewall zone untrust
add interface GigabitEthernet 1/0/0
add interface GigabitEthernet 1/0/1
quit
firewall zone trust
add interface GigabitEthernet 1/0/2
quit
#配置对端VPN网关的公网地址32位路由指向公网
ip route-static 3.3.XX.XX 32 10.32.0.174
ip route-static 4.4.XX.XX 32 10.33.0.237
#配置本端内网网段路由指向私网
ip route-static 10.0.0.0 8 10.34.0.253
步骤二:隧道配置
新建两个Tunnel接口,以对接云端的主备隧道。
#配置Tunnel口,应用IPsec安全框架到Tunnel口
interface tunnel 1
tunnel-protocol ipsec
ip address unnumbered interface GigabitEthernet1/0/0
service-manage ping permit
quit
interface tunnel 2
tunnel-protocol ipsec
ip address unnumbered interface GigabitEthernet1/0/1
service-manage ping permit
quit
#Tunnel接口加入安全域
firewall zone untrust
add interface Tunnel 1
add interface Tunnel 2
quit
步骤三:IPsec提议和策略配置
进行IPsec和IKE配置,注意和阿里云侧保持一致。
#配置IPsec安全提议
ipsec proposal to-ali-prop
encapsulation-mode tunnel
esp authentication-algorithm sha2-256
esp encryption-algorithm aes-256
quit
#配置IKE安全提议
ike proposal 1
dh group14
authentication-method pre-share
encryption-algorithm aes-256
integrity-algorithm hmac-sha2-256
prf hmac-sha2-256
sa duration 86400
quit
#配置IKE peer,两个peer分别对应阿里云上两个隧道,remote-address是阿里云上公网ip地址
ike peer to-ali-peer1
version 2
ike-proposal 1
remote-address 3.3.XX.XX
pre-shared-key ChangeMe****
remote-id-type none
local-id 1.1.XX.XX
dpd type periodic
quit
ike peer to-ali-peer2
version 2
ike-proposal 1
remote-address 4.4.XX.XX
pre-shared-key ChangeMe****
remote-id-type none
local-id 2.2.XX.XX
dpd type periodic
quit
#配置感兴趣流,这里感兴趣流使用地址组的方式
ip address-set to-ali-subnets type group
address 0 192.168.0.0 mask 16
quit
ip address-set local-subnets type group
address 0 10.34.0.0 mask 16
quit
acl number 3000
rule 5 permit ip source address-set local-subnets destination address-set to-ali-subnets
quit
#配置IPsec policy,引用上面创建的acl、ike peer、IPsec proposal,并设置路由注入功能
ipsec policy to-ali-policy1 1 isakmp
security acl 3000
pfs dh-group14
ike-peer to-ali-peer1
proposal to-ali-prop
tunnel local applied-interface
sa duration traffic-based 0
sa duration time-based 86400
route inject dynamic preference 10
quit
ipsec policy to-ali-policy2 1 isakmp
security acl 3000
pfs dh-group14
ike-peer to-ali-peer2
proposal to-ali-prop
tunnel local applied-interface
sa duration traffic-based 0
sa duration time-based 86400
route inject dynamic preference 20
quit
#配置tunnel口,应用IPsec策略到tunnel口
interface tunnel 1
ip address unnumbered interface GigabitEthernet1/0/0
tunnel-protocol ipsec
service-manage ping permit
ipsec policy to-ali-policy1
quit
interface tunnel 2
ip address unnumbered interface GigabitEthernet1/0/1
tunnel-protocol ipsec
service-manage ping permit
ipsec policy to-ali-policy2
quit
步骤四:安全策略配置
配置安全策略,以允许IKE协议流量和IPsec数据流量的通过。
此处示例为简化的配置,请根据实际需要,自行补充细粒度的规则。
如果本地IDC侧有多个网段要与VPC互通,建议采用目的路由模式与华为防火墙对接。具体操作,请参见多网段配置方案推荐。
#配置Local域与Untrust域之间的域间安全策略,放通ike协商报文
security-policy
rule name policy1
source-zone local
source-address 10.32.0.174 32
source-address 10.33.0.237 32
destination-zone untrust
destination-address 3.3.XX.XX 32
destination-address 4.4.XX.XX 32
action permit
quit
rule name policy2
source-zone untrust
source-address 3.3.XX.XX 32
source-address 4.4.XX.XX 32
destination-zone local
destination-address 10.32.0.174 32
destination-address 10.33.0.237 32
action permit
quit
quit
#配置Trust域与Untrust域之间的域间安全策略,放通数据报文
security-policy
rule name policy3
source-zone trust
source-address 10.0.0.0 8
destination-zone untrust
destination-address 192.168.0.0 16
action permit
quit
rule name policy4
source-zone untrust
source-address 192.168.0.0 16
destination-zone trust
destination-address 10.0.0.0 8
action permit
quit
quit
步骤五:结果验证
在本地数据中心侧,设置本地数据中心客户端到华为防火墙的路由后,您可以开始测试本地数据中心和阿里云VPC之间的网络连通性,并验证主备切换。
测试本地数据中心和VPC之间的连通性。
登录VPC下任意一个ECS实例。关于如何登录ECS实例,请参见ECS远程连接方式概述。
在ECS实例中执行
ping
命令,访问本地数据中心内的服务器,验证通信是否正常。如果ECS实例可以收到本地数据中心服务器的回复报文,则证明本地数据中心和VPC之间可以正常通信。
ping <本地数据中心服务器私网IP地址>
测试IPsec-VPN连接的高可用性。
登录VPC下任意一个ECS实例。关于如何登录ECS实例,请参见ECS远程连接方式概述。
执行以下命令,使VPC下的ECS实例连续向本地数据中心发送访问报文。
ping <本地数据中心服务器私网IP地址> -c 10000
中断IPsec-VPN连接下的主隧道。
您可以通过修改IPsec连接主隧道的预共享密钥来中断主隧道,主隧道两端的预共享密钥不一致,则主隧道会中断。
中断主隧道后,您可以观察VPC实例下ECS实例的通信情况,发现ECS实例下的流量在短暂中断后,又重新恢复通信,则表示在主隧道中断后,流量自动通过备隧道进行通信。
双出口+BGP路由
针对BGP示例,本处直接基于“双出口+静态路由“场景做增量配置。
步骤一:配置BGP
完成“双出口+静态路由”场景的步骤一至步骤四后,进行如下配置。
#关闭路由注入
ipsec policy to-ali-policy1 1 isakmp
undo route inject
sa trigger-mode auto
quit
ipsec policy to-ali-policy2 1 isakmp
undo route inject
sa trigger-mode auto
quit
#感兴趣流的源和目的都设为any
acl number 3000
undo rule 5
rule 10 permit ip
quit
#修改Tunnel的ip地址为169.254.XX.XX地址,需要和阿里云上bgp地址配置在同一个网段内
interface Tunnel1
ip address 169.254.10.2 30
quit
interface Tunnel2
ip address 169.254.20.2 30
quit
#修改IPsec policy的tunnel local地址为公网接口地址
ipsec policy to-ali-policy1 1 isakmp
tunnel local 10.32.0.174
quit
ipsec policy to-ali-policy2 1 isakmp
tunnel local 10.33.0.237
quit
#设置BGP本端和对端
bgp 45001
router-id 169.254.10.2
peer 169.254.10.1 as-number 45104
peer 169.254.20.1 as-number 45104
ipv4-family unicast
undo synchronization
network 10.34.0.0 255.255.255.0
peer 169.254.10.1 enable
peer 169.254.20.1 enable
#添加安全策略
security-policy
rule name policy1
source-address 169.254.0.0 16
quit
rule name policy2
destination-address 169.254.0.0 16
quit
quit
步骤二:结果验证
您可以开始测试本地数据中心和阿里云VPC之间的网络连通性,并验证主备切换。
测试本地数据中心和VPC之间的连通性。
登录VPC下任意一个ECS实例。关于如何登录ECS实例,请参见ECS远程连接方式概述。
在ECS实例中执行
ping
命令,访问本地数据中心内的服务器,验证通信是否正常。如果ECS实例可以收到本地数据中心服务器的回复报文,则证明本地数据中心和VPC之间可以正常通信。
ping <本地数据中心服务器私网IP地址>
测试IPsec-VPN连接的高可用性。
登录VPC下任意一个ECS实例。关于如何登录ECS实例,请参见ECS远程连接方式概述。
执行以下命令,使VPC下的ECS实例连续向本地数据中心发送访问报文。
ping <本地数据中心服务器私网IP地址> -c 10000
中断IPsec-VPN连接下的主隧道。
您可以通过修改IPsec连接主隧道的预共享密钥来中断主隧道,主隧道两端的预共享密钥不一致,则主隧道会中断。
中断主隧道后,您可以观察VPC实例下ECS实例的通信情况,发现ECS实例下的流量在短暂中断后,又重新恢复通信,则表示在主隧道中断后,流量自动通过备隧道进行通信。