一般的NAT组网中,内网用户通过单台设备进行NAT转换访问外网,NAT设备承担了所有内外网之间的流量,无法规避单点故障。一旦发生单点故障,将导致内网用户无法与外网通信。
随着用户对网络可靠性的要求越来越高,发生单点故障导致网络间断是不可接受的。因此在重要节点处一般都部署两台或者多台设备,构成冗余备份组网,但如果设备之间不能实时的进行数据备份的话,链路切换时还是会导致用户的业务中断。双机热备方案可以很好避免该风险,该方案通过部署两台设备形成备份,通过VRRP或动态路由等机制进行链路切换,实现一台设备故障后流量自动切换到另一台正常工作的设备。
NAT的双机热备方案是两者的统一,同时实现内外网交互时的NAT功能及规避单点故障的双机热备功能,保证网络的不间断传输。
防火墙设备需要维护每条会话的状态等相关信息,当主设备故障、流量切换到备份设备时,要求备份设备上有正确的会话信息才能继续处理会话报文,否则会话报文会被丢弃从而导致会话中断。因此,主设备上会话建立或表项变化时需要将相关信息同步到备份设备,以保证主设备和备份设备会话表项的完全一致。防火墙需要同步的信息包括会话表、会话扩展信息、关联表等。数据同步的方式有批量备份和实时备份:
批量备份:防火墙设备工作了一段时间后,可能已经存在大量的会话表项,此时加入另一台防火墙设备,在两台设备上使能双机热备功能后,先运行的防火墙会将已有的会话表项一次性同步到新加入的设备,这个过程称为批量备份。
实时备份:防火墙在运行过程中,可能会产生新的会话表项。为了保证表项的完全一致,防火墙在产生新表项或表项变化后会及时备份到另一台设备,这个过程称为实时备份。
针对不同的组网环境,双机热备还实现了对非对称路径会话的备份。当备份类型为不支持非对称路径备份时,一条会话中的数据流进入内网和从内网出去所经过的设备必须相同,即进入内网时经过双机热备中的一台设备,从内网出去时经过的设备是进入时经过的设备;当备份类型为支持非对称路径备份时,一条会话中的数据流进入内网和从内网出去所经过的设备可以不同,即进入内网时经过双机热备中的一台设备,从内网出去时经过的设备可以是进入时经过的设备,也可以是另一台设备。
根据组网情况,双机热备方案有两种工作模式:主备模式和负载分担模式(本文只描述了主备模式的NAT双机热备,负载分担模式中NAT的配置与主备模式相似)。
双机热备的两台设备间利用VRRP或动态路由实现流量的切换,流量模型如图1、图2所示。
图1 主备模式下,Firewall 1故障前流量模型
图2 主备模式下,Firewall 1故障后流量模型
当双机热备的两台设备在网络中还需要完成NAT功能时,两台设备上配置的NAT地址池的地址空间必须完全一样,才能保证在一台设备发生故障时,另一台设备能够接替故障设备上的业务运行。但是,如果两台设备在做地址转换时,分别从各自的地址池中选用了相同的地址,且分配了相同的端口号,则会导致两台设备上的反向会话完全一样,无法进行会话数据的备份。
为解决该问题,NAT地址池引入了低优先级属性。在双机热备的两台设备上配置地址空间相同但优先级不同的地址池。例如:在两台设备上均配置地址池100.0.0.1~100.0.0.10,其中一台设备上的100.0.0.1~100.0.0.10地址池为低优先级。在进行地址转换时,低优先级NAT地址池中地址的端口取值范围为35001~65535,高优先级地址池中地址的端口取值范围为1024~35000。这样主备两台防火墙虽然使用相同的NAT地址池中的地址,但是由于地址池的优先级不同,所以NAT转换后公网IP和公网端口就不会出现完全相同的情况了,在备份会话数据时就不会发生冲突。
图3 负载分担模式下,NAT地址池的低优先级属性
在特定组网条件下,双机热备支持NAT的两台设备还可能会发生ARP响应冲突的情况,如图4所示。Firewall 1和Firewall 2上均配置了NAT地址池100.0.0.1~100.0.0.10。当Router发起ARP请求,询问这两个地址池中的某个地址(如100.0.0.2),Firewall 1和Firewall 2都会收到这个ARP请求,并识别出这是自己地址池中的地址。这样,两台设备都会回复一个ARP响应,导致ARP响应冲突。
为解决上述问题,NAT地址池引入了新的地址池ARP响应机制,即可以设置低优先级的地址池在设备的热备状态处于同步状态时不响应ARP请求。从而,保证了不会出现ARP响应冲突。
通过VRRP将网络中的一组设备配置成一个备份组,这组设备在功能上就相当于一台虚拟设备。网络中的主机只需要知道这个虚拟设备的IP地址,通过这个虚拟设备与其它网络进行通信。备份组中,仅有一台设备处于活动状态,能够转发报文,称为主用设备(Master),其余设备都处于备份状态,并随时按照优先级高低做好接替任务的准备,称为备份设备(Backup)。当发现主用设备故障时,优先级次高的备用设备会当选为新的Master接替原Master工作,整个过程对用户来说是完全透明的,这就很好的实现了流量切换。
图5 通过VRRP实现流量切换(主备模式)
图5中连接私网和公网的两个接口分别配置备份组1和备份组2,私网的网关指定为备份组1的虚
地址,公网的网关指定为备份组2的虚地址,当网络中主备切换时,上下游的网络设备是感知不到网络变化的,这样就确保了流量不间断。
NAT功能在公网侧的接口上开启,下面详细看看公网侧接口的配置:
Firewall 1:
nat address-group 100 100.0.0.1 100.0.0.10 level 1 //地址池配置
#
acl number 2999 //匹配所有报文
rule 0 permit
#
interface GigabitEthernet2/11
port link-mode route
nat outbound 2999 address-group 100 track vrrp 2 //匹配ACL 2999规则的报文进行地址转换,地址池为100,关联VRRP备份组2
ip address 100.0.0.100 255.255.255.0
vrrp vrid 2 virtual-ip 100.0.0.200 //VRRP备份组2的虚地址
vrrp vrid 2 track interface GigabitEthernet2/10 reduced 10 //VRRP备份组2监控接口2/10(连接私网的接口)的状态,2/10的状态为Down或者Remove时,设备会主动降低VRRP备份组2的优先级
Firewall 2:ACL的配置相同
nat address-group 100 100.0.0.1 100.0.0.10 level 0 //Level 0表示该地址池对应于双机热备中的低优先级地址池
#
interface GigabitEthernet2/11
port link-mode route
nat outbound 2999 address-group 100 track vrrp 2
ip address 100.0.0.101 255.255.255.0
vrrp vrid 2 virtual-ip 100.0.0.200
vrrp vrid 2 track interface GigabitEthernet2/10 reduced 10
双机热备的负载分担模式下利用VRRP切换流量的NAT配置与主备模式大致相同,本文档不做描述。
如果网络中不同网段的两台设备A到B之间有多条通路,动态路由协议会使用算法选取最优的一条路径作为A到B的路由。当这条通路故障,路由协议会从其他可用通路中选择最优的一条作为新的路由,如果故障设备恢复,则会重新使用原路由,从而动态的保证A与B之间的连通。
双机热备的工作模式是主备模式还是负载分担模式可以通过组网和动态路由的配置来实现(以OSPF为例):
主备模式只有一台防火墙处于工作状态,另一台防火墙处于备份状态。如图6所示,Router A、Router B、Firewall 1和Firewall 2上均配置OSPF功能,处于同一个OSPF域,在Router A和Router B上都配置G0/1的cost值小于G0/2的。这样,路径Router A<—>Firewall 1<—>Router B的优先级会高于路径Router A<—>Firewall 2<—>Router B,当Firewall 1能正常工作的情况下,内网发往外网的报文都会通过Firewall 1转发;当Firewall 1发生故障,OSPF会启用次优路由,内网发往外网的报文会通过Firewall 2转发。
负载分担模式下两台防火墙处于工作状态并互为备份。如图6所示,Router A、Router B、Firewall 1和Firewall 2上均配置OSPF功能,处于同一个OSPF域,在Router A和Router B上都配置两条等价路由。因为Router A<—>Firewall 1<—>Router B这条路由与Router A<—>Firewall 2<—>Router B优先级一样,所以,当Firewall 1、Firewall 2能正常工作的情况下,Firewall 1和Firewall 2分担处理内网发往外网的报文;当Firewall 1发生故障,则Firewall 2会处理内网发往外网的全部报文。
NAT功能开启在公网侧的防火墙上,相关配置如下:
Firewall 1:
ospf 1
import-route static //引入NAT地址池中地址的路由,发布给上行设备
area 0.0.0.100
network 192.168.0.0 0.0.255.255 //私网侧的地址网段
network 100.0.0.0 0.0.255.255 //公网侧的地址网段
#
nat address-group 100 100.0.0.1 100.0.0.10 level 1
#
acl number 2999
rule 0 permit source 100.0.0.0 0.0.0.255
#
interface GigabitEthernet2/10 //连接私网的接口
port link-mode route
ip address 192.168.0.100 255.255.255.0
#
interface GigabitEthernet2/11 //连接公网的接口
port link-mode route
nat outbound 2999 address-group 100
ip address 100.0.0.100 255.255.255.0
Firewall 2:
ospf 1
import-route static
area 0.0.0.100
network 192.168.0.0 0.0.255.255
network 100.0.0.0 0.0.255.255
#
nat address-group 100 100.0.0.1 100.0.0.10 level 0
#
interface GigabitEthernet2/10 //连接私网的接口
port link-mode route
ip address 192.168.1.100 255.255.255.0
#
interface GigabitEthernet2/11 //连接公网的接口
port link-mode route
nat outbound 2999 address-group 100
ip address 100.0.1.100 255.255.255.0
NAT的双机热备方案,解决IPv4地址短缺问题的同时也很好的提高了组网系统的可靠性,拓展了NAT的应用场景,为NAT在多种环境下的应用提供了解决方案。