亚马逊AWS官方博客

中转网关(Transit Gateway) Connect连接类型集成FortiGate安全服务

一、中转网关(Transit Gateway) Connect功能介绍

SD-WAN或软件定义的广域网长期以来一直用于通过公共Internet连接数据中心和分支机构。在现在的网络设计中,这些网络还需要扩展到公有云架构。但是,传统的SD-WAN基础架构并不总是很适合此任务,通常架构SDWAN网络会大大增加网络设计和配置的复杂性,同时使维护起来也更为复杂。同时,许多亚马逊云科技客户正在网络上使用亚马逊云科技中转网关将其全球网络连接到亚马逊云科技骨干网。随着亚马逊云科技中转网关 Connect的启动,现在有了一种将您的SD-WAN基础架构与亚马逊云科技连接的原生方法。这使您可以轻松地将SD-WAN扩展到亚马逊云科技中,而无需在SD-WAN网络虚拟设备和中转 网关之间设置安全通道。 中转网关 Connect是一种新的附件类型,与安全通道连接相比,它支持通用路由封装(GRE)以获得更高的带宽性能。 中转网关 Connect支持边界网关协议(BGP)进行动态路由更新,并且无需配置静态路由。这简化了网络设计并降低了相关的运营成本。

中转网关Connect功能能带来的优势

  • 原生集成:您现在非常方便地将本地网络连接到亚马逊云科技 中转 网关,且无需配置复杂的安全通道连接。动态路由功能还能进一步简化了混合云环境中的路由管理。
  • SD-WAN与亚马逊云科技云之间的更高带宽互连:您不再需要管理和操作第三方设备与中转 网关之间的多个安全通道连接来支持更高的带宽。 中转网关 Connect通过使用水平扩展的GRE隧道来实现此目的,以在单个Connect附件中提供更高的带宽。这将每个Connect附件的总带宽增加到20 Gbps。
  • 端到端管理:您可以使用一个编排平台对全局网络执行端到端管理。 中转 网关 Connect通过与APN合作伙伴SD-WAN编排平台的更深层集成来实现此目的,并使您能够更新中转 网关路由表,从而做出更明智的路由决策。
  • 安全性和合规性:您可以使用中转 网关 Connect在第三方虚拟设备上使用私有IP地址,以建立与亚马逊云科技虚拟私有云(VPC)中资源的连接性和可访问性,从而减少了对Internet可路由的公共IP的需求。

二、中转网关 Connect常用架构

以下两种都是中转 网关 Connect使用的常用架构

图1,中转网关 Connect架构1 —— 通过云上虚拟SDWAN设备互联

图2,中转网关 Connect架构2 —— 结合Direct Connect直接和数据中心设备互联

中转网关 Connect可以通过互联云上SDAWN设备的方式,和云下的数据中心互通(如图1),也可以首先通过亚马逊云科技 Direct Connect与本地数据中心互通,再与作为传输的本地网络中运行的第三方分支机构或客户网关设备通过GRE互联(如图2)。总之,中转 网关 Connect功能在中转 网关和第三方设备之间建立GRE隧道。 然后,您可以在GRE隧道内与中转 网关建立BGP对等连接,以安全地交换路由信息。

三、Fortigate集成中转网关 Connect示例及详细配置

以下是本指南实践FortiGate 与中转网关 Connect 集成的架构图。

应用(App) VPC:部署客户工作负载的Spoke  VPC。中转网关连接可以在同一子网或其它专用子网中对接。

安全(Security) VPC: 部署Fortigate安全网关VPC,  2个可用区, 每个可用区有三个子网。分别为公共子网、私有子网和中转网关对接子网。FortiGate有 2 个网络接口,分别在公共子网和私有子网中各有一个网络接口。

中转网关(中转 网关):中转网关是连接Spoke 安全通道 和 HUB VPC的云路由器,连接到中转网关的VPC通过VPC attachment逻辑连接进行对接和数据传输。HUB 安全服务VPC将通过”connect attachment” 与中转网关进行对接和数据传输,每个可用区一个”Connect Attchment”逻辑接口。

3.1 中转网关Connect Attachment

“中转 网关 Connect Attachment”工作 在 “VPC Attachment”之上,VPC Attachment作为底层连接,中转 网关 Connect为上层叠加连接,采用 GRE隧道封装,单个中转 网关 Connect GRE隧道支持高达 5Gbps 的带宽。支持BGP动态路由协议打通中转 网关 和Fortigate安全服务网关。

