双机热备旁挂部署:防火墙高可用与策略路由实战指南
先说句实在话出口安全设备、上网行为管理、内网审计网关这类设备最怕的不是性能不够而是单点故障。设备宕机未必导致全网瘫但领导半夜打电话问“为什么这段流量没记录、没过滤”的时候你连句完整解释都说不出来。双机热备旁挂场景就是冲着这个问题去的把两台同型号的防火墙或网关设备做成主备对通过心跳链路实时同步状态与会话再以旁路方式接入核心交换机不改变原有路由结构业务流量经由策略路由引入设备做处理处理完原路送回。主设备一旦宕机备用设备秒级接手现有拓扑只增不减故障影响面压到非常小。这篇文章写给正在做出口安全改造、内网审计设备高可用改造的兄弟内容包含拓扑设计、IP规划、完整配置步骤、切换测试和排错经验都是能直接照着落地的脏活累活。1. 双机热备与旁挂组合的设计思路1.1 双机热备到底解决了什么问题双机热备的核心就两个词冗余和接管。一台设备承担业务时一旦硬件故障、系统崩溃、链路闪断业务流就断了。双机热备部署两台相同角色设备一台为主、一台为备主备之间通过专用心跳口保持通信实时同步配置和会话状态。心跳正常时主设备干活备设备待命心跳丢失或主设备健康检查失败时备设备提升为主角色接管虚拟IP和业务流量。很多人会把双机热备和负载均衡搞混。双机热备的特点是同一时刻只有一台设备真正转发业务流量备设备平时基本空转除非你做了负载分担模式。它换来的不是性能翻倍而是可用性翻倍。这里面最关键的两个机制是状态同步会话表、NAT表、路由表、策略配置等都要实时同步到备设备否则主设备挂了备设备即使接管了IP也不认识当前正在跑的连接用户的TCP会话会全部断掉重连。故障检测通过心跳报文、接口状态、链路探测等多维度判断主设备是否健康。检测粒度越细切换越准确但也要防止误判导致频繁震荡。实际项目中我见过不少“假双机”设备虽然配了热备组但会话同步没开心跳链路只有一根还和业务口共用物理链路结果主设备一挂备设备接管后全网连接重置业务从“能通”变成“全断”反而比单机还难排查。所以配置双机热备不是敲几条命令那么简单关键在于把同步、检测、接管这三件事都做扎实。1.2 为什么选旁挂而不是串联安全设备最常见的接入方式是串联也叫在线部署、网关模式。流量必须穿过设备设备挂在链路中间才能完成过滤、审计、NAT等功能。串联模式逻辑直观但这几年越来越多项目改用旁挂原因很现实串联模式下设备就是链路瓶颈设备升级、重启、策略调试都可能影响整段业务。有些出口设备一重启就是五分钟起核心业务被迫中断。而旁挂模式中设备不处在转发链路的必经之路上核心交换机把所有需要处理的流量通过策略路由引到设备设备处理后把流量再送回核心交换机。对核心交换机来说这台安全设备更像一个“过滤服务提供者”而不是链路中的一环。用生活类比解释就是串联像是小区唯一的门禁所有人都必须从门禁进出门禁坏了小区就出入不了旁挂则像小区门口的保安岗亭车本来可以直接进出但只有需要检查的车辆被引到岗亭过一遍岗亭撤了车流照样走只是少了安全检查。旁挂模式带来的好处非常直接故障域隔离旁挂设备宕机了默认情况下核心交换机只丢失策略路由的下一跳只要你做了合理的健康检查联动或备机接管业务不会全断。改造成本低不用大改现有网络核心交换机上增加一个网段、加几条策略路由就能把设备串进业务流。支持多业务串接一台旁挂设备可以通过不同的策略路由同时处理内网互访、出口访问、服务器区访问等多段流量比物理串联灵活得多。升级维护窗口小要升级版本或调整配置只要把策略路由暂时指向备份设备或直接取消不需要中断现网。当然旁挂也有代价。最大的代价是流量路径变长核心交换机需要同时处理进方向和回方向的引流稍不留神就会形成路由环路或不对称路由。这就是很多人在旁挂场景中踩坑最多的地方后面我会专门讲。1.3 双机热备和旁挂为什么是黄金组合把双机热备和旁挂放在一起恰好互补了彼此的短板。双机热备解决了单点故障问题但串联模式下双机切换时物理链路要跟着切换链路切换涉及的布线、聚合、接口状态非常容易出问题。旁挂模式下业务流量本来就不依赖设备物理链路核心交换机只是把流量引到一个虚拟IP上这个虚拟IP由双机共享主备之间通过VRRP或厂商私有协议自动漂移。你可以这样理解核心交换机根本不需要知道实际干活的是哪台防火墙它只需要把流量交给“虚拟网关地址”。双机热备组内部主备切换时虚拟IP跟着新主机走策略路由的下一跳始终不变。这种解耦让切换动作变得非常干净利落外层网络无感知内部主备角色切换会话保持由热备组同步机制负责。这个组合特别适合以下项目出口统一安全过滤想给防火墙做冗余但不想改变现有核心路由。上网行为管理、流控设备旁路审计业务中断容忍度低。等保改造中对审计和防护设备有高可用要求但预算和机房空间有限。已有单台旁挂设备在跑希望在不中断业务的情况下补一台形成热备。2. 组网规划与关键参数设计2.1 典型拓扑和物理接口规划部署前先画一张拓扑把每根线、每个IP、每个VLAN都定清楚比急着敲命令重要得多。旁挂双机热备的典型组网大概是这样的两台核心交换机彼此之间通过堆叠或二层互联组成双核心业务网段分别接入两台核心。两台防火墙FW-A和FW-B分别通过一条二层链路接到两台核心交换机上或者同时接到同一个核心的同一个互联VLAN下。这个细节取决于你的核心是单核心还是双核心我建议按最小化改动原则来规划单核心交换机场景两台防火墙的业务口分别接到核心交换机两个不同的物理口划到同一个互联VLAN接口IP分别配置成同网段再挂一个虚拟IP作为策略路由下一跳。双核心交换机场景FW-A接到核心AFW-B接到核心B两边互联VLAN做二层打通虚拟IP由两台防火墙组成VRRP组承载确保核心A和核心B都能把流量送到这个虚拟IP。心跳口必须用独立物理口不能和业务口复用更不能通过交换机转接。原因很简单心跳链路本身是判断主备状态的生命线如果它和业务链路走同一台交换机万一交换机整机故障心跳和业务一起断主备设备之间无法通信极容易发生双主脑裂。心跳直连是底线一根网线两台设备对口直插不经过任何中间设备。2.2 IP地址规划设计地址规划沿用一套我反复用的模板清晰也好记。假设业务网段为192.168.10.0/24服务器区为192.168.20.0/24防火墙只做安全过滤不做NAT网关。核心交换机与防火墙互联用一个独立网段避免和业务地址混在一起设备接口IP地址用途FW-A业务口G1/0/110.10.0.1/30上联核心交换机AFW-B业务口G1/0/110.10.0.2/30上联核心交换机B虚拟IP业务口VRRP组10.10.0.3/30核心交换机策略路由下一跳FW-A心跳口G1/0/2172.16.255.1/30直连FW-BFW-B心跳口G1/0/2172.16.255.2/30直连FW-AFW-A管理口MGT192.168.1.11/24管理网段FW-B管理口MGT192.168.1.12/24管理网段心跳地址建议单独规划一个网段不要和业务、管理地址混用也不要照抄文档里的公网或保留地址否则多套项目混在一起管理时会想骂人。虚拟IP必须和两台设备业务口IP在同一子网这样核心交换机直接把策略路由下一跳指向虚拟IP即可主备切换时无需修改任何核心配置。2.3 引流与回程路径设计旁挂方案的命门在路由策略。核心交换机上出方向的默认路由是把内网流量转给出口路由器的。现在加了旁挂防火墙你得决定哪些流量要经过防火墙检查这就是策略路由的活。常见的引流方式有两种基于源地址引流把需要审计过滤的源网段定义为一个ACL匹配后下一跳指向防火墙虚拟IP。这种方式适合内网网段比较集中、策略明确的场景。基于目的地址引流把需要访问的服务器区、外网目的地址段写入ACL匹配后引入防火墙。适合做单向访问控制比如只对访问服务器区的流量做深度检查。我一般建议把源和目的都放在ACL里控制粒度越清晰越好。比如“源192.168.10.0/24、目的192.168.20.0/24”的流量引入防火墙其余流量正常转发。回程方向同样要配策略路由否则内网访问服务器时请求经过防火墙检查服务器回包却不经过防火墙防火墙只能看到单向流量既无法正确审计也可能因为状态检测机制直接丢弃回包或者出现路由环路。回程引流的原则是对称从哪条路径来回哪条路径去。这里必须提醒一句切勿把防火墙自身的回程流量也引入防火墙自己的虚拟IP否则会形成递归路由轻则日志刷屏重则直接环路宕机。正确做法是把防火墙互联网段设置为策略路由的排除项保证设备自身管理流量不受PBR影响。3. 双机热备旁挂配置全流程3.1 防火墙基础配置下面以主流厂商的防火墙产品线为例说明配置过程命令风格和产品线有差异但每个环节的原理通用。先把两台防火墙的基础参数设置好主机名、管理IP、时区、NTP、接口IP和区域划分。# FW-A 基础配置 sysname FW-A clock timezone Beijing add 08:00:00 ntp-service enable interface GigabitEthernet1/0/0 description To-Core-SW-A ip address 10.10.0.1 255.255.255.252 interface GigabitEthernet1/0/2 description Heartbeat-To-FW-B ip address 172.16.255.1 255.255.255.252 interface M-GigabitEthernet0/0/0 ip address 192.168.1.11 255.255.255.0 # FW-B 基础配置 sysname FW-B clock timezone Beijing add 08:00:00 ntp-service enable interface GigabitEthernet1/0/0 description To-Core-SW-B ip address 10.10.0.2 255.255.255.252 interface GigabitEthernet1/0/2 description Heartbeat-To-FW-A ip address 172.16.255.2 255.255.255.252 interface M-GigabitEthernet0/0/0 ip address 192.168.1.12 255.255.255.0注意业务口暂时不要急着配VRRP先把接口和区域建好。安全区域划分上连接核心交换机的业务口通常划入“Trust”或“Untrust”具体看你的区域规划思路。如果防火墙还要衔接出口路由器流量还要单独划一个区域给出口方向。区域划分要跟安全策略统一考虑不要图省事把所有口都放同一个区域那等于白装防火墙。3.2 开启热备协议并绑定心跳口基础配置完成后开始配置双机热备。绝大多数商用防火墙都用私有热备协议原理都是通过心跳口同步状态用优先级决定主备检测通过心跳和业务口状态综合判断。参考配置如下# FW-A 上开启热备设置为主设备 hrp enable hrp interface GigabitEthernet1/0/2 remote 172.16.255.2 hrp priority 110# FW-B 上开启热备设置为备设备 hrp enable hrp interface GigabitEthernet1/0/2 remote 172.16.255.1 hrp priority 100 hrp standby-device配置完成后两台设备会开始通过心跳口协商角色。FW-A优先级110作为主设备FW-B优先级100作为备设备。这里的优先级设计有一个讲究正常情况下主设备承载所有流量所以优先级要明显高一些。切换阈值要留足余量不要让设备因为一次轻微的心跳抖动就来回倒换。热备协议开启后配置同步功能通常默认启用或按产品差异需要手动开启。配置同步的意义是主设备上新增的策略、地址、NAT规则会自动同步到备设备。这样备设备接管时策略也是完整的不用管理员临时补一条策略。前提是确保两台设备的基础软件版本一致否则配置同步很可能失败或者同步出不可预期结果。3.3 配置虚拟IP与业务组双机热备只做主备角色协商还不够要让业务流量在主备之间无缝漂移还得把业务接口纳入热备组并配置虚拟IP。参考思路如下# FW-A 业务口加入热备组并配置虚拟IP interface GigabitEthernet1/0/0 vrrp vrid 1 virtual-ip 10.10.0.3 vrrp vrid 1 priority 110核心交换机上策略路由的下一跳就是10.10.0.3这个地址不会因为主备切换而消失它永远由当前主设备承载。FW-B上同样把业务口加入同一个VRRP组虚拟IP一致优先级低于FW-A。热备组再把会话同步打开确保主设备上每一个新建会话都能实时同步到备设备。虚拟IP配置完成后先在防火墙上验证一下VRRP状态确认当前主设备是FW-A虚拟IP已经绑定成功。此时即使还没有配置任何安全策略两台设备之间的VRRP组也已经能正常协商了。3.4 配置安全策略与基础转发规则双机热备配置好了但没有安全策略的防火墙等于一堵不设岗的墙流量进来后会被默认丢弃。旁挂场景中防火墙通常要放行的流量有两类从核心交换机引过来的业务流量比如内网访问服务器区、内网访问外网。这类流量至少要放行来源到目的方向的会话并匹配会话同步策略。防火墙设备自身的回程流量即防火墙把流量送回核心交换机方向的回包这部分往往由状态检测机制自动识别不需要额外配策略。我建议把策略写得收敛一些只放行实际需要检查和放行的网段不要图省事写any到any。双机热备环境下策略以“源地址、目的地址、服务、时间”四个维度为标准模板统一在主设备上配置配置会自动同步到备设备。每加一条策略后检查一下备设备上有没有同步成功再进入下一步。3.5 核心交换机策略路由配置防火墙侧配置完成后回到核心交换机上做引流。这是旁挂双机的关键动作。以一台常见三层交换机为例思路是先定义ACL匹配需要引入防火墙的流量再配置策略路由指定下一跳为防火墙虚拟IP最后在业务接口上应用策略路由。# 定义需要引入防火墙的ACL acl advanced 3001 rule 5 permit ip source 192.168.10.0 0.0.0.255 destination 192.168.20.0 0.0.0.255 # 配置策略路由 policy-based-route PBR-TO-FW permit node 10 if-match acl 3001 apply next-hop 10.10.0.3 apply track 1这里特别说明一下apply track的作用它和健康检查联动当防火墙虚拟IP不可达或主备全部故障时策略路由自动失效流量按普通路由表走保证业务不中断。这是旁挂模式实现“故障时不阻断业务”的关键一招很多刚接触旁挂的兄弟会漏掉。没有track联动的策略路由即使防火墙全挂了交换机还是会傻傻地把流量丢给一个不可达的下一跳。回程方向同理需要在核心交换机上配置对应的往返策略路由让服务器区访问内网的回包也能对称经过防火墙。两侧策略路由配置完成后向防火墙虚拟IP方向ping测试一次确认三层互通。4. 双机切换测试与业务验证4.1 切换前的必查清单生产设备上做切换测试最怕的不是设备切换失败而是准备不足把测试做成事故。我测试前通常按照下面这个清单过一遍两台防火墙心跳口物理链路是否正常心跳地址能否互通。热备组状态是否稳定主设备、备设备角色是否符合规划。配置同步是否正常备设备上的策略、地址对象、NAT规则与主设备一致。核心交换机策略路由是否指向虚拟IPtrack联动是否生效。管理终端能同时登录两台防火墙管理口方便切换瞬间查看状态。测试业务网段内准备一台测试终端持续ping服务器或外网地址作为业务连通性参照。如果有一项不满足不要急着测切换先解决前置问题。旁挂双机的切换测试本质上是在验证“热备协议、会话同步、虚拟IP漂移、路由策略、安全策略”五件事是否形成闭环任何一环断了测试结果都不真实。4.2 主备切换演练操作过程准备就绪后按照三个层级逐步测试每个层级都有不同目的。第一层手动切换。在FW-A执行热备组手动切换命令让FW-B接管主角色。观察FW-B的VRRP状态是否变成Master虚拟IP是否漂移到FW-B业务ping是否出现明显中断。正常情况下会话同步做了的话ping的丢包应该控制在个位数大部分业务连接能无缝续跑。第二层故障模拟。比较狠也最真实的做法是直接拔掉FW-A的业务口网线或直接断电。这时候热备协议会检测到链路故障或心跳丢失触发FW-B接管。观察核心交换机上track状态是否变化策略路由是否维持。拔线之前最好在FW-A上持续跑一条ping然后记录从故障发生到业务恢复的时长一般商用防火墙能做到两三秒以内。第三层恢复性切换。把FW-A重新接回网络或恢复供电观察热备组是否自动或手动重新夺回主角色。这里要特别留意优先级配置如果FW-A优先级更高它会抢占回主角色如果配置了非抢占模式它恢复后则继续做备机。两种模式都有适用场景我建议默认使用非抢占或者延迟抢占避免FW-A恢复瞬间网络震荡一次。4.3 长会话保持验证切换测试除了看ping通不通还要验证长会话业务的连续性。比如一条SSH连接、一条数据库连接、一个视频流跨主备切换后不断线才算真正合格。测试方法是在主设备上登录一台远端服务器建立一个SSH会话然后做一次主备切换看SSH窗口是否卡死。正常情况会话同步做得好SSH只会略有卡顿然后恢复如果会话没有同步SSH会直接断掉需要重新登录。这一步能直接检验会话同步表项是否完整同步。会话同步不是把主设备的所有流表同步过去就完了还涉及老化时间、TCP状态机、NAT会话等多个层面的同步。现实中同一厂商设备之间同步一般没问题但如果你发现ping没丢包而TCP会话断了十有八九是会话同步只同步了首包没有同步状态或者某些流量被策略排除没有进入同步范围。5. 常见故障与排错技巧5.1 高频问题速查表双机热备旁挂上线半年内容易冒出来的问题基本就那么几类我整理成一个速查表现象可能原因排查方法主备切换后业务全断会话同步未开启或同步不完整查看热备组会话同步状态对比主备会话表虚拟IP在两台设备都是Master心跳链路中断或热备协议异常出现双主脑裂检查心跳口物理状态、ping心跳地址、查看热备邻居表核心交换机PBR失效业务不走防火墙track联动误判或虚拟IP不可达查看track状态ping虚拟IP检查策略路由命中次数配置已同步但备机不转发备机业务口未加入热备组检查业务接口热备组成员状态切换耗时过长超过10秒健康检测参数设置过大或未开启BFD快速检测调小检测时间间隔启用BFD或快速检测机制防火墙仅看到单方向流量核心交换机回程策略路由没有配置或ACL不对称核对往返ACL规则确保路径对称最让人头疼的双主脑裂建议提前做好防范一是心跳链路做双链路有条件甚至可以使用独立的带外管理网络二是在业务口开启链路状态检测业务口down时自动降低热备优先级主动让位从机制上避免双主。5.2 排错顺序参考碰到切换异常时我一般按下面顺序排查不走大流程第一步查看热备组状态。确认两台设备的角色、心跳状态、配置同步状态。如果热备协议本身都不健康后面全都不用看。第二步检查虚拟IP归属。分别在两台设备上查看虚拟IP是否仅在主设备上生效。第三步检查核心交换机策略路由。确认PBR配置存在、接口正确、命中了预期的流量。第四步检查安全策略。确认防火墙当前主设备上有对应的入方向和出方向策略且策略引用正确。第五步抓包确认双向流量。在防火墙业务口抓包看进出流量是否对称确认是否存在只进不出或只出不进。绝大多数旁挂双机问题都出在第三步和第五步也就是路由不对称和策略缺失。很多时候不是设备有问题而是策略路由的ACL写漏了一段网段导致一部分流量还是走了原始路径一部分流量绕了防火墙两边一碰撞只丢部分包。5.3 几条出过血的避坑笔记这几条都是真金白银换来的经验写在最后给各位同行提个醒。第一心跳线永远是第一优先保障的物理链路。之前有个项目因为机柜理线麻烦把心跳线和业务线一起插在同一个交换机上当时觉得省事。结果后来那台交换机一块板卡故障心跳和业务一起瞬断两台防火墙同时认为对方不可达双双升主全网流量被策略路由指向虚拟IP但两台设备都是主角色VRRP冲突导致业务大面积中断。从那以后心跳线不仅直连机房里还要单独贴上标签任何人动线之前必须确认。第二配置同步不是银弹。热备配置同步能同步策略、地址对象、NAT规则但有些产品不会同步接口状态、路由协议和个别全局参数。备设备接管时如果动态路由没同步或路由优先级有问题它虽然成了主但没有相关路由流量一样转发不出去。所以上线前一定要做一次完整的备设备接管演练把着眼点放在“备设备接管后路由表是否完整”上。第三策略路由的track检测目标不要只盯着虚拟IP。虚拟IP本质上就是防火墙的一个接口地址只要设备活着ping它永远是通的。真正需要探测的是业务转发能力比如探测防火墙身后的出口路由器地址或远端业务地址。这样当出口链路故障或上级路由不可达时track也能正确判断让PBR失效业务流量走原始路径逃生。第四防火墙自身的管理流量一定要排除在策略路由之外。有次配置完PBR后管理端远程登录防火墙结果包转了一圈又回到防火墙自身日志疯狂显示环路告警管理面几乎卡死。后来在ACL里显式deny掉互联网段和管理网段问题才消停。这个坑几乎每个做旁挂项目的都会踩一次提前写进配置模板里最省心。最后再说一点个人体会。双机热备旁挂这套方案配置本身不难难的是对整个流量路径的全局理解。你真正要掌握的不是某几行命令而是从“核心交换机策略路由—防火墙虚拟IP—防火墙安全策略—回程路径—track联动”这一整条链路的逻辑闭环。做项目时多花半天时间画好拓扑、写清地址、标好路由方向后面调试和排错能省下好几天的折腾。希望这篇实操笔记能帮你少走一段弯路。