教程篇(6.4) 04. 路由 ❀ 企业防火墙 ❀ Fortinet 网络安全架构师 NSE7

 在本课中,你将学习与企业网络相关的高级路由概念。

 完成本课后,你应该能够实现这张幻灯片上显示的目标。

  通过演示路由方面的能力,你将能够描述FortiGate如何路由流量,诊断由反向路径转发检查引起的路由问题,识别将通过不同路径路由的会话,并使用调试命令排除路由问题。

 在本节中,你将了解一般路由概念和故障排除。

 FortiGate是一个有状态的设备,所以它在会话开始时根据第一个数据包解码大量信息。对于任何流量会话,FortiGate通常只执行两个路由查找:一个对由发起者发送的第一个数据包进行查找,另一个对来自应答者的第一个应答数据包进行查找。在此之后,所有路由信息都写入FortiGate会话表。但是,在对路由表进行更改之后,路由信息将从会话表中受影响的条目中刷新。因此,FortiGate将执行额外的路由表查找,以便用新的路由信息重新填充会话表。

 FortiGate是如何决定路由的?FortiGate有多个路由模块。这张幻灯片上显示的图表说明了路由模块的逻辑。

  首先,FortiGate搜索它的策略路由。你可以使用命令diagnose firewall proute list查看它们。如果在策略路由中存在匹配,且动作为Forward Traffic,则FortiGate相应地对数据包进行路由。如果动作是Stop Policy Routing,那么FortiGate转到下一个表,也就是路由缓存。你可以使用CLl命令diagnose ip rtcache list查看该内容。

  最后,FortiGate搜索转发信息库(FIB)。FIB是由路由过程生成的,是用于包转发的表。路由表的目的是管理,而FlB的目的是转发。这种分离在FortiGate高可用性(HA)集群中变得更加清晰。在HA集群中,路由管理和转发表都存在于主FortiGate上。但是在备FortiGate上,只有FIB存在。

  如果这些表中没有匹配,FortiGate会丢弃数据包,因为它是不可路由的。

 当到达目的地的路由不止一条时,这就是选择要使用哪条路由的进程。

  首先,FortiGate使用最明确的路由,也就是子网掩码最长(最小子网)的路由。如果有两个或多个路由具有相同的最长子网掩码,则单元选择距离最短的路由。在那之后,最低的度量被用来作为动态路线的决胜局。在静态路由的情况下,则使用优先级。如果有多个路由具有相同的子网掩码、距离、度量和优先级,FortiGate将在所有路由中共享流量。这被称为等价多路径(ECMP)。ECMP支持静态、BGP和OSPF路由。

 只有满足以下所有要求时,FortiGate才会在路由表中添加一个静态路由:

  ●  出接口在线

  ●  没有其它更小距离的匹配路由

  ●  链路健康监控(如果已配置)成功

 现在,你将回顾一个重要的路由概念:反向路径转发(RPF)检查。

  RPF检查通过检查到源IP地址的路由来保护IP欺骗攻击和路由循环。此检查仅在创建会话时对第一个包执行。如果检查失败,数据包将被丢弃,调试流显示以下错误:reverse path check fail,drop。

 RPF检查模式有两种:可行路径(以前称为松散)和严格路径。默认模式为可行路径。

  在可行路径模式下,只要有一条通过传入接口到源IP的活动路由,包就被接受。它不一定是最好的路线,只要是一条活跃的路线就行。在这张幻灯片上显示的例子中,从10.4.0.1到10.1.0.1的数据包被接受,因为FortiGate有一个活动路由(默认路由)通过port2到 10.4.0.1。但是,从172.16.1.1到10.1.0.1的数据包不被接受,因为没有通过port3到IP地址172.16.1.1的活动路由。

 在严格模式下,FortiGate检查到源IP地址的最佳路径是通过传入接口。路径不仅必须是活动的(就像可行路径模式),而且还必须是最好的。

  如果你使用相同的例子,但改变FortiGate从可行路径模式到严格模式,你会得到以下结果:

  ●  从172.16.1.1到10.1.0.1的包仍然被阻止,因为没有通过port3到达源IP地址的路由。

  ●  从10.4.0.1到10.1.0.1的数据包也被阻止。有一个通过port2到10.4.0.1的活动路径,但它不是到源IP地址的最佳路径。最佳路由到10.4.0.1是通过port3。因此,严格模式只在port3是传入接口时才接受来自子网10.4.0.0/24的流量。

 内容检查要求路由尽可能保持对称;也就是说,流量必须沿着相同的路径双向行驶。在多种情况下,非对称路由会阻止FortiGate检查流量内容。所以,FortiGate路由流量是对称的。这意味着,在某些网络拓扑结构下,FortiGate可能不会通过最佳路径路由返回流量,而是通过与原始流量使用相同的路径。为此目的,FortiGate记住到源的接口,并使用该接口路由返回包,即使存在使用不同接口的更好路由。在下一张幻灯片中,你将看到一个例子。

 现在,你将分析这个网络拓扑。本地网络,10.1.0.0/24有三个网络设备:本地工作站、本地路由器和FortiGate port1。另外,FortiGate port2直接连接到本地路由器(使用子网10.2.0.0/24)。

  有一个远程路由器连接到FortiGate port3,在它后面是一个远程服务器(10.4.0.1)。因此,任何发送到远程服务器的流量都必须通过FortiGate路由。这个网络的一个重要细节是本地工作站的默认网关是10.1.0.254。这意味着,如果你从本地工作站向远程服务器发送一个ICMP回送请求,包首先到本地路由器,然后到FortiGate,然后到远程路由器,最后到目的地。当ICMP包到达FortiGate时,在单元路由缓存中为原始流量创建一个条目。该条目包含到源的接口,或者包到达的传入接口,在本例中是port2。

 此外,FortiGate在会话表中创建一个条目。此条目还包含有关源接口的信息。

  如前所述,FortiGate首先进行路由查找,以查找到目的地的下一跳。该IP地址也存储在会话信息中。

  因为还没有ICMP回声应答,你将注意到到源的下一跳仍然是未知的(它是0.0.0.0)。它将与第一个应答包发生的第二次路由查找进行标识。

 现在,让我们看看FortiGate如何路由返回包。

  当FortiGate收到ICMP回音时,因为已经创建了一个会话和一个路由缓存,所以它使用源接口。因此,在这种情况下,单元通过port2将数据包路由到本地路由器,即使有更好的路由到目的地10.1.0.1。FortiGate路由表将port1显示为到10.1.0.1(本地连接)的最佳路由,但它仍然使用port2。目标是保持流量的对称。对于第一个ICMP回声应答,第二个条目被添加到路由缓存中,这一次是针对返回流量的。

 此外,该单元还进行第二次路由查找,这一次查找到源的下一跳(或网关)。该IP地址被添加到会话中,该会话之前被设置为0.0.0.0。

 

 如果流量来自服务器端会发生什么情况?

  假设ping从远程服务器发送到本地工作站。在本例中,当ICMP回应请求到达FortiGate时,还没有会话。因此,FortiGate使用到10.1.0.1的最佳路径,即通过port1。

  这个例子展示了在某些网络拓扑中,根据会话的发起者,FortiGate如何以不同的方式将数据包路由到相同的目的地。

 看看这个示例中的应答流量。

  因为本地工作站默认网关是10.1.0.254,ICMP应答首先到本地路由器。然后,包到达了FortiGate port2。其结果是不对称路由:返回的流量遵循与原始通信流不同的路径。返回包到达port2,而不是port1(原始流量被发送到那里)。

  在这些特殊情况下,FortiGate接受这种不对称性,不会丢失数据包,安全检查也不会受到影响。

 当FortiGate不应用SNAT时,在路由表中发生更改后,路由信息将从受该更改影响的会话中删除。此外,相关路由缓存条目也会被删除。因此,为了学习新的路由信息并将其存储在路由表中,还要对下一个包进行两次路由查找。

  这张幻灯片显示了路由更改之后的一个会话示例。两个方向的网关都变为0.0.0.0/0,接口变为0,这表明必须再次学习该信息。此外,还添加了dirty标志。

 你可以使用这张幻灯片上显示的命令在接口级别配置会话路由持久性。默认值是disable。如果启用此设置,通过该接口的会话将继续传递,而不会受到路由更改的影响。路由更改将仅适用于新会话。

 在应用SNAT的会话中,FortiGate在路由更改后采取的动作取决于snat-route-change设置。

 当禁用此设置时,对于使用SNAT的会话,路由更改后发生的行为是不同的。使用SNAT的会话会继续使用相同的出站接口,只要旧路由仍然处于活动状态。

  在这张幻灯片展示的例子中,FortiGate连接到两个不同的ISP。IP地址为10.1.0.1/24的客户端在FortiGate后被连接。FortiGate正在做SNAT客户端流量到一个公共IP地址,这取决于哪个ISP正在使用它。FortiGate路由表包含两个默认路由:每个路由一个ISP。这两个默认路由距离相同,但优先级不同。具有最低优先级(port1)的路由是主路由。当两个ISP连接都启动时,FortiGate为互联网流量选择主要路由。因此,所有到internet的会话都使用port1作为出站接口创建。

 如果你将分配给port1的优先级增加到一个比分配给port2的优先级更高的值,并且如果禁用了snat-route-change,那么所有新会话都将开始使用port2,因为它的优先级最低。但是,现有的所有会话继续使用port1。默认路由是通过port1的。即使默认路由不再是最佳路由,它仍然是有效的。如果FortiGate正在使用SNAT,现有的会话将继续使用原来的路由,直到它们过期。如果FortiGate不做SNAT,所有现有会话将在更改后切换到port2。

 当启用此设置时,在路由更改后,操作与没有SNAT的会话相同:

  ●  从会话表刷新路由信息

  ●  路由缓存条目被删除

  ●  对下一个包再次执行路由查找,这可能会改变用于路由流量的出站接口

  ●  RPF在原方向上的第一个数据包再次进行检查

  在这张幻灯片展示的例子中,FortiGate连接到两个不同的ISP。IP地址为10.1.0.1/24的客户端连接在FortiGate设备后面。FortiGate路由表包含两个默认路由:每个ISP一个路由。这两个默认路由距离相同,但优先级不同。具有最低优先级(port1)的路由是主路由。当两个ISP连接都启动时,FortiGate为互联网流量选择主要路由。因此,所有到internet的会话都使用port1作为出站接口创建。

 这张幻灯片上显示的场景有多个ISP。如果客户拥有一个公共IP地址池,客户可以为所有internet提供商配置一个SNAT的IP池。其优点是,如果主要ISP发生故障,会话将通过次要ISP路由,并保持相同的公共源IP地址。通过这种方式,会话可以保持不变。

  因此,在这张幻灯片所示的示例中,如果你将port1的优先级增加到一个高于port2的优先级的值,并且如果启用了snat-router-change,在路由更改之后,将从现有的SNAT会话刷新路由信息。所有会话开始使用port2,因为它的优先级最低。此外,如果port2路由与port1的旧最佳路由共享一个公共IP池,SNAT会话将继续使用相同的公共IP地址来转换私有IP地址。

 启用auxiliary-session后,FortiGate内核将创建一个新的辅助会话并将其附加到主会话。对于每个流量路径(传入或传出),FortiGate将继续创建一个新的辅助会话。

 在本例中,ECMP同时为客户机和服务器配置。FortiGate通过port1和port2使用ECMP到客户端,通过port3和port4使用ECMP到服务器。

  基于这个例子,你将看到如何在FortiGate上处理会话:

  1. 最初,流量是从port1到port3。FortiGate创建一个新会话:主会话。

  2. 服务器的应答从port4发送到port1。FortiGate创建辅助会话1并将其附加到主会话。

  3. 客户端将流量从port1发送到port4。FortiGate匹配辅助会话1。

  4. 客户端将流量从port2发送到port3。FortiGate创建辅助会话2并将其附加到主会话。

  5. 服务器从port3应答到port2。FortiGate匹配辅助会话2。

  6. 服务器从port4应答到port2。FortiGate创建辅助会话3并将其附加到主会话。

  7. 客户端将流量从port2发送到port4。FortiGate匹配辅助会话3。

  8. 最后,服务器从port3回复到port1。FortiGate匹配主会话。

  如果策略允许卸载,那么所有这些会话都可以卸载。

 这张幻灯片上显示的命令显示了路由表中的所有活动路由。左列表示路由来源。方括号内的第一个数字是距离,第二个数字是度量。

  这个命令只显示RIB中已安装的路由。例如,如果你有两个到同一目标子网的静态路由,但距离不同,那么将安装距离较短的那个,而距离较长的那个将不安装。

 如果你想同时显示已安装和未安装的路由,请使用这张幻灯片上显示的命令。在本幻灯片所示的示例中,输出显示了一条不活跃的路由。当路由显示为不活跃的时候:

  ●  它的网关被链路监控检测到死亡

  ●  它的接口管理状态为下线

  ●  它的接口是链路下线

  其他仅存在于路由数据库中,且未标记为非活动的路由之所以存在,是因为它们没有被选为目的地的最佳路由,因此没有安装在RIB中。例如:

  ●  两条不同距离的静态默认路由。距离较低的出现在RIB中,距离较高的只出现在数据库中。

  ●  两条默认路由,一条静态路由,一条BGP缺省路由。静态的优先,因此出现在RIB中,但是BGP的只列在数据库中。

 这个低级命令显示FIB,这是内核用来路由流量的路由信息。路由表中所有活跃的路由必须在FIB中存在。另外,FIB表中也可能包含一些FortiGate自动添加的路由,如为了到达SSL VPN用户而动态添加的路由,这些路由并不在路由表中。

 路由缓存包含快速搜索表中最近使用的路由条目。它在路由表之前被咨询,以加快路由查找过程。

 在本节中,你将了解虚拟路由和转发。

 虚拟路由和转发(VRF)是一种包含在某些路由器中的技术,它允许在一台路由器中存在一个路由表的多个实例。这增加了功能,允许网络路径分段,而不使用多个设备。由于流量是自动隔离的,VRF也增加了网络的安全性。互联网服务提供商经常利用VRF为客户创建单独的VPN。

 这张幻灯片展示了数据中心服务提供商的另一个例子。使用VRF,服务提供者实现了全第三层路径隔离。VRF可以包括IPsec接口,因此路由隔离一直延伸到数据中心边缘的隧道终端。与使用VLAN实现的类似解决方案相比,这种设置降低了配置的复杂性。

 FortiGate支持使用VRF的第三层路由隔离。可以在接口上配置VRF ID。支持多种类型的接口,如物理接口、VLAN接口、IPsec接口、交换机接口、聚合接口等。匹配VRF ID的接口被隔离到一个VRF实例中。

  这张幻灯片展示了在接口上配置VRF ID所需的命令。VRF ID的取值范围是0~31。

  目前只有OSPF和BGP两种动态路由协议支持VRF。RIP不支持VRF。

  FortiGate还支持本地定义的VRF之间的路由泄漏功能。

 在接口上配置VRF ID后,routing table diagnostic命令的输出信息发生变化。FortiGate基于VRF ID对路由进行分组。从这张幻灯片显示的路由表输出中,你可以看到port1和port3在同一个VRF实例中(VRF=1), port2被分隔在一个单独的VRF实例中(VFR=2)。

 路由表数据库输出也发生了变化。活跃的和不活跃的路由都基于它们的VRP实例分组。

 路由缓存项还将显示最近使用的路由项的VRF ID信息。

 这张幻灯片展示了你在这节课中所学到的目标。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值