华为防火墙笔记-出口选路

文章整理自《华为防火墙技术漫谈》

出口选路总述

就近选路

《华为防火墙笔记-出口选路》

就近选路是由缺省路由明细路由配合完成的选路方式,这种方式比较简单,也是最常用的。通过缺省路由可以保证企业用户数据流量都能够匹配到路由转发,而明细路由则让用户访问某ISP的流量从连接该ISP的链路进行转发,避免流量从另外的ISP链路迁回绕道,这就是所谓的就近选路。然而Internet上的众多服务,不可能一条一条地去配置明细路由,有没有一种简单的方法批量配置明细路由呢?这个时候ISP路由功能就有它的用武之地了。ISP路由功能其实是把各ISP的知名网段都集成在防火墙的内部,通过设置指定的出接口和下一跳批量下发静态路由,这样可以极大地减少明细路由的配置工作量。

明细路由+缺省路由的选路方式,配置简单,方便实用,在一般的企业网络中都可以应用。但是企业如果需要对某些特殊用户(如管理者)、某些特殊应用(P2P下载)的流量进行区别转发,这种选路方式就无法适用。

策略路由选路

《华为防火墙笔记-出口选路》

所谓策略路由,顾名思义,即是根据一定的策略进行报文转发,因此策略路由是一种比普通静态路由、动态路由更灵活的转发机制。路由设备转发报文时,先根据配置的规则对报文进行过滤,匹配成功的报文会按照既定的转发策略进行转发。这种规则可以是基于源IP地址、目的IP地址,也可以是基于用户,还可以是基于某种特殊的应用。

策略路由选路让企业网络管理员拥有了更灵活的流量控制手段:在事先了解出口链路带宽优劣的条件下,管理员可以让重要用户和关键业务从链路带宽稳定的链路转发,但策略路由需要管理员人为的去干预流量的选路,并且策略路由也不能为链路分配具体的带宽,如规定链路的最大带宽为500Mbit’s。

智能选路

智能选路是指到达目标网络有多条链路可选时,防火墙可以根据链路带宽路由权重或者自动探测到的链路质量动态地为内网用户流量选择出口链路,实现链路资源的合理利用。智能选路有三种模式,用户可以根据现网实际需求选择不同的模式。

1.链路带宽模式

《华为防火墙笔记-出口选路》

2.路由权重模式

路由权重模式是按照管理员在各条出口链路上设置的路由权重的比例分配用户流量,如图所示,3条链路分配的用户流量为5:3:2.

《华为防火墙笔记-出口选路》

3.链路质量探测模式

链路质量探测模式是根据流量触发探测每条链路的质量,防火墙对质量的评价则是通过丢包率时延时延抖动三个参数综合来评价的,管理员可以根据实际需要选择其中的一个或多个参数。三个质量参数中,丢包率是最重要的参数,如果两条链路的丢包率、时延、时延抖动各不相同,那么防火墙判定丢包率小的链路质量最优。

《华为防火墙笔记-出口选路》

智能选路在链路带宽的控制方面给管理员更多的选择,同时智能的链路探测给选路提供了新的方向,管理员不用人为判断链路的差异,而是通过流量触发探测链路质量,为每条用户流量选择最优的链路转发。然而,智能选路的应用是建立在等价路由的基础上,有多少条链路连接到外网服务,智能选路就需要相应条数的等价路由,否则智能选路是无法应用成功的。但是,现网中许多服务在不同的ISP内都设立了服务器,此种域名相同,但地址不同的服务如何引导流量在多个服务器上负载?通过防火墙的智能选路显然是无法完成的,因为IP地址不同,等价路由就无从说起。所以我们需要其他的选路方式来完成这种操作,一种通过分配DNS请求报文的选路方式-透明DNS选路。

透明DNS选路

当同一个服务在不同ISP内部署时,透明DNS选路能够保证用户访问的流量均匀地分担到每个服务器上

