边缘云广域网互通解决方案

更新时间:
复制 MD 格式

ENS实例之间,可以通过ENA完成互通,也可以通过部署第三方FortiGate程序来完成互通,本文介绍通过FortiGate的方式完成互通。而ENSIDC之间,ENSECS之间互通也可使用类似方案完成。

概述

本文介绍FortiGateENS上安装部署的方式,以实现不同ENS节点的VPC内网通过VPN互通。一共分为以下四个步骤进行描述:

  • 场景介绍

  • 安装FortiGate

  • 配置FortiGate

  • 测试互通性

场景介绍

  • 当客户使用多个边缘节点服务时,这些边缘节点服务之间可以通过专有线路进行广域网互联,也可以通过VPN的方式进行互联,本文主要介绍通过VPN的方式互联。

  • 在进行网络互联之前,需要提前规划IP地址,并确定测试方式为VM1VM4之间互相ping来验证连通性。

1. IP地址规划

ENS VPC

网段

实例

内网IP

公网IP

ENS VPC1

10.0.100.0/24

VM2(部署 FortiGate)

10.0.100.2

创建实例时候申请或者使用eip

VM1

10.0.100.3

ENS VPC2

172.16.100.0/24

VM3(部署FortiGate)

172.16.100.2

创建实例时候申请或者使用eip

VM4

172.16.100.3

2. 网络拓扑

网络拓扑如下,客户在ENS节点1和节点2分别拥有VPC,并在VPC内部都有独立的VM,在本次互通测试中,需要使得下图中的“ENS VM1”和“ENS VM4”实现内网互通。

image

安装FortiGate

本部分将对如何从ENS控制台依次创建VPC、交换机、安全组、实例等进行FortiGate创建进行介绍,共分为四个步骤:

  1. ENS上创建VPC和交换机

  2. 配置安全组

  3. 部署FortiGate实例

  4. 下发引流配置

1. 在ENS上创建VPC和交换机

  1. 登录ENS控制台依次选择网络管理 > 网络 > 创建网络,选择已使用的节点,输入名称IPv4网段,同时配置交换机,输入子网段。

    其中,IPv4网段支持推荐网段高级配置网段两种模式,创建成功后网段不能修改。单ENS节点支持创建的网络数量为5个,单个网络支持创建的交换机数量为3个。

  2. 点击创建后,在网络交换机页面可查看刚才新增的VPC和交换机,以确定已经创建成功。

2. 配置安全组

因为安全组默认会过滤流量,所以需要针对安全组做特别配置,需要放开部分流量端口,测试中为了方便,默认允许入方向所有流量,也可以最严格配置,仅允许SSH、ICMP,HTTPS、UDP流量访问。

  1. 选择网络管理 > 安全组管理 > 创建安全组

    创建安全组页面,填写安全组名称描述。在访问规则区域,可分别配置入方向出方向规则。系统默认添加四条入方向允许规则:自定义UDP、自定义TCP(HTTPS 443)、自定义TCP(SSH 22)、自定义ICMP,授权对象均为0.0.0.0/0,优先级为1。可根据需要单击添加复制删除规则。完成配置后单击创建

  2. 出方向配置。默认全部允许。

    出方向规则表格包含授权策略优先级协议类型端口范围授权对象描述列,可通过+添加链接新增规则。

3. 部署FortiGate实例

本步骤将展示如何按要求在ENS控制台上创建出FortiGate实例,这个实例将承载VPN的流量,对应图表中的VM2。

  1. 选择算力与镜像 > 实例,点击创建实例

  2. 基础配置中,实例类型选择X86计算类型实例规格参考FortiGate规格参考说明镜像选择自定义镜像选择提前准备的FortiGate镜像其中ENS如何创建自定义镜像,可以参考此处:创建自定义镜像

    付费模式选择包年包月,根据需要设置购买时长

  3. 配置网络和存储网络选择自建网络区域选择刚刚配置专有网络VPC所在节点,然后依次设置区域节点的网络交换机安全组,同时创建公网网卡,并设置带宽限速

    设置带宽计费方式日峰值带宽实例计费周期按小时带宽限速100 Mbps。配置系统盘类型及容量(默认20 GB),按需添加数据盘

  4. 系统设置。设置密钥和实例名称,默认密码请参考FortiGate官方描述。

    此外,还需设置主机名称,可勾选有序后缀为实例名称和主机名添加有序后缀,并按需配置标签键值对。

  5. 确认订单。核对基本配置网络和存储系统配置,选择购买时长,最后点击确认订单

  6. 创建完毕之后,可通过在实例列表查看来验证是否创建成功。

    在实例列表中,确认已创建的实例状态列显示为运行中(绿色标识),即表示实例创建成功。

  7. 上述步骤是创建VM2的方式,可以在同VPC上创建另外一个VM,但是不选择FortiGate的镜像,以用于验证。

