IP 匹配器 (proto)

警告

此 API 功能目前尚在开发中。标记为“开发中”的 API 功能不被视为稳定,不受 威胁模型 的保护,不受安全团队支持,并且可能会发生重大变更。在了解上述所有要点之前,请勿使用此功能。

.xds.type.matcher.v3.IPMatcher

[.xds.type.matcher.v3.IPMatcher proto]

使用 Trie 将特定 IP 地址与一组可能重叠的子网进行匹配。

{
  "range_matchers": []
}
range_matchers

(repeated .xds.type.matcher.v3.IPMatcher.IPRangeMatcher) 通过 CIDR 范围匹配 IP 地址。

.xds.type.matcher.v3.IPMatcher.IPRangeMatcher

[.xds.type.matcher.v3.IPMatcher.IPRangeMatcher proto]

指定一组 IP 地址范围和匹配操作。

{
  "ranges": [],
  "on_match": {...},
  "exclusive": ...
}
ranges

(repeated .xds.core.v3.CidrRange, REQUIRED) 一组非空的 CIDR 范围。

on_match

(.xds.type.matcher.v3.Matcher.OnMatch) 当 IP 地址位于某个 CIDR 范围中时要应用的匹配操作。

exclusive

(bool) 指示如果存在更具体的匹配器,是否应考虑此匹配选项。当存在更具体的匹配器时,排他性匹配器不会被选中(例如,前缀更长的匹配器),即使更具体的匹配器未能满足其嵌套匹配条件。非排他性匹配器将在更具体的匹配器存在但其嵌套匹配条件不完全匹配的情况下被考虑。非排他性匹配器将首先按其特异性顺序选择(最长前缀优先),然后按声明顺序选择。

例如,考虑两个范围匹配器:一个在 0.0.0.0/0 上的排他性匹配器 X,以及一个在 192.0.0.0/2 上的匹配器 Y,其嵌套匹配条件为 Z。对于输入 IP 192.168.0.1,匹配器 Y 最为具体。如果其嵌套匹配条件 Z 未接受输入,则即使输入位于范围内,不太具体的匹配器 X 也不会应用,因为匹配器 X 是排他性的。

如果匹配器 X 未标记为排他性,则情况相反。在这种情况下,只要匹配器“Y 拒绝输入,匹配器 X 就会始终匹配。