第 15 章 在 nftables 命令中使用判决映射


判决映射(也称为字典),使 nft 能够通过将匹配条件映射到某个操作来根据数据包信息执行操作。

15.1. 在 nftables 中使用匿名映射

匿名映射是直接在规则中使用的 { match_criteria : action } 语句。这个语句可以包含多个用逗号分开的映射。

匿名映射的缺点是,如果要修改映射,则必须替换规则。对于动态解决方案,请使用命名映射,如 在 nftables 中使用命名映射 中所述。

例如,您可以使用匿名映射将 IPv4 和 IPv6 协议的 TCP 和 UDP 数据包路由到不同的链,以分别计算传入的 TCP 和 UDP 数据包。

流程

  1. 创建新表:

    # nft add table inet example_table
    Copy to Clipboard Toggle word wrap
  2. example_table 中创建 tcp_packets 链:

    # nft add chain inet example_table tcp_packets
    Copy to Clipboard Toggle word wrap
  3. 向统计此链中流量的 tcp_packets 中添加一条规则:

    # nft add rule inet example_table tcp_packets counter
    Copy to Clipboard Toggle word wrap
  4. example_table 中创建 udp_packets

    # nft add chain inet example_table udp_packets
    Copy to Clipboard Toggle word wrap
  5. 向统计此链中流量的 udp_packets 中添加一条规则:

    # nft add rule inet example_table udp_packets counter
    Copy to Clipboard Toggle word wrap
  6. 为传入的流量创建一个链。例如,要在过滤传入的流量的 example_table 中创建一个名为 incoming_traffic 的链:

    # nft add chain inet example_table incoming_traffic { type filter hook input priority 0 \; }
    Copy to Clipboard Toggle word wrap
  7. 添加一条带有到 incoming_traffic 匿名映射的规则 :

    # nft add rule inet example_table incoming_traffic ip protocol vmap { tcp : jump tcp_packets, udp : jump udp_packets }
    Copy to Clipboard Toggle word wrap

    匿名映射区分数据包,并根据它们的协议将它们发送到不同的计数链。

  8. 要列出流量计数器,请显示 example_table

    # nft list table inet example_table
    table inet example_table {
      chain tcp_packets {
        counter packets 36379 bytes 2103816
      }
    
      chain udp_packets {
        counter packets 10 bytes 1559
      }
    
      chain incoming_traffic {
        type filter hook input priority filter; policy accept;
        ip protocol vmap { tcp : jump tcp_packets, udp : jump udp_packets }
      }
    }
    Copy to Clipboard Toggle word wrap

    tcp_packetsudp_packets 链中的计数器显示两者接收的数据包和字节数。

返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

Theme

© 2025 Red Hat