4. 下发引流配置

以左侧ENS节点为例,当VM1创建完毕,VM2已经是FortiGate镜像之后,VM1取往VM4的流量,需要引到VM2对应的FortiGate上,这样才能实现通过VPN连接VM1VM4。具体步骤如下:

  1. 选择网络管理 > 网络,在网络列表中选择创建的网络,点击对应的路由表。

  2. 点击路由表ID,在路由表详情中,点击路由条目列表 > 自定义路由条目 > 添加路由条目,配置对端IPv4网段,并把下一跳指定为之前配置好的fortiGate实例。

    在 ENS 控制台左侧导航栏选择网络管理 > 路由表,进入路由表列表页面,找到目标路由表并单击其路由表 ID 进入详情。

    在弹窗中还需填写路由条目名称(长度 1–128 字符),可选填描述,完成后单击确定

  3. 配置好后界面会显示如下,则说明流量会引入到FortiGate上。

    在 VPC 路由表的自定义路由条目页签下,表格中显示一条自定义路由条目,状态为可用,下一跳指向 FortiGate 实例,表示引流配置已生效。

5. 配置Site2 VPCFortiGate

  1. 创建第二个专有网络VPC并分配子网段。

    其中,IPv4网段支持推荐网段高级配置网段两种模式,创建成功后网段不能修改。单ENS节点支持创建的网络数量为5个,单个网络支持创建的交换机数量为3个。

  2. 创建并配置FortiGate实例。

  3. 增加引流配置。

    在 VPC 路由表的自定义路由条目页签下,表格中显示一条自定义路由条目,状态为可用,下一跳指向 FortiGate 实例,表示引流配置已生效。

配置FortiGate

FortiGate的配置需要参考官方文档,不同版本会有少量差异,具体请参考:https://handbook.fortinet.com.cn/

配置一共分为以下步骤:

  • 注意事项

  • 导入license

  • 网络初始化

  • 系统初始化

  • 网络检查

  • 配置IPSEC

1. 注意事项

在中国内地会对互联网访问的HTTPHTTPS进行备案管理,否则不予开放80443端口,请关注。

可以通过SSH登录FortiGate设备,修改HTTPS端口号,然后再进行备案。

下面是修改为8443端口的配置命令:

config system global                                       
    set admin-sport 8443                     
end
                                

2. 导入license并初始化

对设备进行license导入后进行基础的初始化,验证网络配置生效后才可以做IPSEC的配置。

2.1 导入license

  1. 创建后的默认初始化账号密码为:账号 admin,密码请在配置完毕后尽快修改默认密码,避免风险。

通过 SSH 登录 FortiGate VM 并执行许可证诊断命令,确认当前为评估许可证:

tianhong@U-Y7T49NCJ-2218 ~ % ssh admin@112.13.209.140
admin@1xxx40's password:
FortiGate-VM64-KVM # diagnose debug vm-print-license
SerialNumber: FGVMEVO84K13L75D
CreateDate: Tue Jul  2 02:39:59 2024
Model: EVAL (1)
CPU: 1
MEM: 2048
VDOM license:
    permanent: 2
    subscription: 0
FortiGate-VM64-KVM #

  1. 需要绑定FortiGate License,本文使用BYOL的方式绑定。

在弹出的许可证上传对话框中,选择 Full license,单击 Select file 上传 .lic 格式的许可证文件,然后单击 OK 完成导入。

许可证导入完成后,控制台显示 License 验证成功提示,系统随即自动重启以应用新许可证。

  1. 需要特别注意的是,导入license后会自动重启,重启后需要重新登录,并开始配置IPSEC。

