温馨提示×

Linux防火墙怎样实现高可用性

小樊
34
2025-12-28 04:51:00
栏目: 智能运维

Linux防火墙高可用实现指南

一、总体思路与架构选择

  • 采用主备(Active/Standby)双机,通过虚拟IP(VIP)对外提供一致的访问地址,结合心跳/健康检测服务接管实现故障切换。
  • 数据面与控制面分离:数据面运行iptables/nftables转发与策略;控制面运行Keepalived/Heartbeat做主机存活与健康检查、VIP漂移与资源启停。
  • 状态一致性是关键:对有状态防火墙,尽量使用支持状态同步的方案(如 conntrackd)或在**对称部署(both-active,共享介质)**下让备用节点同样转发以维护一致状态,从而减少切换时的连接中断。

二、方案对比与适用场景

方案 核心组件 切换机制 状态处理 优点 注意点
Keepalived + VIP Keepalived/VRRP 基于VRRP通告的VIP漂移 默认不自动同步连接状态;可配合conntrackd 实现简单、业界通用、对应用透明 需放行VRRP组播与健康检查端口;非对称部署会有短暂停顿
Heartbeat v1/v2 + CRM Heartbeat 资源脚本与IP接管 通过脚本启停服务,需自研状态同步 灵活可编排、可管控任意服务 配置较繁琐,需自维护资源脚本与监控逻辑
对称部署(both-active) 双活防火墙 + 同步 无主备切换,天然无中断 两节点均转发,状态天然一致 切换时间为0,会话无感 需共享介质或复杂状态同步;设计与运维复杂度高

说明:Keepalived/VRRP 与 Heartbeat 都是成熟的 Linux 高可用组件;对称部署适合对会话连续性要求极高的场景,但代价是架构与运维复杂度更高。

三、落地步骤与关键配置

  • 步骤1 基础网络与规则基线

    • 双机规划:两块业务网口(如eth0/eth1),心跳/管理网口(如eth2);规划VIP与节点实IP。
    • 规则基线:采用最小化开放默认拒绝策略;示例(iptables):
      • 允许管理:iptables -A INPUT -p tcp --dport 22 -j ACCEPT
      • 允许已建立连接:iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
      • 默认拒绝:iptables -P INPUT DROP
    • 规则持久化:CentOS/RHEL 使用iptables-services;Ubuntu 使用netfilter-persistent保存与恢复规则。
  • 步骤2 部署 Keepalived(主备 + VIP)

    • 安装与启用:yum/apt 安装 keepalived;启用服务自启。
    • 关键配置示例(/etc/keepalived/keepalived.conf,节选):
      • 全局与实例:
        • vrrp_instance VI_1 { state MASTER; interface eth0; virtual_router_id 51; priority 100; advert_int 1; unicast_src_ip 10.0.0.11; unicast_peer { 10.0.0.12 }
        • virtual_ipaddress { 10.0.0.10/24 dev eth0 label eth0:0 }
        • track_script { chk_firewall }
      • 健康检查脚本(确保防火墙服务与转发就绪):
        • vrrp_script chk_firewall { script “/usr/local/bin/chk_fw.sh”; interval 2; fall 2; rise 2; }
    • 防火墙放行(两台均放通):
      • VRRP组播:iptables -I INPUT -d 224.0.0.18 -j ACCEPT
      • VRRP协议:iptables -I INPUT -p vrrp -j ACCEPT
      • 健康检查端口(示例脚本用 TCP 8080):iptables -I INPUT -p tcp --dport 8080 -j ACCEPT
    • 要点:state/priority 决定主备;advert_int 控制通告间隔;unicast 可替代组播提升稳定性;脚本返回 0 表示健康。
  • 步骤3 部署 Heartbeat v1/v2(资源接管 + IP 漂移)

    • 安装后在**/etc/ha.d**放置并编辑:ha.cf、haresources、authkeys
    • 关键参数(示例):
      • ha.cf:keepalive 1;deadtime 10;initdead 60;udpport 694;node linux1、node linux2
      • haresources:linux1 10.0.0.10 HA_firewall(将 VIP 与防火墙服务纳入资源)
      • authkeys:auth 1;1 md5 <YOUR_KEY>;权限设为 600
    • 资源脚本:将防火墙启停脚本(如**/etc/init.d/HA_firewall或软链到/etc/ha.d/resource.d/**)纳入集群管理,实现启动/停止/状态检查。
  • 步骤4 有状态防火墙的状态一致性

    • 非对称主备(Active/Standby):默认不会自动同步 conntrack 状态,切换会导致现有 TCP/UDP 会话中断;可通过conntrackd在主机间同步连接状态,显著降低中断窗口。
    • 对称部署(both-active):两节点均转发,状态天然一致,切换时间为0,但对网络拓扑、策略对称性与运维能力要求更高。

四、验证与运维要点

  • 切换演练:手动停止主节点 keepalived/heartbeat 或断其业务/心跳链路,验证VIP漂移业务连通性日志无异常
  • 规则一致性:使用iptables-save/restorenft list ruleset对比两节点规则;变更采用版本化与自动化测试流程,避免“漂移后策略不一致”。
  • 监控与告警:对VIP绑定状态节点存活规则命中连接数丢包建立监控与阈值告警,结合日志(如 ulogd2/rsyslog)做审计与回溯。

0