透明DNS选路通过修改用户DNS请求报文的目的地址,让DNS请求报文分担到各个ISP内的DNS服务器上,从而解析出各ISP内Web服务器对应的IP地址,引导用户流量访问各自ISP内的Web服务器。

《华为防火墙笔记-出口选路》

旁挂出口选路

《华为防火墙笔记-出口选路》

外网用户访问内网服务器的流量通过出口路由器引流到防火墙,进行安全防护处理。经防火墙处理后的安全的流量再通过防火墙回注到出口路由器,由路由器转发到内网服务器。这个过程中,引流是在出口路由器上完成的,一般是通过策略路由重定向流量到防火墙;防火墙对流量的回注可通过配置路由协议来完成,如静态路由、OSPF等。此场景中,防火墙接收和发出的流量是从不同接口完成的,这样可以更好地应用安全策略。

总体来说,5种选路方式各有特点,应用场景也各不相同,管理员可以根据网络实际需要选择合适的选路方式。当然,在实际网络中,网络环境复杂,用户需求多种多样,单一的选路方式可能难以完成所有需求,需要多种选路方式配合使用方能完成复杂的网络规划。

就近选路

在防火墙上我们配置两条缺省路由,一个下一跳指向R1,一个下一跳指向R2,现在我们在PC上ping目标网络上的两个服务器地址。

《华为防火墙笔记-出口选路》

[FW]ip route-static 0.0.0.0 0 10.1.1.2

[FW]ip route-static 0.0.0.0 0 10.1.2.2

通过在FW的GE0/0/3接口上抓包发现报文都是从GE0/0/3接口进行转发,如下所示。

《华为防火墙笔记-出口选路》

《华为防火墙笔记-出口选路》

为什么出现这种情况呢?两条缺省路由不进行负载分担吗?事实上,多条缺省路由在选路的时候是根据源IP地址+目的IP地址HASH算法来算出报文具体走哪条链路的,这种算法主要是看报文的源IP地址和目的IP地址,地址不同,计算出的结果也会不相同

这种算法下,等价缺省路由之间转发报文的机会是均等的。举个例子,如果报文的源IP地址相同,目的地址是相邻的,如10.1.1和10.1.1.2,那么选路的时候,将会各分担一条流进行转发。然而,由于网络中访问流量的源和目的地址是随机的,所以HASH计算结果完全不可控。这个时候虽然多条缺省路由是等价路由,也有可能出现所有报文都从一条链路转发的情况。这个结果也印证了上面举例中报文都从GE0/0/3接口转发的原因。

《华为防火墙笔记-出口选路》

那有什么办法让报文不绕道呢?通过配置明细路由即可达到要求,报文优先匹配明细路由,没有可匹配的明细路由再去查找缺省路由。

ISP路由

ISP路由,从名字来看有一个关键词”ISP”,这其实就是这个功能的由来。每个ISP都会有自己的公网知名网段,如果把这个ISP的所有公网知名网段都像上面说的一样配置成明细路由,则去往这个ISP的所有报文都不会绕路转发了。

首先管理员需要先收集ISP内的所有公网网段(网上都能够搜索到),然后把地址网段编辑到后缀为.csv的文件中(我们称之为ISP地址文件)。

《华为防火墙笔记-出口选路》

ISP地址文件上传到防火墙后,通过设置好出接口和下一跳,启动ISP路由功能后,ISP地址文件中的每个IP地址段都会转化为一条静态路由,这样整个ISP地址文件就变身为针对一个ISP的批量静态路由配置脚本了,大家再也不用为海量静态路由配置发愁了!

[FW] isp set filename ispa.csv GigabitEthernet 2/0/1 next-hop 201.1.1.2

《华为防火墙笔记-出口选路》

导入完成后,防火墙会生存如下路由。

《华为防火墙笔记-出口选路》

然而就近选路方式是以路由为基础的选路方式,大家都知道,查找路由是通过报文目的地址来查找的。那问题就来了,如果管理员希望对内网用户进行区分,让不同优先级的用户从不同链路进行转发;或者管理员想根据不同的应用来区分流量的转发链路,这些都不是我们通过目的地址查找路由能完成的。我们需要更灵活的选路机制,比如通过报文的源IP地址、应用协议类型等来区分用户流量,再对不同的用户流量进行区别转发。这个时候就需要我们的策略路由选路出场了。