2.2 系统初始化

  1. 重启后,在网页输入IP地址进入控制台,通过HTTPS访问fortigate。

    此时显示 FortiGate 登录界面,输入 UsernamePassword,单击 Login 登录系统。

  2. 正常初始化配置。

    通过 HTTPS 访问 FortiGate 管理地址,进入 FortiGate Setup 初始配置向导。页面列出四个配置步骤:Register with FortiCare(已完成)、Automatic Patch Upgrades(未完成)、Dashboard Setup(未完成)、Change Your Password(已完成)。单击 Begin 按钮继续完成剩余步骤。

  3. 第一次部署时,建议升级到最新版本7.4.X或咨询厂商(最新版本比如配置IPsec时候可以减少后期手动配置),登录进入控制台。

    登录后进入 Dashboard 页面,System Information 区域显示当前固件版本为 v7.2.8 build1639 (Mature),运行模式为 NATLicenses 区域显示 FortiCare Support、IPS、AntiVirus、Web Filtering 等许可证均为正常激活状态。Virtual Machine 区域显示已分配 vCPU 4/8、RAM 8 GiB。Security Fabric 连接处于禁用状态。

  4. 系统需要进行初始化后才能继续使用,在左侧选择settings,进行如hostname、时区等配置。

    Host name 字段输入主机名(如 FortiGWENSTest),在 System Time 区域的 Time zone 下拉框中选择对应时区(如 (GMT+8:00) Beijing, ChongQing, HongKong)。

2.3 验证网络配置生效

  1. 测试本机 ping 10.0.100.2

    FortiGWENSTest # exec ping 10.0.100.2
    PING 10.0.100.2 (10.0.100.2): 56 data bytes
    64 bytes from 10.0.100.2: icmp_seq=0 ttl=255 time=0.0 ms
    64 bytes from 10.0.100.2: icmp_seq=1 ttl=255 time=0.0 ms
    64 bytes from 10.0.100.2: icmp_seq=2 ttl=255 time=0.0 ms
    64 bytes from 10.0.100.2: icmp_seq=3 ttl=255 time=0.0 ms
    64 bytes from 10.0.100.2: icmp_seq=4 ttl=255 time=0.0 ms
    --- 10.0.100.2 ping statistics ---
    5 packets transmitted, 5 packets received, 0% packet loss
    round-trip min/avg/max = 0.0/0.0/0.0 ms
    FortiGWENSTest # exec ping 10.0.100.3
    PING 10.0.100.3 (10.0.100.3): 56 data bytes
    64 bytes from 10.0.100.3: icmp_seq=0 ttl=64 time=1.6 ms
    64 bytes from 10.0.100.3: icmp_seq=1 ttl=64 time=0.1 ms
    64 bytes from 10.0.100.3: icmp_seq=2 ttl=64 time=0.1 ms
    64 bytes from 10.0.100.3: icmp_seq=3 ttl=64 time=0.1 ms
    64 bytes from 10.0.100.3: icmp_seq=4 ttl=64 time=0.1 ms
    --- 10.0.100.3 ping statistics ---
    5 packets transmitted, 5 packets received, 0% packet loss
    round-trip min/avg/max = 0.1/0.4/1.6 ms
  2. 测试同VPCVM ping 10.0.100.3

    FortiGWENSTest # exec ping 10.0.100.3
    PING 10.0.100.3 (10.0.100.3): 56 data bytes
    64 bytes from 10.0.100.3: icmp_seq=0 ttl=64 time=1.6 ms
    64 bytes from 10.0.100.3: icmp_seq=1 ttl=64 time=0.1 ms
    64 bytes from 10.0.100.3: icmp_seq=2 ttl=64 time=0.1 ms
    64 bytes from 10.0.100.3: icmp_seq=3 ttl=64 time=0.1 ms
    64 bytes from 10.0.100.3: icmp_seq=4 ttl=64 time=0.1 ms
    --- 10.0.100.3 ping statistics ---
    5 packets transmitted, 5 packets received, 0% packet loss
    round-trip min/avg/max = 0.1/0.4/1.6 ms
  3. ping www.aliyun.com判断互联网连接是否正常。

    FortiGWENSTest # exec ping www.baxxx
    PING www.a.shifen.com (153.xxx.xxx.xxx): 56 data bytes
    64 bytes from 153.xxx.xxx.xxx: icmp_seq=0 ttl=46 time=13.6 ms
    64 bytes from 153.xxx.xxx.xxx: icmp_seq=1 ttl=46 time=10.0 ms
    64 bytes from 153.xxx.xxx.xxx: icmp_seq=2 ttl=46 time=10.4 ms
    64 bytes from 153.xxx.xxx.xxx: icmp_seq=3 ttl=46 time=10.0 ms
    64 bytes from 153.xxx.xxx.xxx: icmp_seq=4 ttl=46 time=10.0 ms
    --- www.xxx.com ping statistics ---
    5 packets transmitted, 5 packets received, 0% packet loss
    round-trip min/avg/max = 10.0/10.8/13.6 ms
  4. 以上步骤没问题表示ENSFortiGW完成基本配置。