3.2 创建VPC和子网

分别创建2个业务VPC和安全VPC

安全VPC子网10.0.0.0/24

创建子网

每个业务VPC一个子网,安全VPC创建6个子网,两个可用区,每个可用区3个子网。

四、在业务VPC安装测试WEB服务器

在业务VPC安装 Linux服务器,并安装apache   web server 和ssh server用于业务测试。

安装web 服务

启动WEB服务:

sudo systemctl start httpd
Sudo systemctl enable httpd

完成两个VPC 两台业务服务器创建

五、创建安全服务VPC  FortiGate实例

在两个可用区分别创建一个fortigate实例,如果没有冗余需求,可以创建一个Fortigate安全网关实例,Fortigate部署详细步骤参考https://docs.fortinet.com  部署文档。

Fortigate安全网关分配两块网卡,分别在 PUB LIC和PRIVATE 子网。

创建两个Fortigate实例,并激活license,Fortigate版本可选择亚马逊云科技云市场任意一个发布的正式版本,本指南选择FortiGate 6.4.5


六、 配置中转网关及其组件

在本节中,将讨论创建中转网关的步骤以及在安全 VPC 中与FortiGate集成的组件。

6.1 中转网关

从亚马逊云管理平台CONSOLE, 导航到 VPC->中转网关->中转网关 ,并单击创建新中转网关。

中转网关将使用 BGP 与Fortigate安全网关交换路由,指定中转网关将使用的 AS,新connect中转网关连接类型将在中转网关创建GRE连接点,为此需要指定 一个网段 用于GRE隧道连接地址.

在此处使用 默认BGP AS  64512 的和 1.0.0.0/24互联地址网段,其余的参数保留默认值。


6.2 中转网关连接VPC attachment

安全 VPC 和应用 VPC 需要与中转网关连接,以VPC attachment类型连接到中转网关。对于 App VPC,它可以在应用程序子网中创建中转网关连接,也可以在专用子网中创建中转网关连接。对于安全 VPC,在两个不同的可用区中有 2 个FortiGate,每个可用区需要创建中转网关连接,采用专用子网与中转网关连接。

VPC->中转网关->中转网关连接,单击”Create 中转 网关 Attachment”,选择VPC连接类型。

下面的屏幕截图显示为安全 VPC 创建 VPC 连接。在创建过程中选择两个用于中转网关对接的专用子网。

同样创建两个应用VPC中转网关连接。

三个VPC都连接到中转网关

6.3中转网关连接Connect attachment

底层VPC已经与中转网关连接,创建上层叠加层connect 类型中转网关连接。

VPC->中转网关->中转网关连接,单击”Create 中转 网关 Attachment”,选择connect 连接类型。

此时,中转网关有4个中转网关连接

6.4 中转网关路由表

在此指南中,所有三个 VPC 都连接到相同的中转网关路由表。所有三个 VPC 传播路由到同一路由表。如果需要控制和安全检查应用 VPC 之间的东西向流量,则需要多个中转网关路由表实现业务隔离,让业务间流量经过Fortigate安全网关。

中转网关默认会把连接的VPC进行路由关联和传递,发布路由到中转网关默认路由表。

VPC->中转网关->中转网关路由表

默认路由表里有3个VPC的路由

安全VPC不需要把整个VPC的路由通过VPC 连接方式发布进来,后面会通过中转网关connect 连接的BGP发布路由,因此,我们在此路由表里,删除安全VPC的Associations 和Propagations, 在Associations 和Propagations里只保留两个业务VPC 连接和 connect连接


路由表里传递两个业务VPC路由

6.5 Connect peers

Connect peers 是安全 VPC 中的Fortigate安全网关和中转网关的GRE 和 BGP 互联虚拟线路,从之前创建的中转网关连接connect 连接项添加connect peers.

VPC->中转网关->中转网关连接,点击之前创建的connect类型连接,点击connect peers 子面板。

在创建connect peers时,peer GRE  address为FortiGate安全网关用来建GRE隧道的接口地址,此处为port2接口IP,BGP  inside CIDR blocks 是GRE 隧道接口地址,网络掩码限定29位。 Peer ASN为fortigate 端AS。

如果在两个可用区创建两个Fortigate 安全网关,分别创建两个 CONNECT PEERS.

在中转网关创建完connect  peers后,GRE端点地址,和GRE隧道地址分配在connect peers 连接表里,由于Fortigate端还没有配置,此时connect peers邻居为down状态。