策略路由选路

所谓策略路由,顾名思义,即根据一定的策略进行报文转发。而策略是人为制定的,因此策略路由是一种比传统的按照目的地址选路更灵活的选路机制。在防火墙上配置策略路由后,防火墙首先会根据策略路由配置的规则对接收的报文进行过滤,匹配成功则按照一定的转发策略进行报文转发

当有多条策略路由规则时,防火墙会按照匹配顺序,先查找第一条规则,如果满足第一条策略路由规则的匹配条件,则按照指定动作处理报文。如果不满足第一条规则的匹配条件,则会查找下一条策略路由规则。如果所有的策略路由规则的匹配条件都无法满足,报文按照路由表进行转发,策略路由的匹配是在报文查找路由表之前完成,也就是说策略路由比路由的优先级高

《华为防火墙笔记-出口选路》

此外,如果策略路由指定的出接口状态为Down或下一跳不可达,那么报文将通过查找路由表进行转发

基于目的IP地址的策略路由

《华为防火墙笔记-出口选路》

(1)根据报文目的地址设置匹配条件

[FW]acl number 3000

[FW-acl-adv-3000] rule 5 permit ip destination 10.10.11.11 0

[FW] acl number 3001

[FW-acl-adv-3001] rule 5 permit ip destination 10.10.10.10 0

(2)配置策略路由

[FW] policy-based-route test permit node 10

[FW-policy-based-route-test-10] if-match acl 3000 //应用匹配条件

[FW-policy-based-route-test-10] apply ip-address next-hop 10.1.1.2 //配置动作,重定向至电信下一跳



[FW] policy-based-route test permit node 20

[FW-policy-based-route-test-20] if-match acl 3001 //应用匹配条件

[FW-policy-based-route-test-20] apply ip-address next-hop 10.1.2.2 //配置动作,重定向至网通下一跳

(3)应用策略路由

[FW]interface GigabitEthernet0/0/3

[FW-GigabitEthernet0/0/3]ip policy-based-route test //在入接口应用策略路由

基于源IP地址的策略路由

配置方法和上面差不多,只不过把ACL的匹配条件改成源地址。

基于应用的策略路由

在现网中,策略路由选路还有一种常用的场景是与应用有关。大家都知道,网络中各种应用层出不穷,其中一些大流量的应用,如P2P、在线视频等应用占用了大量的出口带宽,严重影响了企业业务流量的转发。基于应用的策略路由正是针对这种场景提出的,策略路由与应用识别功能相结合,以流量的应用类型为匹配条件,实现基于应用的策略路由转发。

《华为防火墙笔记-出口选路》

(1)根据报文源IP地址设置匹配条件

[FW]acl number 3000

[FW-acl-adv-3000]rule 5 permit ip source 192.168.0.0 0.0.0.255

(2)配置策略路由

[FW] traffic classifier p2p

[FW-classifier-p2p] if-match acl 3000 category p2p



