实验需求:
某公司在网络边界部署了一台防火墙,为了实现互联网访问,并且保证出口链路冗余,在边界处连接了两个不同的运营商。
现要求在防火墙上通过策略实现将流量负载分担到每条链路上。并对于不同运营商的流量,实现就近选路分别从各运营商链路发送。对于目的不明的流量通过全局智能选路方式将流量分担到各运营商,并在实现DNS解析时,能够实现将流量负载分担到不同运营商。
实验拓扑:
实验步骤:
1、 按上图所示,在路由器上将所有基础配置包括IP地址及路由协议,防火墙上包括IP地址及安全区域进行配置。防火墙上不需要配置OSPF。
2、 路由优化,在R1、R2上分别配置静态路由指向公司内网,并且将此静态路由引入到ospf中(此处因为没有在防火墙上配置NAT技术,所以需要在SP侧配置静态路由实现到内网的连通性)。
3、 为了实现不同运营商流量分别进入不同的运营商,此处通过ISP选路来实现。
如图所示,导入不同的运营商地址。
按照自己的需求分别导入不同的运营商地址池。
在出接口下配置SP选路策略,针对不同的出接口做不同的配置
配置完成以后会在防火墙路由表中多出两条UNR路由:
此时在pc1上进行测试:
发现去往不同运营商的流量负载到不同的链路上:
到此完成第一个需求。
4、 对于目的不明的流量,需要通过智能选路负载到不同的运营商。此处需要在防火墙上配置两条静态的默认路由分别指向isp1和isp2.
此处通过权重值选路方式进行流量负载。
在三台pc1上分别去ping R3的3.3.3.3地址,查看流量的负载情况。
与此同时,我们分别在SP链路上重新进行抓包,查看流量负载情况。
通过上图发现,流量的均衡比与我们前面设置的权重值比一致,两条链路流量分担比为2:1。实现我们的需求。
5、 对于去往不同运营商的web流量,我们要实现负载分担,分担方式与智能选路权重比一致。
我们先在R1和R2上配置DNS。
R1配置命令如下:
dns resolve ##开启DNS功能
dns proxy enable ##开启DNS代理功能
ip host www.ruitong.com 3.3.3.3 ##配置DNS记录,将www.ruitong.com映射到3.3.3.3这个地址。
R2配置命令如下:
dns resolve ##开启DNS功能
dns proxy enable ##开启DNS代理功能
ip host www.ruitong.com 33.33.33.33 ##配置DNS记录,将www.ruitong.com映射到33.33.33.33这个地址。
在没有开启DNS代理时,我们在PC上进行测试。(测试前,在防火墙上要放行DNS流量)
在不同的PC上指定不同的DNS地址,测试发现DNS解析结果完全与DNS地址指定的结果相一致。
6、 接下来开启DNS代理功能,对所有流量都做DNS代理。
配置DNS服务器地址,当从不同的出接口发送流量时,会进行DNS地址的替换。
接下来,分别在PC上重新配置DNS地址。这里的地址可以是任意的地址。
6.6.6.6地址是一个不存在的地址,因为我们在防火墙上配置了默认路由,所以在防火墙路由时,会查看默认路由进行选路。
在不同的pc上进行测试,可以看到去往www.ruitong.com这个域名,最终依据权重比分别解析到了不同的地址上。
DNS报文分担情况结果如下:
并且根据报文发现,原本指向的DNS6.6.6.6,在经过防火墙转发后,DNS地址分别被替换成各出接口所对应的DNS地址。
到此,所有需求已经实现。
结论:
1、 防火墙可以通过ISP选路方法来实现在多出口选路时,将去往不同运营商的流量精确发送到各SP链路中,实现就近选路。
2、 在智能选路时,可以依据多种方式来进行选路,此实验中,使用的是权重比的方式。
3、 透明DNS可以结合智能选路,实现将去往运营商的DNS流量,负载分担到不同的运营商进行解析。负载比与智能选路方式有关。
注意:
文中在查看ICMP报文时,为什么只看ICMP-Request流量呢?因为此处我们主要解决的是多出口选路的问题,即流量在发送时如何选路。而ping工具发送的报文包含ICMP-request和ICMP-reply两种,出去的流量就是ICMP-request,所以只需要查看ICMP-request报文即可。