简介:双防火墙高可用性网络设计是排除网络单点故障的关键,这份PDF面向网络工程师、运维人员及企业网络架构师,专门讲解防火墙双机热备(Failover/HA)的组网落地。资源打包为1个PDF文档,包体仅13KB,篇幅精干,适合快速通读。文档系统比较了主备(Active-Standby)与双活(Active-Active)两种工作模式,并按单链路/双链路、跨接/旁路等维度拆解四类典型方案,逐一分析拓扑结构、优缺点与适用场景。内容覆盖心跳线设计、VLAN划分、策略路由、静态分组等关键细节,也明确了不同方案在设备性能利用、链路带宽占用、系统集成难度和安全性方面的取舍。对正在规划高可用性网络、或需要排查防火墙冗余部署问题的技术人员,能直接提供选型与排错思路。目前已有104人学习下载,适合作为网络高可用性专题的速查笔记。
1. 双防火墙网络拓扑要解决什么问题
你在网上搜“双防火墙的网络拓扑”,大概率是遇到两个场景:要么是两台防火墙接到同一个网段,想做成热备却总在抢IP;要么是已经按“一台防火墙三个接口”做了DMZ,结果被安全审计问了一句:“DMZ被攻破之后,内网凭什么还活着?”双防火墙就是把你习惯的一套边界规则拆成两道独立的防线。它可以是一主一备的并联热备,也可以是外防火墙加内防火墙的串联结构。本文会按这两种主流形态展开,给出可复现的配置思路和排错路径。适合正在做出口改造、等保整改,以及准备换掉单点防火墙设备的运维和网络工程师。
2. 双防火墙网络拓扑的两种主流架构
2.1 并联双机热备:把可用性从重启拉回业务侧
2.1.1 热备的转发模型
双防火墙最常见的拓扑是两台防火墙并联在核心设备和出口之间。两台设备共享一个虚拟IP,通过VRRP或厂商私有的HA协议协商主备状态。业务流量只走主设备,备设备通过心跳线实时同步会话表、配置和运行状态。当主设备宕机、链路断开或心跳超时,备设备在秒级(通常是3~5秒)内接管虚拟IP和转发任务。
关键点在于:热备解决的是“防火墙挂了怎么办”,而不是“攻击突破了防火墙怎么办”。如果只做热备,策略集合仍然是同一套,等于把单点故障从硬件转移到了配置本身。所以后面会看到,有些网络同时做双机热备和内外双层,形成三防火墙甚至四防火墙的混合形态。
2.1.2 华为USG的HRP与VRRP的区别
在eNSP里用USG6000V做实验时,很多同学发现它不像路由器那样直接配VRRP,而是启用HRP协议。HRP(Huawei Redundancy Protocol)是华为防火墙特有的双机热备协议,承载在两条心跳链路之上。为什么要两条心跳?一条传状态协商报文,一条传会话表同步数据,避免大数据量同步阻塞协商。这一点在千兆流量下尤其明显,如果只用一条心跳线,会话表同步报文可能会把协商报文挤掉,导致双主或频繁切换。
华为USG的HRP和普通VRRP还有个差异:VRRP只管理虚拟IP的漂移,不关心防火墙会话;HRP会把配置和会话表一起同步到备机。这也意味着备机上的业务接口地址必须预先配置好,而且在为主设备执行配置命令时,HRP会自动把这些配置推送到备机,不需要在备机上重复敲一遍。
2.2 串联内外双层:信任域的第二次切割
2.2.1 外防火墙、DMZ、内防火墙的三层结构
第二种常见拓扑是内外两台防火墙串联,中间专门划出一个DMZ区域。外防火墙连接ISP线路,完成NAT映射和对外部流量的粗粒度过滤;内防火墙连接核心交换机,对从DMZ进入内网的流量做细粒度访问控制。服务器放在两台防火墙之间的DMZ交换机上,既能对外发布服务,又不直接暴露内网。
这种结构的安全价值很直接:外防火墙被攻破,攻击者拿到的只是DMZ,内防火墙还在。如果只用单台防火墙的三接口DMZ方案,一旦防火墙本身被绕过,三个区域之间的隔离就全部失效。很多等保方案要求“对外服务区与内网隔离”,双防火墙串联就是最直观的落地方式。
2.2.2 代价:路由和策略复杂度的成倍上升
串联双防火墙不是把策略复制一份就行。你需要在内外两台设备上分别维护路由表,而且不能两边都是默认路由指出去,否则会产生环路。NAT放哪一层、策略做粗粒度还是细粒度,都要重新分工。常见的做法是外防火墙做NAT和公网入站策略,内防火墙做内网到DMZ、DMZ到内网的访问控制。外防火墙的策略条数可以压缩到几十条,内防火墙才追求规则的精细化,这是和单设备思路最大的差别。
如果内外双层再加上双机热备,拓扑就会从两台防火墙变成四台:外层一对热备,内层一对热备。思路上是每个故障域都保持单点冗余,但策略同步、会话同步的复杂度会继续上升。大部分中小网络不需要做到四台,先把双层串联跑通,再评估每一层是否需要热备更稳妥。
2.3 三种形态的选型表
| 形态 | 设备关系 | 解决的问题 | 典型场景 | 策略复杂度 |
|---|---|---|---|---|
| 双机热备 | 并联,主备 | 可用性 | 核心出口,要求业务连续性 | 低 |
| 内外双层 | 串联,中间DMZ | 安全隔离 | 等保、金融、政务 | 高 |
| 混合形态 | 热备+双层叠加 | 既可用又安全 | 大型数据中心出口 | 很高 |
选型不要只看价格,先问业务:如果防火墙重启一分钟,业务能不能接受?如果能,单台加接口就够了;如果不能,先上双机热备。如果说“服务器区被攻破也不能碰内网”,那才轮到内外双层。注意“防火墙关闭有影响吗”这类问题,在双防火墙架构里答案更复杂:关掉一台热备设备可能不丢流量,但关掉内层防火墙一定断网。
3. 在eNSP里落地双防火墙的最小配置
3.1 搭拓扑:设备接口与区域规划
本节给出eNSP中USG6000V的配置示例。先创建拓扑:两台防火墙分别命名为FW-A(外层)和FW-B(内层),中间放一台DMZ交换机。接口规划如下表。
| 设备 | 接口 | IP地址 | 所属区域 | 连接对象 |
|---|---|---|---|---|
| FW-A | GE0/0/0 | 203.0.113.1/30 | untrust | 出口路由器 |
| FW-A | GE0/0/1 | 10.0.0.4/30 | dmz | DMZ交换机 |
| FW-B | GE0/0/0 | 10.0.0.6/30 | dmz | DMZ交换机 |
| FW-B | GE0/0/1 | 192.168.1.254/24 | trust | 核心交换机 |
| DMZ服务器 | eth0 | 10.0.0.10/24 | - | DMZ交换机 |
这个规划把DMZ地址段放在两台防火墙之间的互联网段上。FW-A连接外网,FW-B连接内网,两边的路由都指向对方。
3.1.1 eNSP导入防火墙设备的格式坑
eNSP里导入USG6000V镜像时,经常会遇到“格式错误”提示。常见原因是镜像版本和eNSP版本不匹配。先确认eNSP版本再找对应V500R005版本的设备包;导入后启动一直刷“#”,不要急着点击,USG6000V完全启动需要3~5分钟,刷井号期间可以用display version确认是否已在引导。
3.2 外层防火墙FW-A的最小配置
text # 进入系统视图 sys sysname FW-A # 接口IP与区域 interface GigabitEthernet0/0/0 undo shutdown ip address 203.0.113.1 30 firewall zone untrust add interface GigabitEthernet0/0/0 interface GigabitEthernet0/0/1 undo shutdown ip address 10.0.0.4 30 firewall zone dmz add interface GigabitEthernet0/0/1 # 默认路由,下一跳指向出口路由器 ip route-static 0.0.0.0 0.0.0.0 203.0.113.2 # 服务端NAT:把公网IP映射给DMZ服务器 nat server web_server global 203.0.113.10 inside 10.0.0.10 http # 安全策略:放行公网到DMZ的HTTP security-policy rule name allow_http_dmz source-zone untrust destination-zone dmz service http action permit逻辑说明:外层防火墙只放行公网对DMZ服务器的指定端口,内网回程流量靠状态检测自动放行。nat server参数中global是公网地址,inside是DMZ服务器内网地址,service http限定了只暴露80端口。如果是HTTPS,需要再加一条service https,不要用any。
3.3 内层防火墙FW-B的最小配置
text sys sysname FW-B # 接口IP与区域 interface GigabitEthernet0/0/0 undo shutdown ip address 10.0.0.6 30 firewall zone dmz add interface GigabitEthernet0/0/0 interface GigabitEthernet0/0/1 undo shutdown ip address 192.168.1.254 24 firewall zone trust add interface GigabitEthernet0/0/1 # 默认路由指向外层防火墙 ip route-static 0.0.0.0 0.0.0.0 10.0.0.4 # 安全策略:只允许内网访问DMZ的指定端口 security-policy rule name allow_dmz_from_trust source-zone trust destination-zone dmz service http https action permit rule name deny_dmz_to_trust source-zone dmz destination-zone trust action deny注意FW-B没有NAT配置。内网访问DMZ时,FW-B只做路由转发,源地址保持192.168.1.0/24不变。很多人在这一层顺手做了源NAT,结果DMZ服务器看到的内网源地址全是防火墙接口地址,日志里没法定位具体客户端。双防火墙内层原则上不做源NAT,除非有特殊路由要求。
3.4 双机热备的HRP配置
如果你要做的是并联热备,而不是内外双层,把上面的FW-A/FW-B改成主备两台同位置设备,然后配置HRP:
text # 主设备 hrp interface GigabitEthernet1/0/0 remote 10.0.255.2 hrp enable # 备设备 hrp interface GigabitEthernet1/0/0 remote 10.0.255.1 hrp standby-device hrp enable逻辑说明:remote指定对端心跳地址;hrp enable开始同步;备设备必须在业务配置同步前设为standby-device,否则两台都会抢占主角色。业务接口IP在主备两台设备上要配成相同地址,VRRP虚拟IP在华为防火墙里由HRP自动管理,不用手工配置。验证用display hrp state,看到State: Active或Standby才说明协商成功。
4. 双防火墙场景下的路由、NAT与策略设计
4.1 路由设计:避免环路和黑洞
双防火墙拓扑中最容易翻车的是回程路由。比如内网用户访问DMZ服务器,请求从内网到FW-B再到FW-A,响应回来时FW-A会把包转发给FW-B,因为FW-A上的DMZ路由指向FW-B互联地址。但如果FW-B上写了默认路由指向FW-A,两个设备之间就可能出现路由拉扯。解决方法是:内层防火墙的默认路由指向外层,但DMZ和trust之间的双向明细路由要精确到互联地址或网段,不要滥用默认路由。
接口地址规划也建议把互联地址单独拎一段,比如10.0.0.0/30,不要和DMZ业务网段混在一起。否则地址扫描和路由泄露的风险都会增加。我一般会在两张防火墙上同时配一条黑洞路由,把DMZ网段和trust网段以外的流量直接丢弃,防止意外流量在两个防火墙之间反复横跳。
4.2 NAT放在哪一层
工作区里最常见的争论是“NAT放外层还是内层”。我的经验是:对外NAT放在外防火墙,内防火墙不做NAT,只做纯转发和策略控制。原因有三个:一是内网用户访问DMZ时,想保留真实源IP便于溯源;二是外防火墙要统一管理公网IP和端口映射,出问题时只需排查一台设备;三是内层和DMZ之间如果有专线或安全审计系统,保留原始地址才能让日志链路完整。
有一种情况例外:内外网使用重叠地址段,比如两家公司合并后都是192.168.1.0/24,必须在内层防火墙上做双向NAT才能打通。这时要单独建NAT策略并配好黑洞路由,防止NAT后的地址被路由回环。
| 流量方向 | NAT位置 | 源地址 | 目的地址 |
|---|---|---|---|
| 公网 -> DMZ | 外层防火墙 | 公网IP | 服务器映射公网IP |
| 内网 -> DMZ | 不做NAT | 内网真实IP | DMZ服务器IP |
| 内网 -> 公网 | 外层防火墙 | NAT到出接口IP | 公网地址 |
| DMZ -> 内网 | 默认拒绝 | - | - |
4.3 安全策略的粒度分配
双防火墙的策略不要做得一样宽。外层防火墙的入方向策略尽量少,放行的端口越少越好,DMZ区域的典型配置是面向公网只开80和443,其他端口在security-policy里默认拒绝。内层防火墙才需要把内网访问DMZ的规则写细,比如开发部能访问数据库端口,运维部能访问SSH,这些规则如果放在外层,策略条数会爆炸,而且每次变更都要走公网边界审批。
这里可以用到“黑白名单”的思路。有些单位会在外层防火墙上加黑名单封禁特定IP,把已知威胁IP列表下发到外防火墙;内防火墙则用白名单思路,只允许业务需要的IP和端口通过。两层策略组合起来,比单台防火墙既做黑名单又做白名单更清晰,也更容易导出审计报表。
4.4 单臂路由与旁挂模式的取舍
如果双防火墙需要接入多个VLAN,又不方便拉太多物理线,可以在防火墙上启用子接口做单臂路由。比如FW-B的GE0/0/1拆成GE0/0/1.10、GE0/0/1.20,分别终结内网VLAN 10和VLAN 20。配置上要记得子接口必须启用802.1Q终结,并且安全区域要按子接口划分,否则流量会被区域策略拦住。
旁挂模式则适合已经很成熟的二层核心环境,把防火墙以透明模式串进关键路径,避免改动核心交换机的路由。不过透明模式下的双防火墙热备,会话同步机制和三层模式不一样,需要单独验证。
4.5 会话表与状态同步
双机热备形态下,会话表同步是关键。华为HRP默认只同步配置和状态,不自动同步所有会话。如果业务要求断开一台防火墙不中断TCP连接,需要开启会话快速备份。在配置里加上hrp session fast-sync,注意这个命令会让CPU开销上升,适合大连接数但低流量弹性的场景。串联双层架构下,内外两台防火墙各自维护独立的会话表,没有同步问题,但要注意超时时间不一致导致的现象:客户端看到连接被外层切断,而内层还认为连接存在。所以内外两台防火墙最好使用相同的会话老化时间,比如TCP默认3600秒,UDP默认120秒,不要随意改其中一台。
5. 双防火墙的验证与排错技巧
5.1 用三层手段验证双向流量
搭建完拓扑后,先在内网PC上长ping DMZ服务器,然后逐台登录防火墙检查display firewall session table。如果能看到protocol: ICMP的会话且两个方向的包数都在增长,说明转发链路OK。接着curl公网地址访问DMZ服务器,验证外层防火墙的NAT是否生效。这一步别急着看页面,先看外层防火墙的display nat session,确认公网IP对应的映射关系。
5.2 会话表抓包定位“通一半”问题
最典型的故障现象是内网能访问DMZ,DMZ服务器回应却到不了内网。这种问题多半出在路由回程,而不是策略。登录FW-A抓包,过滤源IP为DMZ服务器、目的IP为内网PC的包,看下一跳是不是FW-B。如果是,再登录FW-B看有没有对应路由。命令参考:业务侧用tracert,防火墙侧用display ip routing-table 192.168.1.0确认明细路由。如果FW-B上只有默认路由而没有trust回程明细,回包就会被丢给默认路由,产生环路。
5.3 双机热备切换验证清单
验证热备不要直接拔电源,那样太粗暴。标准做法是把主设备的心跳线断开,观察备设备是否在5秒内成为Active。恢复心跳后,主设备是否会抢占回来取决于配置,如果是非抢占模式,业务不会反复抖动。注意display hrp state里要同时看Active/Standby状态和会话同步计数。如果切换后业务丢包但新连接正常,优先检查会话快速备份是否开启,以及备设备是否有旧配置残留。
5.4 把串联双层和热备的边界分开验证
如果你做的是内外双层,验证方法就完全不同。先关掉或断开FW-A的出口链路,观察内网访问DMZ是否中断;再断开FW-B的核心侧链路,观察公网访问DMZ是否中断。两次测试能确认每台防火墙在拓扑里的真实依赖关系。很多故障其实发生在“以为有冗余,实际是串联”的认知错位里,先把边界测清楚,再谈优化。
本文还有配套的精品资源,点击获取