[FWI traffic behavior p2p

[FW-behavior-p2p] redirect ip-nexthop 10.1.1.2 interface GigabitEthernet2/21 //重定向出接口和下一跳



[FW] traffic policy p2p

[FW-trafficpolicy-p2p] classifier p2p behavior p2p //对用户的P2P应用设置为匹配条件

(3)应用策略路由

[FW] interface GigabitEthernet2/23

[FW-GigabitEthernet2/2/23]traffic-policy p2p inbound //在入接口应用策略路由

旁路组网下的策略路由选路

《华为防火墙笔记-出口选路》

现网中,策略路由的另外一种应用场景不得不提,即防火墙旁挂于企业出口路由器或核心交换机的场景。此时策略路由不是在防火墙上配置的,是在路由器或交换机上配置的。

此组网中,策略路由是在出口路由器R1上配置的,路由器策略路由的配置思路与上面介绍的防火墙的策略路由配置思路一致,都是先定义匹配条件(本地为目的IP地址)、设置动作(重定向出接口或下一跳),然后在入接口上应用。此组网中的防火墙除了对引入的流量进行安全防护外,还需要把流量回注到出口路由器R1上。

智能选路

链路带宽模式

链路带宽模式是以链路带宽为基础来为用户流量分配出口链路。

《华为防火墙笔记-出口选路》

防火墙作为企业出口网关通过两条链路连接到Internet,其中跟ISP1连接的链路是两个GE接口绑定的Eth-Trunk链路,跟ISP2连接的链路是一条GE链路。因为链路带宽模式的智能选路是按物理接口所占带宽比例来分配用户流量的,因此在防火墙上配置链路带宽模式智能选路后,ISP1和ISP2连接的链路分配的用户流量比例为2:1。

在USG9500系列防火墙上链路带宽模式的智能选路的配置如下。

(1)配置等价路由。

[FW] ip route-static 0.0.0.0 0 172.16.1.2

[FW] ip route-static 0.0.0.0 0 172.16.10.2

(2)配置智能选路模式为链路带宽模式。

[FW]ucmp group 1 test mode proportion-of-bandwidth

(3)在接口上应用智能选路。

[FW]interface Eth-Trunk 1

[FW-Eth-Trunk1]ucmp-group 1

FW-Eth-Trunk1]quit

[FW]interface GigabitEthernet 2/2/19

[FW-GigabitEthernet2/2/19]ucmp-group 1

除此之外,链路带宽模式的智能选路还可以对每条链路设置带宽阈值,当一条链路转发的流量超过设置的带宽阈值时,后续流量会按照其他正常工作链路的物理带宽比例重新分配。防火墙每60秒会对链路带宽变化进行检测,检测的带宽流量是前5分钟内带宽流量的平均值。如果60秒内有突发流量超过设置的带宽阈值时,防火墙是无法实时检测到的。

带宽阈值的设置与实际的链路带宽有关,链路的带宽越大,阈值也应该设置较大

此外,带宽阈值的设置可以在接口的出入方向同时设置,也可以只在一个方向设置,如果在出入方向同时设置,只要有一个方向的流量超过设置的带宽阈值,用户流量就会按照其他正常工作链路的物理带宽比例重新分配。下面我们以接口出方向设置带宽阈值为例来说明防火墙上设置带宽阈值的具体配置方法。

[FW] interface Eth-Trunk 1

[FW-Eth-Trunk1]ucmp-group 1

[FW-Eth-Trunk1]ucmp-threshold outbound 1000 //在接口出方向设置带宽阈值为1000Mbits



[FW]interface GigabitEthernet 2/2/19

[FW-GigabitEthermnet2/2/19]ucmp-group 1

[FW-GigabitEthernet2/2/19]ucmp-threshold outbound 500 //在接口出方向设置带宽阈值为500Mbit's

路由权重模式

路由权重模式不以物理链路带宽的多少来分配流量,而是通过管理员在每条链路上设置权重值的比例来分配流量,权重值设置的越大,流量分配的越多

《华为防火墙笔记-出口选路》

管理员在Eth-Trunk链路上设置的权重值为5,在GE链路上设置的权重值为10,实际网络中权重的设置是按照链路的实际带宽、链路的优异程度来对比设置的。

下面我们按照组网要求在USG9500系列防火墙上配置路由权重模式的智能选路。

(1)配置等价路由。与链路带宽模式一样,路由权重模式也需要配置等价路由,只有两条链路上都存在等价路由时智能选路才能生效。

[FW]ip route-static 0.0.0.00 172.16.1.2

[FW]ip route-static 0.0.0.0 0 172.16.10.2

(2)配置智能选路模式为路由权重模式。

[FW]ucmp group 1 test mode proportion-of-route

(3)在接口上应用智能选路。

[FW]interface Eth-Trunk 1

[FW-Eth-Trunk1]ucmp-group 1

[FW-Eth-Trunk1]ucmp-weight 5