3. 配置IPSEC

IPSec会有多种配置方式,在当前拓扑中,使用Site2Site的方式来部署,可以使VM1VM4实现VPN互通,将两端分别定义为Site1Site2。

3.1 Site1配置

配置如下,按照配置向导逐步执行即可:

  1. 点击左侧“VPN- IPsec Tunnels -Create New”,点击IPsec Tunnel。

  2. 输入名称、方式(Site to Site)。

    Name 中填写 toVPC2fortigateTemplate type 选择 Site to SiteNAT configuration 选择 No NAT between sitesRemote device type 选择 FortiGate,然后单击 Next

  3. 配置接口,和共享密钥。

    IPsec WizardAuthentication 步骤中,Remote device 选择 IP Address,填写远端设备 IP 地址,Outgoing Interface 选择 port2Authentication method 选择 Pre-shared Key 并输入密钥。

  4. 配置感兴趣流(VPN互通网络:本端业务网段、对端业务网络)。

    在 IPsec Wizard 的 Policy & Routing 步骤中,将 Local Interface 设置为 port4Local Subnets 设置为 10.0.100.0/24Remote Subnets 设置为 172.16.100.0/24Internet Access 选择 None

  5. 点击create核对信息,确认信息正确后点击Create。

    Review Settings 页面的 Object Summary 区域显示配置摘要:Phase 1 interfacetoVPC2fortigateLocal address grouptoVPC2fortigate_localRemote address grouptoVPC2fortigate_remotePhase 2 interfacetoVPC2fortigateStatic routeBlackhole route 均为 staticLocal to remote policiesvpn_toVPC2fortigate_localRemote to local policiesvpn_toVPC2fortigate_remote

  6. 配置Firewall Policy策略。在右侧Policy&ObjectsFirewall Policy 策略允许内网到IPsec VPN隧道和IPsec VPN隧道到内网的策略(不同版本此处会有不同,较高版本通过VPN配置模板自动下发,参考FortiGate官方手册)。

    具体需创建两条策略:从 port4toVPC2 方向的策略 vpn_toVPC2_local_0(源 toVPC2_local,目标 toVPC2_remote,计划 always,服务 ALL,动作 ACCEPT,NAT 关闭,安全配置文件 SSL no-inspection);从 toVPC2port4 方向的策略 vpn_toVPC2_remote(源 toVPC2_remote,目标 toVPC2_local,计划 always,服务 ALL,动作 ACCEPT,NAT 关闭,安全配置文件 SSL no-inspection)。

  7. 配置业务静态路由。然后在左侧Network -> Static Routes手动配置路由,目的访问对端业务路由通过IPEC VPN隧道进行引流。(高版本通过VPN配置模板自动下发)。

    设置 DestinationSubnet,值为 172.16.100.0/24Interface 选择 toVPC2fortigateAdministrative Distance 设为 10Status 保持 Enabled

    静态路由列表中包含业务路由(如 172.16.30.0/24 经接口 port4192.168.5.0/24 经接口 AliENSToCustom)以及 VPN 隧道路由(目的 toVPC2fortigate_remote,接口 toVPC2fortigate,由 VPN 向导自动创建),其中 VPN 隧道路由即为通过 IPSEC VPN 引流的关键条目。

  8. 接口开Ping用于测试。进行ping测试需要接口地址开Ping,默认是不开Ping,需要双击端口那一列进入,手工打开。

    port4Edit Interface 页面,Addressing mode 选择 ManualIP/Netmask 设置为 10.0.100.2/255.255.255.0,在 Administrative Access 区域勾选 PING

3.2 Site2配置

  • 在 FortiGate 管理界面中,选择 VPN > IPsec Tunnels,可确认隧道 toVPC1 已创建,隧道类型为 Site to Site - FortiGate,接口绑定为 port1,状态为 Up

    Network > Static Routes 页面中,VPN 向导自动创建了两条静态路由:第一条目的地为 toVPC1_remote,接口为 toVPC1(VPN 隧道),状态为 Enabled;第二条目的地同为 toVPC1_remote,接口为 Blackhole,状态为 Enabled。两条路由的 Gateway IP 均为空,Comments 均为 VPN: toVPC1 (Created by VPN wizard)

    VPN 向导在 Policy & Objects > Firewall Policy 下自动生成两条双向策略:策略 vpn_toVPC1_local_0(port2 → toVPC1 方向),Source 为 toVPC1_local,Destination 为 toVPC1_remote;策略 vpn_toVPC1_remote_0(toVPC1 → port2 方向),Source 为 toVPC1_remote,Destination 为 toVPC1_local。两条策略均设置 Schedule 为 always,Service 为 ALL,Action 为 ACCEPT,NAT 为 Disabled,Security Profiles 为 SSL no-inspection,Log 为 All

