14.3. 使用动态集添加来自数据包路径的条目


nftables 框架中的动态设置允许自动添加来自数据包数据的元素。例如,IP 地址、目标端口、MAC 地址等。通过此功能,您可以实时收集这些元素,并使用它们创建拒绝列表、禁止列表等,以便您能够立即响应安全威胁。

先决条件

  • inet 系列中的 example_chain 链和 example_table 表存在。

流程

  1. 创建一个空集。以下示例为 IPv4 地址创建了一个集合:

    • 要创建可存储多个独立 IPv4 地址的集合:

      # nft add set inet example_table example_set { type ipv4_addr \; }
      Copy to Clipboard
    • 要创建可存储 IPv4 地址范围的集合:

      # nft add set inet example_table example_set { type ipv4_addr \; flags interval \; }
      Copy to Clipboard
      重要

      要防止 shell 将分号解释为命令结尾,您必须使用反斜杠转义分号。

  2. 创建一条规则,将传入数据包的源 IPv4 地址添加到 example_set 组中:

    # nft add rule inet example_table example_chain set add ip saddr @example_set
    Copy to Clipboard

    命令在 example_chain 规则链中创建了一个新规则,并使用 example_table 将数据包的源 IPv4 地址动态添加到 example_set 中。

验证

  • 确保添加了规则:

    # nft list ruleset
    ...
    table ip example_table {
    	set example_set {
    		type ipv4_addr
    		elements = { 192.0.2.250, 192.0.2.251 }
    	}
    
    	chain example_chain {
        type filter hook input priority 0
    		add @example_set { ip saddr }
    	}
    }
    Copy to Clipboard

    命令显示 nftables 中当前载入的整个规则集。它显示 IP 正在主动触发规则,并且使用相关地址更新 example_set

后续步骤

有动态 IP 集后,您可以将它用于各种安全性、过滤和流量控制目的。例如:

  • 块、限制或记录网络流量
  • 与允许列表结合使用,以避免禁止可信用户
  • 使用自动超时来防止过度阻塞
返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。 了解我们当前的更新.

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

Theme

© 2025 Red Hat