如何通过Nftables Concat特性在Linux上一条规则内快速匹配源IP、目的端口及传输协议?

2026-05-20 13:320阅读0评论SEO教程
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计564个文字,预计阅读时间需要3分钟。

如何通过Nftables Concat特性在Linux上一条规则内快速匹配源IP、目的端口及传输协议?

直接使用 nftables 的 concat 特性,可以将源 IP、目标 IP 等信息连接起来,形成复合规则。例如,以下规则将源 IP 和目标 IP 进行拼接:

构造支持三字段拼接的映射表

先建一个类型为 ipv4_addr . inet_service . inet_protocol 的映射,注意字段顺序和类型必须严格对应:

  • ipv4_addr 对应 ip saddr(4 字节)
  • inet_service 对应 tcp dportudp dport(2 字节)
  • inet_protocol 对应 ip protocol(1 字节),值为 6(TCP)或 17(UDP)

执行命令创建映射:

nft add map inet filter ipportproto_map { type ipv4_addr . inet_service . inet_protocol : verdict; }

插入带协议区分的复合规则

同一个端口(比如 8080)对 TCP 和 UDP 可以定义不同动作。

阅读全文
标签:Linux端口

本文共计564个文字,预计阅读时间需要3分钟。

如何通过Nftables Concat特性在Linux上一条规则内快速匹配源IP、目的端口及传输协议?

直接使用 nftables 的 concat 特性,可以将源 IP、目标 IP 等信息连接起来,形成复合规则。例如,以下规则将源 IP 和目标 IP 进行拼接:

构造支持三字段拼接的映射表

先建一个类型为 ipv4_addr . inet_service . inet_protocol 的映射,注意字段顺序和类型必须严格对应:

  • ipv4_addr 对应 ip saddr(4 字节)
  • inet_service 对应 tcp dportudp dport(2 字节)
  • inet_protocol 对应 ip protocol(1 字节),值为 6(TCP)或 17(UDP)

执行命令创建映射:

nft add map inet filter ipportproto_map { type ipv4_addr . inet_service . inet_protocol : verdict; }

插入带协议区分的复合规则

同一个端口(比如 8080)对 TCP 和 UDP 可以定义不同动作。

阅读全文
标签:Linux端口