NAT的双机热备方案

一般的NAT组网中,内网用户通过单台设备进行NAT转换访问外网,NAT设备承担了所有内外网之间的流量,无法规避单点故障。一旦发生单点故障,将导致内网用户无法与外网通信。随着用户对网络可靠性的要求越来越高,发生单点故障导致网络间断是不可接受的。因此在重要节点处一般都部署两台或者多台设备,构成冗余备份组网,但如果设备之间不能实时的进行数据备份的话,链路切换时还是会导致用户的业务中断。双机热备方案可…

大家好,又见面了,我是你们的朋友全栈君。

一般的NAT组网中,内网用户通过单台设备进行NAT转换访问外网,NAT设备承担了所有内外网之间的流量,无法规避单点故障。一旦发生单点故障,将导致内网用户无法与外网通信。

随着用户对网络可靠性的要求越来越高,发生单点故障导致网络间断是不可接受的。因此在重要节点处一般都部署两台或者多台设备,构成冗余备份组网,但如果设备之间不能实时的进行数据备份的话,链路切换时还是会导致用户的业务中断。双机热备方案可以很好避免该风险,该方案通过部署两台设备形成备份,通过VRRP或动态路由等机制进行链路切换,实现一台设备故障后流量自动切换到另一台正常工作的设备。

NAT的双机热备方案是两者的统一,同时实现内外网交互时的NAT功能及规避单点故障的双机热备功能,保证网络的不间断传输。

1防火墙的双机热备

防火墙设备需要维护每条会话的状态等相关信息,当主设备故障、流量切换到备份设备时,要求备份设备上有正确的会话信息才能继续处理会话报文,否则会话报文会被丢弃从而导致会话中断。因此,主设备上会话建立或表项变化时需要将相关信息同步到备份设备,以保证主设备和备份设备会话表项的完全一致。防火墙需要同步的信息包括会话表、会话扩展信息、关联表等。数据同步的方式有批量备份和实时备份:

批量备份:防火墙设备工作了一段时间后,可能已经存在大量的会话表项,此时加入另一台防火墙设备,在两台设备上使能双机热备功能后,先运行的防火墙会将已有的会话表项一次性同步到新加入的设备,这个过程称为批量备份。

实时备份:防火墙在运行过程中,可能会产生新的会话表项。为了保证表项的完全一致,防火墙在产生新表项或表项变化后会及时备份到另一台设备,这个过程称为实时备份。

针对不同的组网环境,双机热备还实现了对非对称路径会话的备份。当备份类型为不支持非对称路径备份时,一条会话中的数据流进入内网和从内网出去所经过的设备必须相同,即进入内网时经过双机热备中的一台设备,从内网出去时经过的设备是进入时经过的设备;当备份类型为支持非对称路径备份时,一条会话中的数据流进入内网和从内网出去所经过的设备可以不同,即进入内网时经过双机热备中的一台设备,从内网出去时经过的设备可以是进入时经过的设备,也可以是另一台设备。

根据组网情况,双机热备方案有两种工作模式:主备模式和负载分担模式(本文只描述了主备模式的NAT双机热备,负载分担模式中NAT的配置与主备模式相似)。

双机热备的两台设备间利用VRRP或动态路由实现流量的切换,流量模型如图1、图2所示。

NAT的双机热备方案

图1主备模式下,Firewall 1故障前流量模型

NAT的双机热备方案

图2主备模式下,Firewall 1故障后流量模型

2NAT与双机热备的组合

2.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和公网端口就不会出现完全相同的情况了,在备份会话数据时就不会发生冲突。

NAT的双机热备方案

图3负载分担模式下,NAT地址池的低优先级属性

2.2低优先级地址池的不响应ARP请求属性

在特定组网条件下,双机热备支持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响应冲突。

NAT的双机热备方案

图4低优先级地址池的不响应ARP请求属性

3方案的实现

3.1利用VRRP实现流量切换

通过VRRP将网络中的一组设备配置成一个备份组,这组设备在功能上就相当于一台虚拟设备。网络中的主机只需要知道这个虚拟设备的IP地址,通过这个虚拟设备与其它网络进行通信。备份组中,仅有一台设备处于活动状态,能够转发报文,称为主用设备(Master),其余设备都处于备份状态,并随时按照优先级高低做好接替任务的准备,称为备份设备(Backup)。当发现主用设备故障时,优先级次高的备用设备会当选为新的Master接替原Master工作,整个过程对用户来说是完全透明的,这就很好的实现了流量切换。