[FW]interface GigabitEthernet 2/2/19

[FW-GigabitEthernet2/2/19]ucmp-group 1

[FW-GigabitEthernet2/2/19]ucmp-weight 10

与链路带宽模式的智能选路一样,路由权重模式也可以设置带宽阈值,当链路转发的流量超过设置的带宽阈值时,则后续新建流量会按照其他正常工作链路的权重值比例重新分配。同样,也是每过60会对链路带宽变化进行检测,检测的带宽流量是前5分钟内带宽流量的平均值。当流量恢复到带宽阈值的95%时,此条链路重新按照路由权重模式进行流量分配。带宽阈值的配置方法与链路带宽模式一致,此处不再赘述。

链路质量探测模式

链路质量探测模式的智能选路与其他两个模式有所不同,质量探测模式不关注每条链路分配的流量比例,它的侧重点在于根据链路的质量转发流量质量探测模式会对出口的每条链路进行探测,让探测结果最优的链路转发用户流量

《华为防火墙笔记-出口选路》

在USG9500系列防火墙上配置质量探测模式的智能选路,如下所示。

(1)配置等价路由。与其他模式一样,链路探测模式也需要配置等价路由,只有1条链路都存在等价路由时智能选路才能生效。

[FW]ip route-static 0.0.0.0 0 172.16.1.2

[FW]ip route-static 0.0.0.0 0 10.1.1.2

(2)配置智能选路模式。

[FW]ucmp group uempl mode proportion-of-intelligent-control //配置智能选路的工作

模式为质量探测模式

[FW]ucmp group ucmpl intelligent-control-mask 24 //配置智能选路的掩码长度

(3)在接口上应用智能选路。

[FW]interface Eth-Trunk 1

[FW-Eth-Trunk1]ucmp-group 1

[FW-Eth-Trunk1]healthcheck source-ip 172.16.1.1

[FW]interface GigabitEthernet 2/2/21

[FW-GigabitEthernet2/2/21]ucmp-group 1

[FW-GigabitEthernet2/2/21] healthcheck source-ip 10.1.1.1 //配置健康检查源IP地址

事实上,质量探测模式的智能选路配置生效后,防火墙会对远端目的地进行探测,探测从哪条链路报文转发的时延最小,详细过程如下。

(1)当用户访问外网的报文到达防火墙后,防火墙首先查找报文中的目的IP地址。

(2)查找到报文的目的IP后,防火墙会从每条出口链路发送ICMP报文对这个目的地址进行探测,通常是每条链路发送4个ICMP报文。发送ICMP报文的源地址为配置的健康检查的源IP地址(一般为出接口地址),目的地址为用户报文的目的IP地址。因此本例中防火墙上出现了另外两条ICMP会话是两条链路上的探测报文对应的会话。

(3)通过汇总4个ICMP报文的平均值,防火墙会计算从每条链路发送ICMP报文到目的IP的时延,并产生等价最佳出接口表项,表项中记录每条链路的时延大小,最后从中选择时延最小的链路作为用户报文转发的链路

(4)后续访问此目的网段的报文都会选择从此链路转发

智能选路在出口链路的流量负载、带宽的充分合理利用方面给管理员提供了更多的选择。但是智能选路的应用是建立在等价路由的基础上的,如果没有等价路由,要完成链路的流量负载和带宽的合理利用,智能选路也是妄谈。

透明DNS选路

基础原理

大家都知道,我们访问Internet服务时,大多数情况下都是通过域名来访问的,而实际的报文的正确转发是依据报文中的“目的IP地址”来完成的,所以我们在访问Internet业务之前需要先访问DNS服务器,通过DNS服务器解析出“域名”和“目的IP地址”的对应关系。在现网中,许多知名的服务会在多个ISP内部署,这样就会出现同样的域名对应着多个IP地址的情况。如果企业网络的多个出接口连接不同的ISP,用户访问同一个服务的流量就会被负载到每个ISP的服务器上,这将是企业希望的,也是Internet服务供应商期望获得的效果。