七、 VPC 子网路由表

调整三个VPC的路由表,以便将业务流量从应用 VPC 流向安全 VPC。

7.1 业务VPC 路由表

两个业务VPC不再设置互联网出口,任何业务VPC以外的网络的流量都需要通过中转网关路由到安全VPC互联网出口或其它VPC, 添加或修改VPC路由默认网关至中转网关。


7.2安全 VPC 路由表

安全 VPC 在每个AZ中有三个子网,GRE 隧道将在 FortiGate 的port2接口上结。需要添加一条去向GRE 对端地址1.0.0.0/24 网段路由指向中转网关。

八 、Fortigate安全网关配置

在FortiGate 安全网关需要配置GRE 隧道、隧道接口IP、BGP 路由、静态路由和防火墙策略。

8.1静态路由配置

在Fortigate上添加一条静态路由,目的为GRE端点网段1.0.0.0/24, 指定从port2接口出去,与中转网关建立GRE隧道,下一跳地址为子网第一个IP

Fortigate-1:
config router static
    edit 1
        set dst 1.0.0.0 255.255.255.0
        set 网关 10.0.0.17
        set device "port2"
    next
end

Fortigate-2:
config router static
    edit 1
        set dst 1.0.0.0 255.255.255.0
        set 网关 10.0.0.81
        set device "port2"
    next
end

8.2 GRE配置

用于创建GRE隧道的端点地址和已经在中转网关连接 peers里分配完成,按照 已分配的IP,在Fortigate安全网关上创建GRE隧道

Fortigate-1:
config system gre-tunnel
    edit "tgwc"
        set interface "port2"
        set remote-gw 1.0.0.4
        set local-gw 10.0.0.29
    next
en

fortigate-2:
config system gre-tunnel
    edit "tgwc"
        set interface "port2"
        set remote-gw 1.0.0.131
        set local-gw 10.0.0.90
    next
end

8.3配置GRE隧道接口IP

根据中转网关connect peers 分配的IP,配置GRE隧道接口IP,此IP地址用于建立BGP邻居。

Fortigate -1:
config system interface
    edit "tgwc"
        set ip 169.254.120.1 255.255.255.255
        set allowaccess ping 
        set remote-ip 169.254.120.2 255.255.255.248
    next
end

Fortigate-2:
config system interface
    edit "tgwc"
        set ip 169.254.121.1 255.255.255.255
        set allowaccess ping 
        set remote-ip 169.254.121.2 255.255.255.248
    next
end

!!!中转网关上的GRE 端点地址不可以PING. GRE接口IP可以PING,通过PING 中转网关上的GRE 接口IP 169.254.x.x   验证 中转网关connect类型连接是否成功。

8.4 配置BGP

在中转网关连接每个PEERS有两个BGP连接邻居,启用EBGP邻居多跳,启用向邻居发布默认路由及安全VPC 子网路由。

config router bgp
    set as 65510
    set router-id 169.254.100.1
    config neighbor
        edit "169.254.120.2"
            set capability-default-originate enable
            set ebgp-enforce-multihop enable
            set soft-reconfiguration enable
            set remote-as 64512
        next
        edit "169.254.120.3"
            set capability-default-originate enable
            set ebgp-enforce-multihop enable
            set soft-reconfiguration enable
            set remote-as 64512
        next
end
config network
        edit 1
            set prefix 10.0.0.16 255.255.255.240
        next
    end
end
Fortigate-2:
config router bgp
    set as 65511
    set router-id 169.254.100.2
    config neighbor
        edit "169.254.121.2"
            set capability-default-originate enable
            set ebgp-enforce-multihop enable
            set soft-reconfiguration enable
            set remote-as 64512
        next
        edit "169.254.121.3"
            set capability-default-originate enable
            set ebgp-enforce-multihop enable
            set soft-reconfiguration enable
            set remote-as 64512
        next
    end
    config network
        edit 1
            set prefix 10.0.0.80 255.255.255.240
        next
    end
end

8.5 防火墙策略 配置

8.5.1防问互联网出向策略

从业务服务器访问互联网,从中转网关经GRE 隧道 到Fortigate 安全网关访问Internet.

config firewall policy
    edit 1
        set name "1"
        set srcintf "tgwc"
        set dstintf "port1"
        set srcaddr "all"
        set dstaddr "all"
        set action accept
        set schedule "always"
        set service "ALL"
        set utm-status enable
        set ssl-ssh-profile "certificate-inspection"
        set webfilter-profile "monitor-all"
        set application-list "default"
        set nat enable
    next
