教程篇(7.2) 04. 路由和会话 & SD-WAN ❀ Fortinet 网络安全架构师 NSE7

 在本课中,你将了解FortiGate如何执行路由和处理SD-WAN流量的会话。

   在本课中,你将了解上图显示的主题。

 通过了解SD-WAN路由基础知识,你将能够了解FortiGate在涉及SD-WAN时如何执行路由。

  路由是SD-WAN的核心组件。了解路由如何在SD-WAN中工作对于设计和故障排除至关重要。以下是SD-WAN关键路由原则:

  1. SD-WAN规则是策略路由。与常规策略路由一样,SD-WAN规则基于多个标准路由流量。也就是说,当你配置SD-WAN规则时,内核会安装相应的策略路由,该路由反映了SD-WAN规则中配置的源、目标、服务和流出接口。

  2. 常规策略路由优先于SD-WAN规则。因此,如果你配置常规策略路由,你应该确保它们的匹配标准尽可能狭窄。否则,打算由SD-WAN处理的流量最终可能会由常规策略路由处理。

  3. FortiGate对新会话和脏会话执行路由查找。脏会话是在受路由、防火墙策略或接口更改影响后必须由内核重新评估的会话。FortiGate为原始和回复流量执行路由查找。在路由查找期间,FortiGate还会检查策略路由。

  4. 默认情况下,如果前往目的地的最佳路线不是SD-WAN成员,FortiGate会跳过SD-WAN规则。如果最佳路由与SD-WAN成员匹配,则规则中选择的成员必须具有到目的地的有效路由,否则FortiGate将跳过该成员,并检查下一个最佳成员。如果成员都没有到目的地的有效路线,那么FortiGate会跳过规则。

  5. 隐式SD-WAN规则等于标准FIB查找。也就是说,如果流量与任何SDWAN规则不匹配,则FortiGate使用常规流程路由流量,该流程包括在FIB中寻找最佳路由。如果最佳路由与等成本多路径(ECMP)路由匹配(通常是这种情况),则FortiGate使用配置的负载均衡算法均衡流量。

  当你配置SD-WAN规则时,FortiGate基本上会在FortiOS中应用策略路由。因此,在了解SD-WAN中的路由如何工作之前,你最好先了解策略路由。

  静态路由很简单,经常在小型网络中使用。然而,策略路由更灵活,因为它们可以匹配的不仅仅是目标IP地址。例如,你可以将流入接口、源和目的子网、协议和端口号配置为匹配标准。由于常规策略路由优先于任何其他路由,因此最佳做法是尽可能缩小匹配标准。否则,预计由SD-WAN规则或FIB中的其他路由的流量可以由常规策略路由处理。

  上图展示了使用FortiGate GUl配置的策略路由示例。策略路由指示FortiGate匹配在端口5收到的流量,该流量来自10.0.1.0/24,并发送到主机10.10.10.10。流量还必须指向TCP端口10444,以便策略路由匹配。然后,FortiGate通过网关192.2.0.2将流量(转发流量操作)转发到端口1。

  当数据包与策略路由匹配时,FortiGate采取两个操作之一。它要么将数据包路由到配置的流出接口和网关转发流量操作,要么停止检查策略路由停止策略路由操作,以便数据包根据FIB进行路由。

  请注意,当你将动作配置为转发流量时,目的地址流出接口网关地址设置必须与FIB中的路由匹配。否则,策略路由被视为无效,因此被跳过。

  另请注意,策略路由优先于SD-WAN规则,以及FIB中的任何路由。也就是说,如果数据包匹配策略路由,并且策略路由在FIB中具有匹配路由,那么FortiGate不会检查任何配置的SD-WAN规则或FIB中的路由。

  带有转发流量操作的策略路由在转发数据包之前需要对FIB进行验证。目的是让FortiGate根据FIB中的路由检查已配置的目的地址、流出接口和网关地址设置,或者如果策略路由配置中未指定,则识别要使用的流出接口和网关。

  验证如下:

  ● 如果你配置流出接口和网关,如果FIB包含与配置的网关和流出接口匹配的连接路由,FortiGate将使用策略路由。如果是这样,FortiGate使用配置的流出接口和网关路由数据包。否则,FortiGate会跳过策略路线。

  ● 如果你仅配置流出接口(即网关设置为0.0.0.0),如果FIB包含与已配置的目的和流出接口匹配的路由(任何类型的路由),FortiGate将使用策略路由。如果是这样,FortiGate使用策略路由的流出接口和FIB中匹配路由的网关来路由数据包。否则,FortiGate会跳过策略路线。

  ● 如果只配置网关,如果FIB中存在与该网关相连的路由,FortiGate将使用策略路由。如果是,FortiGate将使用连接的路由和配置的网关所在的接口进行路由。否则,FortiGate将跳过该策略路由。

 上图的流程图描述了FortiGate在使用策略路由时执行的路由查找过程。请注意,策略路由可以是常规策略路由、互联网服务数据库(ISDB)路由或SDWAN规则。

  首先,FortiGate检查策略路由。要检查的第一类策略路线是常规策略路由。如果有匹配项,并且操作是转发流量,FortiGate会相应地路由数据包,前提是策略路由通过FIB验证过程。如果操作是停止策略路由,FortiGate会继续检查其路由缓存。

  如果数据包与任何常规策略路由不匹配,FortiGate会先检查ISDB路由,然后检查SD-WAN规则。如果数据包与任何SD-WAN规则不匹配,FortiGate会检查其路由缓存。你将在另一节课中了解有关SD-WAN规则匹配过程的更多信息。

  接下来,FortiGate检查FIB,这是用于执行标准路由的表。从内核的角度来看,FIB可以描述为路由表,它主要由路由表中的路由构建,但也由FortiOS所需的系统特定条目构建。如果数据包与FIB中的任何路由不匹配,FortiGate会丢弃数据包,并向发件人发送ICMP目标网络无法访问的消息。

  上图还显示了可用于显示策略路由、路由缓存条目、路由表条目和FIB条目的FortiOS CLI命令。

 FortiOS维护一个策略路由表,你可以通过运行diagnose firewall proute list命令来查看该表。

  策略路由表中显示三种类型的策略路由:常规策略路由、ISDB路由和SD-WAN规则。按照以下规则来识别表中每种类型的策略路由:

  ● 常规策略路由被分配一个不高于65535的ID。在上图显示的输出中,第一个条目被分配了ID 1,这使其成为常规策略路由。

  ● ISDB路由和SD-WAN规则被分配的ID高于65535。然而,SD-WAN规则条目包括vwl_service字段,而ISDB路由条目不包括。vwl_service字段从SD-WAN配置的角度指示规则的ID和名称。在上图显示的输出中,第二个条目是ISDB路由,第三个条目是SD-WAN规则。

  请注意,尽管常规策略路由的ID在1到65535范围内,但你可以配置的常规策略路由的最大数量要低得多,并且因型号而异。例如,你可以在FortiGate 100F设备中配置多达512个常规策略路由。有关每个型号的最大支持值的更多信息,请参阅docs. fortinet.com上的FortiOS Maximum Values Table。或者,你可以在FortiGate CLl上运行print tablesize命令来获取设备的最大值。

 调试流工具指示匹配策略路由的ID,这对故障排除很有用。请注意,显示的ID与策略路由表中的条目ID相对应。

  你可以在CLI上收集调试流,使用诊断调试流命令或从FortiGate GUl菜单:网络>诊断程序>Debug Flow

  通过了解SD-WAN成员的静态路由,你将能够根据SD-WAN要求和限制为成员配置静态路由。 

  关键的路由原则之一是,默认情况下,SD-WAN需要在FIB中有一个有效的路由,以便成员可用于引导流量。因为目标是根据SD-WAN规则标准,让SD-WAN选择将流量转发到的最佳成员,因此配置路由设置是最佳做法,以便你的SD-WAN站点知道所有可能路由到SD-WAN处理的所有可能目的地。否则,SD-WAN可能无法选择最佳成员,不是因为它不符合应用程序要求,而是因为FortiGate没有目的地和成员的路由。

  你可以在SD-WAN中使用静态和动态路由。本节侧重于静态路由。当你为SD-WAN配置静态路由时,你通常参考SD-WAN区域以简化配置。但是,你也可以引用单个成员,以便你可以更精细地控制流量。当你在静态路由中引用区域时,FortiGate会为区域中的每个成员安装单独的路由。然后,FortiGate在路由表中将单个路由显示为等成本多路径(ECMP)路由。

  请注意,当你配置引用SD-WAN区域的静态路由时,你不必指定网关地址,因为FortiGate会从成员配置中检索它。另请注意,在将DHCP或PPPoE接口配置为成员后,FortiGate会从路由表中删除这些接口的自动默认静态路由。

  当你配置静态路由时,你可以引用一个或多个区域。因此,FortiOS为路由表中区域中配置的每个成员安装静态路由。由于静态路由共享相同的距离,它们成为ECMP路由。

  当你为区域创建静态路由时,FortiOS默认会分配距离为1的路由。FortiOS默认分配如此低的距离,因为管理员通常希望他们的SD-WAN路由优先于FIB中的其他路由。但是,如果需要,你可以将距离更改为不同的值。

  在上图显示的示例中,port1和port2是underlay区域的成员,IPsec隧道T_INET_O是overlay区域的成员。管理员创建了一个引用两个区域的默认静态路由。结果是,路由表显示三个成员中每个成员的ECMP路由。

  与SD-WAN规则不匹配的流量由隐式SD-WAN规则处理,这意味着流量根据FIB内容进行路由。如果你为区域配置静态路由,从而导致ECMP路由,FortiGate负载均衡所有区域成员中与SD-WAN规则不匹配但与ECMP路由目的地匹配的连接。

  在与上一张幻灯片相同的设置中,与隐式规则匹配的互联网流量在underlay和overlay链路之间进行负载均衡。但是,如果在该设置中,你希望FortiGate更喜欢互联网流量的underlay链路来利用直接互联网接入(DIA)的较低延迟呢?然后,只有当underlays已经死时才使用overlay?你可以通过增加overlay接口的优先级来实现此行为。

  默认情况下,成员优先级设置为1。优先级越高,成员偏好越低。在上图显示的示例中,overlay T_INET_O被分配为10作为优先级。结果是,与SD-WAN规则不匹配的互联网流量在端口1和端口2之间进行负载均衡。仅当端口1和端口2都死了时,FortiGate才会使用T_INET_0路由互联网流量。

  请注意,SD-WAN配置中可用的成员优先级设置仅适用于区域静态路由。每个成员静态路由的优先级由静态路由配置中可用的优先级设置控制。

 或者,你可以配置每个成员的静态路由,以更精细地控制流量。然而,与区域的静态路由(从成员配置中检索成员网关)不同,对于每个成员静态路由,如果接口类型需要,你必须指定网关。

  在上图显示的示例中,管理员为8.8.8. 8通过端口1配置了每个成员的静态路由。然后,SD-WAN规则可以使用该路由来路由流量,或者在没有匹配规则时,可以使用FIB来路由流量。

 如果你为引用区域的目的地配置静态路由,FortiOS不允许你为引用接口的同一目的地配置静态路由。在SD-WAN中,这些路由被称为重复路由。但是,你可以为区域和接口配置重叠路由。

  在上图显示的示例中,管理员尝试在设备级别为FortiManager上的port1配置默认静态路由。然而,由于已经为underlay和overlay区域配置了默认静态路由,FortiManager拒绝了第二个路由配置并显示错误消息。如果在模板级别进行类似的配置,FortiManager会在设备设置安装期间检测到冲突,安装日志会报告一个错误,表明不允许此类配置。结果,安装失败了。

  当你使用主动监控来测量成员的性能时,FortiGate不会使用路由表中的条目来路由探针。相反,FortiGate通过每个监控成员及其网关为已配置的目标服务器添加FIB路由条目。如上图所示,这些内核路由标记为proto=18。

  请注意,proto=18与分配的互联网协议号无关。它是Fortinet分配的任意协议号,用于识别FIB中用于路由健康检查流量的条目。

  通过展示理解SD-WAN特定BGP选项的能力,你将能够在单中心和双中心拓扑结构的背景下为SD-WAN配置BGP路由。

  如前所述,关键路由原则之一是,默认情况下,SD-WAN需要FIB中的有效路由,以便使用成员来引导流量。所需的有效路由可以是静态的或动态的。你可以结合使用SD-WAN和主要动态路由协议——OSPF和BGP。Fortinet建议在overlay中使用BGP,因为它允许根据健康检查结果对SD-WAN流量进行路由和引导。在接下来的几张图片中,你将发现如何使用健康检查结果来调整BGP路由。

  你可以将SD-WAN与iBGP或eBGP相结合。本课仅关注特定于SD-WAN的内容。

  当使用SD-WAN与BGP路由时,你可以:

  ● 配置SD-WAN规则,仅当路由具有特定的路由标签时,才引导流量流向成员。

  ● 与BGP邻居交互以优化路由选择——称为SD-WAN自愈。

  ● 使用与SLA状态相关的路由图,参数如下:route-map- out-preferred和minimum-sla-meet-members。

  ● 为BGP邻居定义主要或次要角色。

  在上面显示的示例中,客户有两个ISP连接,wan1和wan2。wan1主要用于直接访问互联网应用程序,wan2主要用于传输到客户的数据中心。数据中心具有动态IP地址范围,因此管理员无法根据地址配置SD-WAN规则。作为替代选项,管理员可以使用BGP标签。

  CLI示例展示了管理员如何在SD-WAN规则中使用BGP标签。在该示例中,BGP邻居wan2公布了社区编号为30:5的数据中心网络范围。FortiGate使用此社区编号来定义SD-WAN规则使用的标签。SD-WAN规则将根据定义的标准匹配流量,并且只有在匹配指定标签时才能使用底层FIB路由。

  SD-WAN允许你根据性能SLA选择不同的出站WAN链路。当设备选择链路来转发流量时,将此选择告知BGP邻居并允许他们相应地调整路由是有用的。这可以限制使用表现不佳的链路,并避免不对称路由。它被称为BGP的SDWAN自愈。

  在FortiGate上,BGP广告可以通过以下方式适应链接的SLA状态:

  ● 根据SD-WAN健康检查应用不同的路线图。例如,当是否满足SLA时,它可以宣传不同的BGP社区字符串。

  ● 基于活动BGP邻居转发流量。

  使用以下BGP参数根据SD-WAN健康检查调整路线图:route-map-out和route-map-out-preferable。当满足SLA时,FortiGate会用路由映射(最好)定义的设置来公布路由。当错过SLA时,它将设置路线图输出。

  BGP对等体不需要与SD-WAN兼容:

  ● 如果BGP对等体是仅具有标准BGP路由功能的设备,它将从SD-WAN设备(通常是社区或路由标签)收到的广告字段中调整其路由。

  ● 如果BGP对等体是SD-WAN设备,则不需要进行自己的健康检查。管理员配置SD-WAN业务规则,在邻居链路正常的情况下,匹配每个路由标签,引导流量进入对应的VPN覆盖。

  请注意,由于所有分支都宣传相同的社区字符串和路由标签,因此你只需在中心上为所有分支配置一组服务规则。当新分支加入网络时,不需要额外的设置。此功能使该解决方案易于扩展。

 双中心拓扑结构允许你将一个中心设置为活动中心,将另一个中心设置为备用中心。链路SLA决定了使用哪个中心。为此,你可以在SD-WAN辐条设备上定义主BGP和从BGP邻居。当满足链路SLA时,辐条将流量引导到主中心。如果主设备的SLA未满足,并且从设备的SLA仍在阈值内,辐条将调整BGP路由,以将流量直接传输到从设备。

  如果你没有为SD-WAN BGP对等体设置主要和次要角色,则适用默认的独立模式。FortiGate与两个中心建立BGP对等,而不考虑SD-WAN SLA。

  如果你确实设置了主要和次要角色,如果主要或次要邻居都不活跃(缺少SLA),SD-WAN邻居状态将变得独立。只有启用了独立操作的服务规则才能继续通过流量。默认情况下禁用此选项。

  这张图片根据上一张图片上显示的图表显示了路由映射的CLI配置。FortiGate根据SLA状态以不同的社区宣传到本地网络192.168.20.0/24的路由。

  首先,你为前缀192.168.20.0/24(未显示)定义路由器访问列表net192。接下来,你定义以下路线映射:

  ● 主邻居优先路由(comm1)使用社区20:1。

  ● 从邻居优先路由(comm2)使用社区20:2。

  ● 如果没有满足SLA(comm5)使用社区20:5。

  对于BGP邻居配置,使用两个路由映射:route-map-out-preferable在满足SLA时定义映射,在SLA失败时定义route-map-out。

  在SD-WAN配置部分,你可以定义BGP邻居角色(主、从、独立)和运行状况检查,以确定要使用的设备角色和映射。如果你没有设置角色(默认=独立),无论SLA状态如何,BGP邻居都是活跃的,但会使用不同的路由映射:如果满足SLA,则使用route-map-out-preferable(comm1或comm2),如果错过了SLA,则使用route-map-out(comm5)。

  设置主从角色后,你可以为每个场景定义SD-WAN规则。然后,您可以决定在回退到独立模式的情况下,每条规则是否仍然有效。默认情况下,当两个角色的SLA都不满足时,主从规则处于非活动状态。

  在上图显示的示例中,当从中心处于活动状态时,规则会引导流量。启用了独立操作,因此当两个中心都错过了SLA时,该规则将继续接受流量。

 正如你在之前的上图中了解到的,当SD-WAN成员达到SLA阈值时,FortiGate将应用BGP邻居的route-map-out-preferable选项中定义的路由映射。如果SD-WAN成员未能满足SLA,FortiGate将应用BGP邻居的route-map-out选项中定义的路由映射。

  当多个SD-WAN成员连接到同一个BGP邻居时会发生什么?

  默认情况下,只有当连接到BGP邻居的所有成员都满足SLA标准时,FortiGate才会应用route-map-out-preferable。在某些情况下,即使一个链接不符合SLA,管理员也可能更愿意继续向主要邻居发送流量,只有在情况恶化时才会回退到次要邻居。

  通过使用minimal-SLA-meet-members参数,可以细化这种行为,并定义在路由从route-map-out-preferred变为route-map-out之前不能通过SLA的链路数量。

  例如,在图中显示的网络中,如果一个隧道H1_T1或H1_T2仍然符合SLA,你可以继续将流量路由到Hub1。

  当minimum-sla-meet-members配置为2时,当至少有一条隧道满足SLA时,FortiGate会发布route-map-out-preferred对应的配置。当两条或两条以上的隧道不符合SLA时,会发生路由映射变更。

  通过展示理解FortiOS会话的能力,你将能够识别会话中的相关SDWAN字段、触发会话重新评估的不同因素以及使你能够更改默认行为的设置。

  FortiGate会话表包含有关FortiGate交叉、终止或启动的每个IP连接的详细信息。命令get system status显示当前VDOM中的会话总数。命令get system session list提供了每个会话的简要摘要。此命令每行列出一个会话,并包括协议、源IP地址、目标IP地址和端口等信息。你可以使用grep实用程序来过滤输出。

 ​​​​​ ​​ 上图显示了一个示例输出,详细说明了单个会话表条目的特定信息。从左到右,从上到下,突出显示以下信息:

  ● IP协议号和协议状态

  ● 会话到期前的时间长度(如果没有更多与会话匹配的流量)

  ● 流量整形计数器

  ● 会话标签

  ● 接收和传输的数据包和字节计数器

  ● 流量的原始和回复方向。如果设备正在进行NAT,此部分显示每个流量方向的NAT类型(源或目标)以及NAT IP地址。

  ● 匹配策略的ID

  ● SD-WAN特定的会话信息。sdwan_mbr_seq和sdwan_service_id分别表示使用的SDWAN成员ID和SD-WAN规则ID。如果会话与SD-WAN隐式规则匹配,因此使用标准FIB路由处理,则这些SD-WAN字段不会出现。

  ● 硬件加速计数器

  对IPv4流量使用CLI命令diagnose sys session list,对IPv6流量使用命令diagnose system session6 list。

  两个命令的输出是相似的(它以相同的顺序显示相同的字段)。

 当使用FortiGate时,特别是使用SD-WAN设置时,了解may_dirty和dirty会话的概念很重要。

  May_dirty会话是在将防火墙策略与接受为操作匹配后创建的防火墙会话。为了使FortiGate识别匹配策略,它执行防火墙策略查找,从上到下选择配置中的第一个匹配策略。大多数防火墙会话都包含may_dirty标志。然而,一些会话(如期望会话)不包含may_dirty标志,因为它们不是因匹配防火墙策略而创建的。

  对于新会话,FortiGate在收到第一个数据包(按原始方向)时执行路由和防火墙策略查找。FortiGate还对第一个回复数据包执行路由查找,但不执行防火墙策略查找。然后,FortiGate将路由查找(要使用的传出接口和网关)产生的信息以及防火墙策略查找策略ID、地址转换、检查、身份验证、日志记录等保存到会话中。

  FortiGate不会对会话执行额外的查找,除非会话被标记为dirty。

 默认情况下,如果存在路由、防火墙策略或接口更改,FortiGate会将所有may_dirty会话标记为脏会话。FortiGate必须重新评估每个dirty会话。在重新评估期间,它会检查dirty会话的两个方向。

  由于其动态性质,dirty会话在SD-WAN中很常见。停机或表现不佳的成员可能会分别更改FIB和策略路由表中的条目。无论哪种情况,结果都是路由更改,可能会影响多个SD-WAN会话。

  路由更改后,可能dirty会话的路由信息被刷新。对于没有源NAT(SNAT)的会话的路由更改后,默认的重新评估过程如下:

  ● 如果受影响的会话卸载到NPU,FortiGate指示NPU从会话的每个方向向CPU发送下一个数据包。这确保了会话由CPU处理,从而重新评估。如果会话没有卸载到NPU,则数据包始终由CPU处理,并且不需要此步骤。

  ● 在原始方向上,FortiGate为第一个数据包执行路由和防火墙策略查找。

  ● 在回复方向中,FortiGate仅对第一个数据包执行路由查找。

  ● FortiGate使用新的路由和防火墙策略信息更新会话,并删除dirty标志。

  ● 如果匹配的防火墙策略操作仍然被接受,FortiGate将转发数据包。

  ● 如果匹配的防火墙策略操作被拒绝,FortiGate会将会话标记为阻断,丢弃数据包,并将会话保留在会话表中,直到其过期。FortiGate还会删除与会话匹配的任何其他数据包。

  ● FortiGate最终允许再次将会话卸载到NPU,如果它们仍然满足NPU卸载要求。

  上图显示了ICMP会话在更改路由后从may_dirty过渡到dirty,然后返回到may_dirty。请注意,仅显示会话的相关行。 

  在更改路由之前,会话被标记为may_dirty。会话输出显示正在使用的传出接口的索引号(19)、网关信息(gwy)和正在使用的SD-WAN成员的配置索引号(3)。

  更改路由后,会话被标记为dirty。请注意,may_dirty标志仍然存在,并且刚刚添加了dirty标志。网关信息也被刷新。

  重新评估后,dirty标志被删除,流出接口的索引号和网关信息根据新路由进行更新。由于流出接口发生了变化,SD-WAN成员的配置索引号也发生了变化。

  请注意,防火墙策略(policy_id)没有改变。这是因为重新评估期间的防火墙策略查找导致了相同的防火墙策略,但情况并非总是如此。

  更改路由后对dirty会话的重新评估可能会导致对另一个SD-WAN成员进行故障转移。如果SD-WAN成员连接到不同的设备,特别是有状态的防火墙,可能会导致TCP会话中断。

  为了避免路线更改,当当前路线仍然可用但不再是最佳路线时,你可以启用上图显示的接口级命令。它迫使会话保留在同一个SD-WAN成员上,前提是会话使用的路由仍然存在于FIB中。

  但是,如果路由从FIB中删除,则FortiGate必须将会话标记为dirty,刷新其网关信息,并重新评估会话。

  在上图显示的拓扑结构中,如果FortiGate通过端口1建立会话,但由于SLA更改,现在最佳路由是通过端口2,则行为如下:

  ● 禁用preserve-session-route后,FortiGate重新评估会话,并通过port2重定向流量。Hub2删除任何已建立的TCP会话。

  ● 启用preserve-session-route后,FortiGate不会重新评估会话,会话仍然通过port1和hub1建立。活动TCP会话不会改变。FortiGate通过端口2路由新会话。

  上图显示了通过启用了设置preserve-session-route的接口(T_INET_0)建立ICMP会话的详细信息。注意,只显示会话的相关行。

  另请注意会话中存在route_preserve标签。你可以分别使用diagnose netlink interface list和diagnose sys sdwan member命令来查找接口名称和SD-WAN成员名称。

  默认情况下,在影响会话的路由更改后,SNAT会话不会被标记为dirty会话。如果正在使用的路由仍在FIB中,则为真。但是,如果从FIB中删除路由,则FortiGate将会话标记为dirty,刷新流出接口和网关信息,然后在收到的下一个数据包上重新评估会话。

  要在相关路由更改后强制重新评估SNAT会话,无论正在使用的路由是否仍在FIB中,请启用snat-route-change设置,如上图所示。

  请注意,在重新评估SNAT会话期间,如果新的路由和防火墙策略查找导致SNAT IP的更改,那么FortiGate会丢弃数据包并清除会话。这意味着受影响的应用程序可能必须启动新的连接才能恢复网络连接,特别是如果应用程序是基于TCP的。

  上图显示了重新评估期间SNAT会话的调试流输出。由于新路径(192.2.0.9)的SNAT IP与当前路径(192.2.0.1)的SNAT IP不同,FortiGate丢弃数据包并清除会话。这也意味着,从连接的角度来看,只有当会话的新路径使用相同的SNAT IP时,启用snat-route-change才是有意义的,这可以使用IP池来实现。

  dirty会话也是回复流量界面更改的结果。这种变化经常出现在SD-WAN中,因为网站可能会随时切换到性能更好的链路,这可能会导致会话的回复流量界面发生变化。默认情况下,系统CPU处理由回复接口更改触发的dirty会话。因此,在这种情况下,不使用硬件卸载。因此,这些dirty会话处理的大量流量可能会导致CPU利用率高和性能差。

  此外,默认情况下,在对回复方向执行路由查找时,FortiGate仅考虑通过原始方向使用的相同流入接口的路由。这样做是为了保持会话对称性。然而,这也阻止了回复流量切换到性能更好的成员,这可能会影响一些敏感应用程序,如语音和视频。

  通过启用FortiGate辅助会话来解决之前的两个问题:

  1. 通过创建辅助会话(也称为反射会话)将非对称会话卸载到硬件。对称流量匹配主会话,不对称流量匹配辅助会话。两个会话都可以卸载到硬件。对于FortiGate虚拟机,尽管硬件卸载不适用,但性能得到了提高,因为FortiGate不必重新评估非对称流量。

  2. 选择通过任何成员回复流量的最佳路线,不一定是接收原始流入流量的同一接口。

  上图显示了两个禁用辅助会话的FortiGate设备,这些设备通过两个链路连接。PC-1启动与PC-2的连接,FGT-1通过端口1路由连接,因为它是最好的端口。在FGT-2上,最好的端口是端口2。然而,当FGT-2为回复流量执行路由查找时,它会在端口1上选择路由,因为端口1是原始方向的流入接口。此外,两个FortiGate设备都可以将会话卸载到硬件,因为会话是对称的。

  如果你在之前拓扑中的两个FortiGate设备上启用辅助会话,FGT-2现在可以通过性能最好的成员(端口2)路由回复流量。FGT-1可以继续卸载非对称流量,因为它匹配辅助会话(或反映会话)。如果你没有在FGT-1上启用辅助会话,FGT-1将使用系统CPU来处理非对称流量。

  默认情况下,辅助会话被禁用。你可以通过运行此上图显示的CLI命令来根据VDOM启用该功能。

  上图还显示了为SSH连接创建辅助会话时在FGT-1上拍摄的调试流示例。调试流程显示一行包含auxiliary ses消息,后跟用于创建辅助会话的接口(或设备)的索引号。在本例中,虽然未显示在此幻灯片上,但会话最初是从端口3到端口1对称建立的——接口索引编号分别为7和5。之后,FortiGate在调试流的第一行端口2上收到了一个回复数据包——这触发了端口3到端口2方向的辅助会话的创建——接口索引编号分别为7和6。

  上图根据上一张幻灯片上显示的调试流输出显示了由此产生的主会话和辅助会话。请注意,仅显示会话的相关行。

  另请注意,辅助会话不是单独的会话,而是用于非对称流量的主会话的扩展。因此,FortiGate可以将两个会话的流量卸载到硬件,从而提高性能。

  你以与常规防火墙策略相同的方式配置SD-WAN防火墙策略,只是在选择流出或流入接口时,你必须引用引用SDWAN区域的标准化接口。当你引用区域时,你可以通过避免重复的防火墙策略来简化配置。

  你可能需要在防火墙策略中引用成员,因为你希望对流经该成员的流量应用不同的操作,例如应用不同的安全配置文件和NAT设置。由于你无法在防火墙策略中引用成员,因此解决方法是将单个成员放在单独的区域中,然后在防火墙策略中引用该区域。

  上图的示例显示了一个名为LAN-to-underlay的防火墙策略,该策略引用了underlay区域,其中包含port1和port2作为成员。因此,FortiGate允许通过端口1或端口2引导的DIA流量,前提是它符合防火墙策略标准,并通过在策略上配置的安全检查。

  当你更改防火墙策略时,所有带有“may-dirty”标志的现有会话都会更改为“dirty”状态。然后,FortiGate对每个现有会话收到的第一个数据包执行防火墙策略查找;它更新会话表条目并将标志重置为“may-dirty”。然后,它根据新的防火墙设置处理下一个数据包。

  如果防火墙处理大量会话,则将所有会话标记为dirty会话,并对会话执行防火墙策略查找可能会导致高CPU利用率。为了防止这种情况,您可以通过将firewall-session-dirty设置为check-new,将FortiGate配置为仅将新会话标记为dirty。结果是,FortiGate仅根据新的防火墙策略配置评估新会话。

  firewall-session-dirty设置在VDOM和防火墙策略级别上可用。默认情况下,它被设置为check-all,这指示FortiGate将所有会话标记为dirty。要指示FortiGate遵循防火墙策略级别设置,你必须将VDOM级别设置设置为check-policy-option。请注意,仅当VDOM级别设置设置为check-policy-option时,防火墙策略级别设置才可用。

  上图显示了firewall-session-dirty设置为check-new时已建立的SSH会话的详细信息。

  注意会话中存在persistent标志,以及没有may_dirty标志,这表明如果配置更改,FortiGate不会执行新的防火墙策略查找。

 你可以配置SD-WAN,在影响会话的路由或SLA更改后将活动会话引导到其他成员。如果有问题的会话是TCP会话,如果新选定的成员因其有状态的防火墙检查功能而连接到不同的FortiGate设备,则会话将丢弃在远程端。跨两个不同的FortiGate设备路由的会话称为跨FortiGate会话,通常出现在SD-WAN拓扑中,如上图双中心上显示的或使用自动发现VPN(ADVPN)时。你将在另一节课中了解有关ADVPN的更多信息。

  在上图显示的拓扑结构中,PC在辐条FortiGate后面连接,并使用TCP与两个中心FortiGate设备后面的服务器进行通信。如果辐条上的端口1是将流量从PC引导到服务器的最佳成员,则数据包将转发到Hub1。Hub1还为TCP连接创建一个会话。然后,如果端口2在连接仍处于活动状态时成为最佳成员,Spoke将开始将数据包转发到Hub2。然而,Hub2丢弃了数据包,因为它们不是三方握手的初始TCP SYN数据包,也不匹配任何现有会话。

  你可以通过启用tcp-session-without-syn设置来解决之前的问题。当你启用tcp-session-without-syn时,FortiGate接受未知的TCP会话,其第一个数据包不是TCP SYN,前提是有一个允许流量的防火墙策略。对于此处描述的用例,在Hub2上启用tcpsession-without-syn将导致在将数据包转发到Hub2后保持连接。

  请注意,你必须首先在配置系统设置下的VDOM级别启用tcp-session-without-syn,然后为需要它的每个防火墙策略启用该功能。

  继续使用相同的双中心拓扑结构,假设管理员启用了tcp-session-without-syn,并且在Spoke上的路由更改后,Hub2上接受了TCP连接。还假设连接仍处于活动状态,并继续路由到端口2,并且自路由更改以来不超过60分钟。

  如果port1再次成为最佳成员,Spoke将开始将数据包转发回Hub1。由于Hub1在其会话表中仍然有一个用于TCP连接的会话——已建立的TCP会话的默认过期计时器为3600秒——数据包与现有会话匹配,但由于序列号无效而被Hub1删除。原因是FortiGate还检查TCP数据包的序列号。因此,Hub1接收的数据包的序列号与基于Hub1记录的最新会话状态的预期值不匹配,该状态发生在路由更改为Hub2之前。

  你可以通过禁用anti-replay设置来解决之前的问题。当你禁用anti-replay时。FortiGate不检查TCP数据包的序列号。因此,在会话路由回Hub1后,Hub1接受数据包。

  请注意,你必须首先在config system settings下在VDOM级别启用anti-replay,然后为需要它的每个防火墙策略启用该功能。

  如上图所示,你可以使用FortiGate CLl启用tcp-session-without-syn并禁用anti-replay。每个设置的默认值分别为禁用和启用。

  你必须在防火墙策略级别上配置这两个设置。对于tcp-session-without-syn设置,你必须首先根据VDOM启用设置。

  继续使用双中心拓扑示例,管理员应在Hub1和Hub2上启用tcp-session-withoutsyn并禁用反重播。原因是活动TCP会话可以在集线器之间来回路由。此外,尽管建议的配置更改禁用了Hub1和Hub2上TCP流量的有状态防火墙检查,但这不应该代表安全问题,因为Spoke仍然对TCP流量执行有状态防火墙检查。

  通过掌握本课所涵盖的目标,你了解了SD-WAN中的路由过程、成员静态路由配置、SD-WAN的BGP参数,以及如何控制由路由、接口或防火墙策略更改引起的会话重新评估。


  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值