NAT的双机热备方案

图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/10reduced 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/10reduced 10

双机热备的负载分担模式下利用VRRP切换流量的NAT配置与主备模式大致相同,本文档不做描述。

3.2利用动态路由实现流量切换

如果网络中不同网段的两台设备A到B之间有多条通路,动态路由协议会使用算法选取最优的一条路径作为A到B的路由。当这条通路故障,路由协议会从其他可用通路中选择最优的一条作为新的路由,如果故障设备恢复,则会重新使用原路由,从而动态的保证A与B之间的连通。

双机热备的工作模式是主备模式还是负载分担模式可以通过组网和动态路由的配置来实现(以OSPF为例):

NAT的双机热备方案

图6通过动态路由实现流量切换

主备模式只有一台防火墙处于工作状态,另一台防火墙处于备份状态。如图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

4小结

NAT的双机热备方案,解决IPv4地址短缺问题的同时也很好的提高了组网系统的可靠性,拓展了NAT的应用场景,为NAT在多种环境下的应用提供了解决方案。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/126375.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • mybatis中的动态sql表现为_MybatisPlus

    mybatis中的动态sql表现为_MybatisPlus如何分页查询Mybatis如何分页查询?Mysql中可以使用limit语句,但limit并不是标准SQL中的,如果是其它的数据库,则需要使用其它语句。MyBatis提供了RowBounds类,用于实现分页查询。RowBounds中有两个数字,offset和limit。MyBatis如何利用RowBounds

  • python之 python 起源、语言特点[通俗易懂]

    python之 python 起源、语言特点[通俗易懂]一、1.1什么是PythonPython是一门优雅而健壮的编程语言,它继承了传统编译语言的强大性和通用性,同时也借鉴了简单脚本和解释语言的易用性。它可以帮你完成工作,而且一段时间以后,你还能看

  • nginx自动重启脚本_nginx进程数和连接数

    nginx自动重启脚本_nginx进程数和连接数工作中经常要杀掉nginx对应的进程,然后手动命令重启和删除nginx日志,每次都要输入3个或3个以上的命令,效率低。写个脚本万事大吉。#!/bin/shNAME=”nginx-p/home/proj/gamebin/-cconf/depnginx.conf”ID=`ps-ef|grep”$NAME”|grep-v”$0″|grep-v”…

  • Python pytest测试框架详解

    Python pytest测试框架详解pytest介绍:pytest是一个非常成熟的全功能的Python测试框架:1.简单灵活,容易上手2.支持参数化3.测试用例的skip和xfail,自动失败重试等处理4.能够支持简单的单元测试和复杂的功能测试,还可以用来做selenium/appnium等自动化测试、接口自动化测试(pytest+request)5.pytest具有很多第三方插件,并且可以自定义扩展,比较好用的如pytest-allure(完美html测试报告生成)、pytest-xdist(多CPU分发)等6.可以很好的和

  • 银行家算法 C语言实现

    银行家算法 C语言实现C语言实现银行家算法这几天老师要求使用C语言实现银行家算法,数据可以自定义。想来想去还是照着书现成的数据来模拟一下。教材使用的是西安电子科大出版社的《计算机操作系统》汤小丹第四版。模拟数据使用的是P121页第4题的数据。听到老师布置题目的第一时间我还是有点懵,看了下书更懵了,这条条框框的判断条件怎么这么多。。沉下心来慢慢看,其实还是挺简单的算法。/*Author:Cnkizy…

  • scikit-learn : LARS[通俗易懂]

    scikit-learn : LARS[通俗易懂]LARS正则化斯坦福大学的BradleyEfron,TrevorHastie,IainJohnstone和RobertTibshirani发现了LARS(LeastAngleRegression,最小角回归)它借用了威廉·吉尔伯特·斯特朗(WilliamGilbertStrang)介绍过的高斯消元法(Gaussianelimination)的灵感。背景LARS是一种回归手段,适

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号