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

更新时间:
复制 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网段推荐网段为10.0.0.0/8,创建成功后网段不能修改。交换机的IPv4子网段默认为10.0.0.0/24,可用IP数为253。单个网络支持创建的交换机数量为3个。

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

2. 配置安全组

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

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

    创建安全组页面,填写安全组名称(必填)和描述。在访问规则区域,切换入方向出方向Tab页签配置规则,每条规则包含授权策略优先级协议类型端口范围授权对象描述。系统默认添加四条入方向允许规则:自定义UDP、自定义TCP(HTTPS/443)、自定义TCP(SSH/22)和ICMP,优先级均为1,授权对象均为0.0.0.0/0。可通过+添加新增规则,或对已有规则执行复制删除操作。配置完成后单击创建

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

3. 部署FortiGate实例

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

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

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

    付费模式选择包年包月购买时长根据实际需求设置。

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

    实例数量设置为1带宽计费方式选择目标值带宽实例计费周期选择按小时系统盘保持默认类型,容量设置为20 GB数据盘无需添加。

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

    在系统设置页面,登录名默认为root,可选择自定义密码密钥对方式登录。同时配置主机名称,可按需勾选有序后缀为实例名称和主机名添加有序后缀,并设置标签

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

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

    在实例列表中可以看到已创建的FortiGate实例,状态列显示为运行中,表示实例部署成功。

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

4. 下发引流配置

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

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

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

    添加路由条目 对话框中,填写路由条目 名称,按需填写 描述,单击 确定

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

    在 VPC 路由表的自定义路由条目页签下,可以看到一条状态为可用的自定义路由条目,其下一跳指向 FortiGate 实例资源。

5. 配置Site2 VPCFortiGate

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

  2. 创建并配置FortiGate实例。

  3. 增加引流配置。

配置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,执行 diagnose debug vm-print-license 命令查看当前许可证状态,确认当前为 EVAL 评估许可。

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的方式绑定。

在弹出的 FortiGate VM License 对话框中,选择 Full license,在 Upload License File 区域单击 Select file 选择已获取的许可证文件,然后单击 OK

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

2.2 系统初始化

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

    此时显示 FortiGate 管理登录页面,输入 Username(用户名)和 Password(密码),单击 Login 登录。

  2. 正常初始化配置。

    FortiGate Setup 向导页面列出四个初始化步骤:Register with FortiCareAutomatic Patch UpgradesDashboard SetupChange Your Password,单击 Begin 按钮开始配置。

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

    登录后进入 Dashboard > Status 页面,可查看以下面板:System Information(主机名、序列号、固件版本、运行模式、系统时间、WAN IP 等)、Licenses(FortiCare Support、IPS、AntiVirus、Web Filtering 等许可证激活状态)、Virtual Machine(vCPU 分配比例与 RAM 大小)、FortiGate Cloud(激活状态)、Security Fabric(连接状态)以及 CPU 实时使用率。确认当前固件版本(例如 v7.2.8)后,根据需要升级至推荐的 7.4.X 版本。

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

    Host name 设置为 FortiGWENSTestTime 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
  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 #
    FortiGWENSTest # exec ping www.ba
    PING www.a.shifen.com (153.x.x.x): 56 data bytes
    64 bytes from 153.x.x.x: icmp_seq=0 ttl=46 time=13.6 ms
    64 bytes from 153.x.x.x: icmp_seq=1 ttl=46 time=10.0 ms
    64 bytes from 153.x.x.x: icmp_seq=2 ttl=46 time=10.4 ms
    64 bytes from 153.x.x.x: icmp_seq=3 ttl=46 time=10.0 ms
    64 bytes from 153.x.x.x: 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 中输入 toVPC2fortigateNAT Configuration 选择 No NAT between sitesRemote Device Type 选择 FortiGate

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

    Remote device设置为IP Address,填写远端IP地址,Outgoing Interface选择port2Authentication method选择Pre-shared Key并输入预共享密钥。

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

    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官方手册)。

    示例中创建了两条 VPN 策略:从 port4toVPC2 方向的策略 vpn_toVPC2_local_0(源 toVPC2_local,目标 toVPC2_remote)和从 toVPC2port4 方向的策略 vpn_toVPC2_remote(源 toVPC2_remote,目标 toVPC2_local),均设置 Service 为 ALL、Action 为 ACCEPT、Schedule 为 always、NAT 为 Disabled

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

    New Static Route 表单中,Destination 选择 Subnet,值设置为 172.16.100.0/24Interface 选择 toVPC2fortigateAdministrative Distance 设置为 10Status 选择 Enabled

    静态路由列表中包含手动添加的业务路由(如 172.16.30.0/24 经由 port4192.168.5.0/24 经由 AliENSToCustom),以及 VPN 向导自动创建的隧道路由(Destination 为 toVPC2fortigate_remote,Interface 为 toVPC2fortigate,备注 VPN: toVPC2fortigate (Created by VPN wizard))和对应的 Blackhole 路由。

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

    编辑接口 port4Addressing mode 选择 ManualIP/Netmask 填入 10.0.100.2/255.255.255.0,在 Administrative Access 区域仅勾选 PING

    配置完成后,port4 接口 IP 地址为 10.0.100.2/255.255.255.0Administrative AccessPING 已启用。

3.2 Site2配置

  • VPN > IPsec Tunnels 页面,Site to Site - FortiGate 分组下已建立隧道 toVPC1,Interface Binding 为 port1,Status 为 Up(绿色),Ref. 值为 4。

    在 FortiGate 管理控制台中,导航至 Network > Static Routes 页面,VPN 向导自动创建了两条静态路由:第一条目的地为 toVPC1_remote,接口为 toVPC1(VPN 隧道),状态为 Enabled;第二条目的地为 toVPC1_remote,接口为 Blackhole,状态为 Enabled。两条路由的 Comments 均为 VPN: toVPC1 (Created by VPN wizard)

    Policy & Objects > Firewall Policy 页面中,VPN 向导已自动创建两条双向防火墙策略。策略 vpn_toVPC1_local_0(port2 → toVPC1):Source 为 toVPC1_local,Destination 为 toVPC1_remote,Schedule 为 always,Service 为 ALL,Action 为 ACCEPT,NAT 为 Disabled,Security Profiles 为 SSL no-inspection,Log 为 All。策略 vpn_toVPC1_remote_0(toVPC1 → port2):Source 为 toVPC1_remote,Destination 为 toVPC1_local,其余配置与前一条策略相同。

测试互通性

配置完毕后即可进行测试,测试时,确认图中的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