ipv6_is_in_any_range()

检查 IPv6 字符串地址是否位于任何指定的 IPv6 地址范围中。

语法

ipv6_is_in_any_range(Ipv6Address,Ipv6Range [ ,Ipv6Range ...] )

ipv6_is_in_any_range(Ipv6Address,Ipv6Ranges)

详细了解语法约定

参数

客户 类型​​ 必需 说明
Ipv6Address string 一个表示 IPv6 地址的表达式。
Ipv6Range string 一个表达式,使用 IP 前缀表示法来表示 IPv6 范围。
Ipv6Ranges dynamic 一个数组,包含使用 IP 前缀表示法表示的 IPv6 范围。

注意

需要一个或多个 IPv6Range 字符串或 IPv6Ranges 动态数组。

IP 前缀表示法

IP 前缀表示法(也称 CIDR 表示法)是表示 IP 地址及其关联网络掩码的简明方式。 格式为 <base IP>/<prefix length>,其中,前缀长度是网络掩码中前导 1 位的数目。 前缀长度决定了属于该网络的 IP 地址范围。

对于 IPv4,前缀长度是介于 0 和 32 之间的数字。 因此,表示法 192.168.2.0/24 表示 IP 地址 192.168.2.0,且网络掩码为 255.255.255.0。 此网络掩码具有 24 个前导 1 位,或者说前缀长度为 24。

对于 IPv6,前缀长度是介于 0 和 128 之间的数字。 因此,表示法 fe80::85d:e82c:9446:7994/120 表示 IP 地址 fe80::85d:e82c:9446:7994 且网络掩码为 ffff:ffff:ffff:ffff:ffff:ffff:ffff:ff00。 此网络掩码具有 120 个前导 1 位,或者说前缀长度为 120。

返回

  • true:IPv6 地址是否在任何指定的 IPv6 网络的范围中。
  • false:其他情况。
  • null:如果两个 IPv6 字符串之一转换不成功。

示例

let LocalNetworks=dynamic([
    "a5e:f127:8a9d:146d:e102:b5d3:c755:f6cd/112",
    "0:0:0:0:0:ffff:c0a8:ac/60"
]);
let IPs=datatable(IP:string) [
    "a5e:f127:8a9d:146d:e102:b5d3:c755:abcd",
    "a5e:f127:8a9d:146d:e102:b5d3:c755:abce",
    "a5e:f127:8a9d:146d:e102:b5d3:c755:abcf",
    "a5e:f127:8a9d:146d:e102:b5d3:c756:abd1",
];
IPs
| extend IsLocal=ipv6_is_in_any_range(IP, LocalNetworks)

输出

IP IsLocal
a5e:f127:8a9d:146d:e102:b5d3:c755:abcd True
a5e:f127:8a9d:146d:e102:b5d3:c755:abce True
a5e:f127:8a9d:146d:e102:b5d3:c755:abcf True
a5e:f127:8a9d:146d:e102:b5d3:c756:abd1 False