ENS实例之间,可以通过ENA完成互通,也可以通过部署第三方FortiGate程序来完成互通,本文介绍通过FortiGate的方式完成互通。而ENS与IDC之间,ENS与ECS之间互通也可使用类似方案完成。
概述
本文介绍FortiGate在ENS上安装部署的方式,以实现不同ENS节点的VPC内网通过VPN互通。一共分为以下四个步骤进行描述:
-
场景介绍
-
安装FortiGate
-
配置FortiGate
-
测试互通性
场景介绍
-
当客户使用多个边缘节点服务时,这些边缘节点服务之间可以通过专有线路进行广域网互联,也可以通过VPN的方式进行互联,本文主要介绍通过VPN的方式互联。
-
在进行网络互联之前,需要提前规划IP地址,并确定测试方式为VM1与VM4之间互相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”实现内网互通。

安装FortiGate
本部分将对如何从ENS控制台依次创建VPC、交换机、安全组、实例等进行FortiGate创建进行介绍,共分为四个步骤:
-
在ENS上创建VPC和交换机
-
配置安全组
-
部署FortiGate实例
-
下发引流配置
1. 在ENS上创建VPC和交换机
-
登录ENS控制台依次选择,选择已使用的节点,输入名称、IPv4网段,同时配置交换机,输入子网段。
IPv4网段推荐网段为
10.0.0.0/8,创建成功后网段不能修改。交换机的IPv4子网段默认为10.0.0.0/24,可用IP数为253。单个网络支持创建的交换机数量为3个。 -
点击创建后,在网络和交换机页面可查看刚才新增的VPC和交换机,以确定已经创建成功。
2. 配置安全组
因为安全组默认会过滤流量,所以需要针对安全组做特别配置,需要放开部分流量端口,测试中为了方便,默认允许入方向所有流量,也可以最严格配置,仅允许SSH、ICMP,HTTPS、UDP流量访问。
-
选择。
在创建安全组页面,填写安全组名称(必填)和描述。在访问规则区域,切换入方向或出方向Tab页签配置规则,每条规则包含授权策略、优先级、协议类型、端口范围、授权对象和描述。系统默认添加四条入方向允许规则:自定义UDP、自定义TCP(HTTPS/443)、自定义TCP(SSH/22)和ICMP,优先级均为1,授权对象均为
0.0.0.0/0。可通过+添加新增规则,或对已有规则执行复制、删除操作。配置完成后单击创建。 -
出方向配置。默认全部允许。
3. 部署FortiGate实例
本步骤将展示如何按要求在ENS控制台上创建出FortiGate实例,这个实例将承载VPN的流量,对应图表中的VM2。
-
选择,点击创建实例。
-
在基础配置中,实例类型选择X86计算类型,实例规格参考FortiGate规格参考说明,镜像选择自定义镜像,选择提前准备的FortiGate镜像。其中ENS如何创建自定义镜像,可以参考此处:创建自定义镜像。
付费模式选择包年包月,购买时长根据实际需求设置。
-
配置网络和存储。网络选择自建网络,区域选择刚刚配置专有网络VPC所在节点,然后依次设置区域节点的网络,交换机和安全组,同时创建公网网卡,并设置带宽限速。
实例数量设置为1,带宽计费方式选择目标值带宽,实例计费周期选择按小时。系统盘保持默认类型,容量设置为20 GB。数据盘无需添加。
-
系统设置。设置密钥和实例名称,默认密码请参考FortiGate官方描述。
在系统设置页面,登录名默认为root,可选择自定义密码或密钥对方式登录。同时配置主机名称,可按需勾选有序后缀为实例名称和主机名添加有序后缀,并设置标签。
-
确认订单。核对基本配置、网络和存储、系统配置,选择购买时长,最后点击确认订单。
-
创建完毕之后,可通过在实例列表查看来验证是否创建成功。
在实例列表中可以看到已创建的FortiGate实例,状态列显示为运行中,表示实例部署成功。
-
上述步骤是创建VM2的方式,可以在同VPC上创建另外一个VM,但是不选择FortiGate的镜像,以用于验证。
4. 下发引流配置
以左侧ENS节点为例,当VM1创建完毕,VM2已经是FortiGate镜像之后,VM1取往VM4的流量,需要引到VM2对应的FortiGate上,这样才能实现通过VPN连接VM1和VM4。具体步骤如下:
-
选择,在网络列表中选择创建的网络,点击对应的路由表。
-
点击路由表ID,在路由表详情中,点击,配置对端IPv4网段,并把下一跳指定为之前配置好的fortiGate实例。
在 添加路由条目 对话框中,填写路由条目 名称,按需填写 描述,单击 确定。
-
配置好后界面会显示如下,则说明流量会引入到FortiGate上。
在 VPC 路由表的自定义路由条目页签下,可以看到一条状态为可用的自定义路由条目,其下一跳指向 FortiGate 实例资源。
5. 配置Site2 VPC及FortiGate
-
创建第二个专有网络VPC并分配子网段。
-
创建并配置FortiGate实例。
-
增加引流配置。
配置FortiGate
FortiGate的配置需要参考官方文档,不同版本会有少量差异,具体请参考:https://handbook.fortinet.com.cn/。
配置一共分为以下步骤:
-
注意事项
-
导入license
-
网络初始化
-
系统初始化
-
网络检查
-
配置IPSEC
1. 注意事项
在中国内地会对互联网访问的HTTP和HTTPS进行备案管理,否则不予开放80和443端口,请关注。
可以通过SSH登录FortiGate设备,修改HTTPS端口号,然后再进行备案。
下面是修改为8443端口的配置命令:
config system global
set admin-sport 8443
end
2. 导入license并初始化
对设备进行license导入后进行基础的初始化,验证网络配置生效后才可以做IPSEC的配置。
2.1 导入license
-
创建后的默认初始化账号密码为:账号 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 #
-
需要绑定FortiGate License,本文使用BYOL的方式绑定。
在弹出的 FortiGate VM License 对话框中,选择 Full license,在 Upload License File 区域单击 Select file 选择已获取的许可证文件,然后单击 OK。
-
需要特别注意的是,导入license后会自动重启,重启后需要重新登录,并开始配置IPSEC。
2.2 系统初始化
-
重启后,在网页输入IP地址进入控制台,通过HTTPS访问fortigate。
此时显示 FortiGate 管理登录页面,输入 Username(用户名)和 Password(密码),单击 Login 登录。
-
正常初始化配置。
FortiGate Setup 向导页面列出四个初始化步骤:Register with FortiCare、Automatic Patch Upgrades、Dashboard Setup 和 Change Your Password,单击 Begin 按钮开始配置。
-
第一次部署时,建议升级到最新版本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 版本。
-
系统需要进行初始化后才能继续使用,在左侧选择settings,进行如hostname、时区等配置。
将 Host name 设置为
FortiGWENSTest,Time zone 选择(GMT+8:00) Beijing, ChongQing, HongKong。
2.3 验证网络配置生效
-
测试本机
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 -
测试同VPC内VM
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 -
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 -
以上步骤没问题表示ENS上FortiGW完成基本配置。
3. 配置IPSEC
IPSec会有多种配置方式,在当前拓扑中,使用Site2Site的方式来部署,可以使VM1和VM4实现VPN互通,将两端分别定义为Site1和Site2。
3.1 Site1配置
配置如下,按照配置向导逐步执行即可:
-
点击左侧“VPN- IPsec Tunnels -Create New”,点击IPsec Tunnel。
-
输入名称、方式(Site to Site)。
在 Name 中输入
toVPC2fortigate,NAT Configuration 选择 No NAT between sites,Remote Device Type 选择 FortiGate。 -
配置接口,和共享密钥。
将Remote device设置为IP Address,填写远端IP地址,Outgoing Interface选择port2,Authentication method选择Pre-shared Key并输入预共享密钥。
-
配置感兴趣流(VPN互通网络:本端业务网段、对端业务网络)。
在 Policy & Routing 步骤中,将 Local Interface 设置为 port4,Local Subnets 设置为
10.0.100.0/24,Remote Subnets 设置为172.16.100.0/24,Internet Access 选择 None。 -
点击create核对信息,确认信息正确后点击Create。
Review Settings 页面的 Object Summary 区域显示配置摘要:Phase 1 interface 为
toVPC2fortigate,Local address group 为toVPC2fortigate_local,Remote address group 为toVPC2fortigate_remote,Phase 2 interface 为toVPC2fortigate,Static route 和 Blackhole route 均为static,Local to remote policies 为vpn_toVPC2fortigate_local,Remote to local policies 为vpn_toVPC2fortigate_remote。 -
配置Firewall Policy策略。在右侧Policy&Objects下Firewall Policy 策略允许内网到IPsec VPN隧道和IPsec VPN隧道到内网的策略(不同版本此处会有不同,较高版本通过VPN配置模板自动下发,参考FortiGate官方手册)。
示例中创建了两条 VPN 策略:从 port4 到 toVPC2 方向的策略 vpn_toVPC2_local_0(源 toVPC2_local,目标 toVPC2_remote)和从 toVPC2 到 port4 方向的策略 vpn_toVPC2_remote(源 toVPC2_remote,目标 toVPC2_local),均设置 Service 为 ALL、Action 为 ACCEPT、Schedule 为 always、NAT 为 Disabled。
-
配置业务静态路由。然后在左侧Network -> Static Routes手动配置路由,目的访问对端业务路由通过IPEC VPN隧道进行引流。(高版本通过VPN配置模板自动下发)。
在 New Static Route 表单中,Destination 选择 Subnet,值设置为
172.16.100.0/24;Interface 选择 toVPC2fortigate;Administrative Distance 设置为10;Status 选择 Enabled。静态路由列表中包含手动添加的业务路由(如
172.16.30.0/24经由 port4、192.168.5.0/24经由 AliENSToCustom),以及 VPN 向导自动创建的隧道路由(Destination 为 toVPC2fortigate_remote,Interface 为 toVPC2fortigate,备注 VPN: toVPC2fortigate (Created by VPN wizard))和对应的 Blackhole 路由。 -
接口开Ping用于测试。进行ping测试需要接口地址开Ping,默认是不开Ping,需要双击端口那一列进入,手工打开。
编辑接口 port4,Addressing mode 选择 Manual,IP/Netmask 填入
10.0.100.2/255.255.255.0,在 Administrative Access 区域仅勾选 PING。配置完成后,port4 接口 IP 地址为
10.0.100.2/255.255.255.0,Administrative Access 中 PING 已启用。
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,其余配置与前一条策略相同。
测试互通性
配置完毕后即可进行测试,测试时,确认图中的VM1和VM4能够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
其他使用场景
在上述介绍中,主要描述了ENS与ENS之间使用FortiGate实现VPN互通的方式,ENS作为FortiGate的基础设施,提供了算力+互联网的基础能力,FortiGate可以在此基础上实现其他的广域网VPN互联方式,比如以下方式:
-
ENS与阿里云ECS VPN互联
-
ENS与Office VPN互联
-
ENS与IDC互联
在这些实现方式中,ENS上安装FortiGate的镜像与前面的介绍一致,只要保证镜像正确,网络正常,那么主要配置就参考FortiGate的官方手册即可。
-
ENS使用FortiGate,Site2Site方式连接阿里云Region VPC,与ENS之间互联相似。

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

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

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