end

8.5.2 互联网访问业务系统入站策略

通过Fortigate上的弹性IP或  Ingress routing将业务访问流量经过Fortigate安全网关安全检测。

config firewall vip
    edit "vpc2-web-server"
        set uuid a39feefc-ba1a-51eb-e1ca-91dba4aeeab4
        set mappedip "192.168.100.100"
        set extintf "port1"
        set portforward enable
        set extport 280
        set mappedport 80
    next
    edit "vpc2-ssh-server"
        set uuid c6a378f6-ba1a-51eb-69d2-edd646ee5d25
        set mappedip "192.168.100.100"
        set extintf "port1"
        set portforward enable
        set extport 222
        set mappedport 22
    next
    edit "vcp1-webserver"
        set uuid d921c744-ba1a-51eb-14b5-b368bf2fa237
        set mappedip "192.168.50.100"
        set extintf "port1"
        set portforward enable
        set extport 180
        set mappedport 80
    next
    edit "vpc1-ssh-server"
        set uuid e67c7038-ba1a-51eb-8d65-2d9ad8034f26
        set mappedip "192.168.50.100"
        set extintf "port1"
        set portforward enable
        set extport 122
        set mappedport 22
    next
end
config firewall policy
    edit 2
        set name "2"
        set srcintf "port1"
        set dstintf "tgwc"
        set srcaddr "all"
        set dstaddr "vcp1-webserver" "vpc1-ssh-server" "vpc2-ssh-server" "vpc2-web-server"
        set action accept
        set schedule "always"
        set service "HTTP" "SSH"
        set utm-status enable
        set ssl-ssh-profile "certificate-inspection"
        set av-profile "default"
        set ips-sensor "default"
        set logtraffic all
        set nat enable
    next
end

8.5.3 VPC间东西向流量安全检查

在此测试架构下没有控制业务VPC间的网络流量,但业务VPC进入安全VPC的流量需经过Fortigate安全检查。需要业务VPC间的流量安全检查,可通过中转网关多路由表方式实现,可参考https://docs.fortinet.com   相关手册

Config firewall policy
edit 3
        set name "3"
        set uuid 4256b2aa-ba1c-51eb-1691-6910ded0355f
        set srcintf "tgwc"
        set dstintf "port2"
        set srcaddr "all"
        set dstaddr "all"
        set action accept
        set schedule "always"
        set service "ALL"
        set utm-status enable
        set ssl-ssh-profile "certificate-inspection"
        set av-profile "default"
        set webfilter-profile "monitor-all"
        set application-list "default"
        set nat enable
    next
    edit 4
        set name "4"
        set uuid 63f76b84-ba1c-51eb-01a5-7fe837254fdc
        set srcintf "port2"
        set dstintf "tgwc"
        set srcaddr "all"
        set dstaddr "all"
        set action accept
        set schedule "always"
        set service "ALL"
        set utm-status enable
        set ssl-ssh-profile "certificate-inspection"
        set av-profile "default"
        set webfilter-profile "default"
        set application-list "default"
        set logtraffic all
        set nat enable
    next
end

九、 验证

9.1 Fortigate安全网关上的BGP路由

Fortigate成功从中转网关学到业务VPC路由

Fortigate向领居发送和接收到的BGP路由条目

9.2 中转网关上的BGP 路由

从connect 邻居收到的BGP路由

中转网关连接peers 的BGP邻居为UP

9.2 从互联网访问业务服务器

业务服务器入口地址是防火墙的弹性IP地址,分业务用不同的端口,端口在前面策略VIP设置里。 Http访问 http://52.83.204.126:180/    ,ssh 访问52.83.204.126:122  端口


流量安全检查记录:

业务服务器URL记录:

应用识别:

9.3 从业务服务器访问互联网出口流量

应用访问记录:

url记录:


9.3 东西向流量

从业务服务器访问安全VPC子网,确认流量经过中转VPC,经过fortiate安全检查。

FortiGate流量记录:

本篇作者

李朝辉

Fortinet中国区资深云安全顾问

姚远

亚马逊AWS解决方案架构师,负责基于AWS的云计算方案架构的咨询和设计,同时致力于AWS云服务在国内的应用和推广。现致力于网络和DevOps相关领域的研究。在加入AWS之前,在思科中国担任系统工程师,负责方案咨询和架构设计,在企业私有云和基础网络方面有丰富经验。