Linux 使用iptables/ipfilter重新加载防火墙规则时的可靠/健壮错误处理方式

Linux 使用iptables/ipfilter重新加载防火墙规则时的可靠/健壮错误处理方式,linux,iptables,Linux,Iptables,我需要一种健壮/可靠/优雅的方式来处理任何错误条件,同时重新加载防火墙规则,一些背景: 我们的服务器使用白名单机制,这意味着如果某些服务器需要与多个不同的目的地通话,那么应该有大量的规则 我们有另一个工具来生成防火墙规则文件,该文件将提供给iptables/ipfilter,极有可能该文件格式不正确 由于防火墙规则编号可能非常庞大,iptables/ipfilter可能无法加载防火墙规则文件,因为我们的一些传统硬件上存在资源限制,例如,在某些情况下,内存可能不足,同时重新加载超过20k的规则 因

我需要一种健壮/可靠/优雅的方式来处理任何错误条件,同时重新加载防火墙规则,一些背景:

  • 我们的服务器使用白名单机制,这意味着如果某些服务器需要与多个不同的目的地通话,那么应该有大量的规则
  • 我们有另一个工具来生成防火墙规则文件,该文件将提供给iptables/ipfilter,极有可能该文件格式不正确
  • 由于防火墙规则编号可能非常庞大,iptables/ipfilter可能无法加载防火墙规则文件,因为我们的一些传统硬件上存在资源限制,例如,在某些情况下,内存可能不足,同时重新加载超过20k的规则 因此,我的问题是:

  • 在实际加载防火墙规则之前,是否有任何现有工具可用于检查其语法

  • 有没有办法使重新加载过程原子化,比如说,它要么成功地重新加载新规则,要么只是保留以前的正常规则集

  • 我们如何确保在给定当前运行环境和规则集的情况下,重新加载一定会成功?或者有没有工具可以让我估计重新加载可能成功/失败

  • 欢迎提出任何建议。提前谢谢。

    这是原子的。我无法证实这一点,但假设这是真的,那么这似乎是一种明智的做法

  • 在测试机器上,刷新所有规则,然后应用生成的规则来验证它们
  • 验证后,用于转储规则集

    [root@testmachine]$ iptables-save > new_rules.iptables
    
  • 使用
    iptables restore-t
    在生产机器上仔细检查规则集:

    [root@production]$ iptables-restore --test < new_rules.iptables
    
    [root@production]$iptables restore——测试
  • 在生产机器上加载新规则集

    [root@production]$ iptables-restore < new_rules.iptables
    
    [root@production]$iptables restore