测试互通性

配置完毕后即可进行测试,测试时,确认图中的VM1VM4能够ping通,即证明VPN建立,以下是测试环境数据:

  • VM4 ping VM1

    [root@i-53at57icfbliwrbmzfjtlg1ha ~]# ping 10.0.100.3
    PING 10.0.100.3 (10.0.100.3) 56(84) bytes of data.
    64 bytes from 10.0.100.3: icmp_seq=1 ttl=62 time=0.377 ms
    64 bytes from 10.0.100.3: icmp_seq=2 ttl=62 time=0.351 ms
    64 bytes from 10.0.100.3: icmp_seq=3 ttl=62 time=0.329 ms
    64 bytes from 10.0.100.3: icmp_seq=4 ttl=62 time=0.358 ms
    64 bytes from 10.0.100.3: icmp_seq=5 ttl=62 time=0.349 ms
    64 bytes from 10.0.100.3: icmp_seq=6 ttl=62 time=0.274 ms
    64 bytes from 10.0.100.3: icmp_seq=7 ttl=62 time=0.333 ms
    64 bytes from 10.0.100.3: icmp_seq=8 ttl=62 time=0.341 ms
    64 bytes from 10.0.100.3: icmp_seq=9 ttl=62 time=0.335 ms
    64 bytes from 10.0.100.3: icmp_seq=10 ttl=62 time=0.346 ms
  • VM1 ping VM4

    64 bytes from 172.16.100.3: icmp_seq=1 ttl=62 time=0.795 ms
    64 bytes from 172.16.100.3: icmp_seq=2 ttl=62 time=0.345 ms
    64 bytes from 172.16.100.3: icmp_seq=3 ttl=62 time=0.350 ms
    64 bytes from 172.16.100.3: icmp_seq=4 ttl=62 time=0.334 ms
    64 bytes from 172.16.100.3: icmp_seq=5 ttl=62 time=0.352 ms
    64 bytes from 172.16.100.3: icmp_seq=6 ttl=62 time=0.355 ms
    64 bytes from 172.16.100.3: icmp_seq=7 ttl=62 time=0.357 ms
    64 bytes from 172.16.100.3: icmp_seq=8 ttl=62 time=0.326 ms
    64 bytes from 172.16.100.3: icmp_seq=9 ttl=62 time=0.331 ms
    64 bytes from 172.16.100.3: icmp_seq=10 ttl=62 time=0.331 ms
    64 bytes from 172.16.100.3: icmp_seq=11 ttl=62 time=0.374 ms
    64 bytes from 172.16.100.3: icmp_seq=12 ttl=62 time=0.359 ms
    64 bytes from 172.16.100.3: icmp_seq=13 ttl=62 time=0.355 ms
    64 bytes from 172.16.100.3: icmp_seq=14 ttl=62 time=0.347 ms
    64 bytes from 172.16.100.3: icmp_seq=15 ttl=62 time=0.353 ms

其他使用场景

在上述介绍中,主要描述了ENSENS之间使用FortiGate实现VPN互通的方式,ENS作为FortiGate的基础设施,提供了算力+互联网的基础能力,FortiGate可以在此基础上实现其他的广域网VPN互联方式,比如以下方式:

  • ENS与阿里云ECS VPN互联

  • ENSOffice VPN互联

  • ENSIDC互联

在这些实现方式中,ENS上安装FortiGate的镜像与前面的介绍一致,只要保证镜像正确,网络正常,那么主要配置就参考FortiGate的官方手册即可。

  • ENS使用FortiGate,Site2Site方式连接阿里云Region VPC,与ENS之间互联相似。

    image.png

  • ENS使用FortiGate,Site2Site方式连接阿里云Region VPC,FortiGateVPN Gateway直接建立。

    image.png

  • ENS使用FortiGate,Site2CPE方式连接客户的Office。

image.png

  • ENS使用FortiGate,Site2Site方式连接客户的IDC。

image.png