然而,由于许多企业内网用户的PC在设置DNS服务器时,一般都会选择一个ISP的DNS服务器,而这个ISP的DNS服务器通常也只会将用户请求的域名解析成该ISP的地址,这样就会导致内网用户的上网流量总体上都通过连接这个ISP的链路转发。最终的结果就是,这条ISP链路拥塞,而其他ISP链路带宽得不到充分利用,如图所示。

《华为防火墙笔记-出口选路》

透明DNS选路可以很好地解决这种问题。它通过改变企业用户DNS请求报文的目的地址,强制部分用户的DNS请求报文转向另一个ISP的空闲的DNS服务器,这样就能保证部分用户的业务流量从空闲的链路转发,减轻了其他链路的流量压力。

《华为防火墙笔记-出口选路》

(1)首先,需要在防火墙上先设置一个“虚拟DNS服务器”,同时将企业内网用户PC上指定的DNS服务器改为虚拟DNS服务器的地址

(2)当内网用户发起DNS请求时,虚拟DNS服务器作为中间人将会做点“小动作”,即根据预先配置的透明DNS选路算法将DNS请求报文送往各个ISP的DNS服务器

(3)ISP的DNS服务器收到DNS请求后,会解析出域名对应的IP地址。一般情况下,ISP1的DNS服务器会解析出ISP1的Web服务器地址,ISP2的DNS服务器会解析出ISP2的Web服务器地址。防火墙会将DNS响应报文返回给内网用户。

(4)内网用户以DNS服务器解析出的Web服务器地址为目的地址,对Web服务器发起访问。这样内网用户的整体上网流量就被均衡地分配到各个ISP链路。

上面讲到的透明DNS选路算法有两种:简单轮询算法加权轮询算法。两种算法的区别在于流量分配方式不同。简单轮询算法将DNS请求报文依次分配到各个ISP的DNS服务器上加权轮询算法则是将DNS请求报文按照一定权重比例分配到各个ISP的DNS服务器上

简单轮询算法

《华为防火墙笔记-出口选路》

防火墙作为企业出口网关通过两条链路连接到ISP1和1SP2,两个ISP内都有www.example.com这个服务器,通过ISP1内DNS解析的地址为10.10.10.10,ISP2内DNS解析的地址为10.11.11.11。

我们在防火墙上配置简单轮询算法的透明DNS选路,步骤如下:

(1)启用透明DNS选路功能

[FW]slb enable

(2)配置透明DNS选路算法为简单轮询。

[FW]slb

[FW-slb]group 1 dns

[FW-slb-group-1]metric roundrobin

(3)配置实DNS服务器。

[FW-slb-group-1]rserver 0 rip 10.20.1.2

[FW-slb-group-1]rserver 1 rip 10.30.1.2

(4)配置虚拟DNS服务器的IP地址。

[FW-slb]vserver 1 dns

[FW-slb-vserver-1]vip 0 10.40.10.1

(5)关联虚拟服务器和实服务器组。

[FW-slb-vserver-1]group dns

简单轮询算法只能平均地将DNS请求报文分配到各个ISPDNS服务器上,无法更精确控制链路流量的分配。

加权轮询算法

加权轮询的配置方法如下:

(1)启用透明DNS选路功能。

[FW]slb enable

(2)配置透明DNS选路算法为简单轮询。

[FW]slb

[FW-slb]group 1 dns

[FW-slb-group-1]metric weight-roundrobin

(3)配置实DNS服务器。

[FW-slb-group-1]rserver 0 rip 10.20.1.2 port 53 weight 10

[FW-slb-group-1]rserver 1 rip 10.30.1.2 port 53 weight 5

(4)配置虚拟DNS服务器的IP地址。

[FW-slb]vserver 1 dns

[FW-slb-vserver-1]vip 0 10.40.10.1

(5)关联虚拟服务器和实服务器组。

[FW-slb-vserver-1]group dns

    原文作者:breeze10000
    原文地址: https://blog.csdn.net/weixin_46622350/article/details/121746520
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