回顾下传统选路的几种方式
(1)负载均衡:有两条默认路由同时存在路由表,防火墙通过算法自动选择一条线路出去。
(2)主备模式:配置了优先级,比如默认走电信,联通备用。
(3)基于内网的“负载分担”:比如某几个网段走电信,某几个网段走联通
(4)基于ISP选路:比如电信走电信、联通走联通
两条外线都是同一个运营商场景
两个外网线路是不同运营商场景
上面对四种方式的作用与场景做了一个简单的回顾,对于外网线路而言,无法就两种典型的场景,一个是都是同一个运营商,另外一种就是两个外网线路不是同一个运营商,那么针对这些方式以及场景,博主来以上面两个拓扑来讲解这四种传统的选路方式,这一篇主要讲解主备方式,以及在主备方式中会遇到哪些问题。
主备方式会遇到哪些问题
主备方式其实适用于所有场景,只要客户要求说要求主备,不管是同一个运营商还是不同的运营商都是可以的,虽然说是万金油,但是需要注意一些问题
(1)不管哪种场景,防火墙需要能够感知到主用线路故障,这个感知不单单是说物理线路,更多的是它的连通性。(比如电信的线路是好的,但是就是没有网络的情况)
(2)DNS问题,在同一个运营商的场景,DNS都使用的一个场景的没任何问题,但是如果是不同运营商的场景,那么DNS该如何去分配给客户端呢?都分配电信的DNS,那么一旦电信出现问题,切换到联通,导致解析过慢或者失败的问题,如果主用电信 备用联通,对于切换到联通后,还是会存在延迟问题。
解决问题一:防火墙感知线路故障
总结出来了会出现哪些问题,那么就要解决它,想让防火墙能够感知到线路的故障,不管是物理直连的还是相对于直连身后的互联网,必须定一个监控点,通过这个监控点的连通性来决定该线路是否是好的,竟然监控点决定了这个线路的好坏,所以在实际中建议搭建选择靠谱点的监控点,比如公有阿里云的DNS 223.5.5.5、114.114.114.114以及百度的180.76.76.76,这样不至于监控点出问题让防火墙误以为线路故障了。在USG防火墙中,监控某个点的技术有三个个技术一个是ip-link,一个是NQA、一个是BFD,这里比较推荐用ip-link,主要配置简单,配合切换最适合了,而BFD与NQA则会繁琐一些。ip-link的原理是我们在配置定义的时候,可以指定的目的IP周期性地发送探测报文并等待应答,来判断链路是否发生了故障。(配置会在实验环境进行演示)
解决问题二:DNS问题
如果客户环境多个线路不是同一个运营商的场景,DNS的分配建议是直接使用公有DNS,比如阿里云、114或者百度的,这样不管从电信的线路出去还是联通的线路出去,这些公有DNS都能够为你解析,也解决了不管目前主用线路是电信还是联通都能够解析,客户不需要关心DNS的问题,唯一的确定就是比起电信、联通自己的DNS速度解析方面差那么一点点。
实际案例:多ISP外网下的主备组网
客户环境:内网有两个网段,网关都在核心,防火墙上面接了双线路,一个电信、一个联通,希望默认都走电信,当电信线路出现故障后,能够自动切换到联通,保证网络通畅。都22篇了,交换机跟防火墙的基础配置就不在过多的讲解了,这里给出配置,电信、联通、边缘路由器根据自己规划跑个OSPF能通就行。
1、核心交换机配置
sysname Core
#
vlan batch 10 20 255
#
dhcp enable
#
interface Vlanif10
ip address 192.168.10.254 255.255.255.0
dhcp select interface
dhcp server dns-list 223.5.5.5 114.114.114.114
#
interface Vlanif20
ip address 192.168.20.254 255.255.255.0
dhcp select interface
dhcp server dns-list 223.5.5.5 114.114.114.114
#
interface Vlanif255
ip address 192.168.255.1 255.255.255.0
#
interfaceGigabitEthernet0/0/1
port link-type access
port default vlan 10
#
interfaceGigabitEthernet0/0/2
port link-type access
port default vlan 10
#
interfaceGigabitEthernet0/0/3
port link-type access
port default vlan 20
#
interfaceGigabitEthernet0/0/4
port link-type access
port default vlan 20
#
interfaceGigabitEthernet0/0/24
port link-type access
port default vlan 255
#
ip route-static 0.0.0.00.0.0.0 192.168.255.2
2、防火墙基础配置
#
interfaceGigabitEthernet1/0/0
undo shutdown
ip address 192.168.255.2 255.255.255.0
#
interfaceGigabitEthernet1/0/1
undo shutdown
ip address 202.100.1.1 255.255.255.0
#
interfaceGigabitEthernet1/0/2
undo shutdown
ip address 61.128.1.1255.255.255.0
#
firewall zone trust
set priority 85
add interface GigabitEthernet1/0/0
#
firewall zone untrust
set priority 5
add interface GigabitEthernet1/0/1
add interface GigabitEthernet1/0/2
#
security-policy
rule name internet
source-zone trust
destination-zone untrust
source-address 192.168.10.0 mask255.255.255.0
source-address 192.168.20.0 mask255.255.255.0
action permit
#
nat-policy
rule name internet
source-zone trust
destination-zone untrust
action source-nat easy-ip
#
ip route-static192.168.10.0 255.255.255.0 192.168.255.1
ip route-static192.168.20.0 255.255.255.0 192.168.255.1
#
3、主备线路配置(重点)
主备在实际中最常用的就是默认走电信或者联通,另外一根做备用,当出现问题后能够自动切换,保证网络通畅。在之前的讲解中说过,想要能够让防火墙去感知线路出现了故障,那么就需要找到一个监测点,这里就以实际中常用为主223.5.5.5,监控这个,一旦这个出现故障就切换,这里采用ip-link技术
[USG6000V1]ip-link check enable //开启ip-link检测
[USG6000V1]ip-linkname dx //起一个ip-link进程的名字,可以定义很多监测点
[USG6000V1-iplink-dx]destination223.5.5.5 interface GigabitEthernet1/0/1 mode icmp next-hop 202.100.1.2 //建议完整参数都调用,这里表示用G1/0/1接口的地址下一跳网关是202.100.1.1发送ICMP出去访问223.5.5.5,配置这个后,防火墙会周期性的从1口发包出去ping 223.5.5.5,如果通,则状态显示up,如果不通则状态显示down。
当刚配置完后,防火墙上面有提示,检测失败,状态变成了down,并且display ip-link也可以看到状态。在配置防火墙的时候我们漏掉了一个地方没配置,那就是出口的配置,竟然是主备模式,那自然是一主一备,对于在防火墙上面的体现就是用两条默认路由,优先级不一样,主的优先级高,备用的优先级低就可以了。
[USG6000V1]ip route-static 0.0.0.0 0.0.0.0 202.100.1.254
[USG6000V1]ip route-static 0.0.0.0 0.0.0.0 61.128.1.254preference 70
路由表只会显示优先级高的那条。
当我们配置默认路由后,神奇的事情发生了,ip-link起来了,为什么说神奇呢,因为博主之前一直在强调一个事情,就是防火墙自身的流量发出去一定要通过安全策略放行local的流量,但这次的安全策略并没有放行Local的流量,它能够通。(PS:这里博主查了资料,在V2R5版本后,ip-link是不受安全策略的影响,不需要放行Local的策略的,但是如果说遇到早期的下一代防火墙 V1版本,注意下,如果一直没起来,则放行下Local安全策略,你会发现就up了,不过博主还是强烈建议配置Local的策略放行,在测试与排错非常方便。)
ip-link虽然up了,这样还不够,这个时候可以分析下,主备切换的主要依靠就是那两条默认路由,通过优先级控制的,默认走的电信,如果主用线路发生了故障,但是默认路由它会存在,那路由表的路由会一直存在这条优先级高的,永远不会切换到联通这条备用线路,所以这个时候需要把ip-link与默认主线路路由做一个关联,当ip-link失效后,所关联的主路由也随之失效。
[USG6000V1] ip route-static 0.0.0.0 0.0.0.0 202.100.1.2 track ip-link dx
这个时候来验证测试下,是否生效,可以把电信另外一边的口直接shutdown,模拟线路出问题的故障。
可以看到,当把电信另外一边的接口关闭模拟故障后,ip-link直接发出提示,状态变成了down,由于变成了down状态,所关联的电信默认路由自然就失效了,路由被直接切换到了联通线路。
客户端测试ping 223.5.5.5也是通的。
现在走的是联通的,因为电信的出现了故障,这个时候可以把电信的线路恢复下。
这个时候ip-link检测到线路恢复了,状态变成up,自然对应的主路由也随之恢复,线路切换到了电信。
客户端长ping测试,切换没有带来丢包,当然实际中根据应用APP感知的不同,可能出现的情况也不一样,有的可能会卡顿一下,有的可能需要重新登录,总体来说影响是不大的。
注意事项总结
在我们遇到有主备线路切换的时候,那么要注意几点。
(1)DNS问题,如果双线路不是同一个运营商,建议使用公有DNS下发,这样保障线路切换的时候客户端不受影响
(2)定义ip-link,注意先开启,然后在创建ip-link进程,在定义的时候,建议关联接口、模式以及下一跳(这里说明下,如果是拨号口的话则不需要写下一跳)
(3)设置双线路路由的优先级,主路由如果不加优先级默认是60,并且直接关联ip-link到主路由,备用路由优先级则必须是60以上,(这里一定要注意,有的朋友习惯在WEB界面配置,直接把网关填写了,在这个地方填写了网关,优先级是无法更改的,所以如果双线路,又是主备的情况下,一定用静态路由的配置方式。)
(4)防火墙其余的配置只要接口地址对接以及安全策略、NAT策略配置正确的话,就不会出现什么情况,如果出现问题根据之前学到的依次排查即可。