ipv4_is_in_any_range()

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

语法

ipv4_is_in_any_range(Ipv4Address,Ipv4Range [ ,Ipv4Range ...] )

ipv4_is_in_any_range(Ipv4Address,Ipv4Ranges)

详细了解语法约定

参数

客户 类型​​ 必需 说明
Ipv4Address string 一个表示 IPv4 地址的表达式。
Ipv4Range string 使用 IP 前缀表示法编写的一个 IPv4 范围或 IPv4 范围列表。
Ipv4Ranges dynamic 一个包含使用 IP 前缀表示法编写的 IPv4 范围的动态数组。

注意

需要一个或多个 IPv4Range 字符串或 IPv4Ranges 动态数组。

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:IPv4 地址是否在任何指定的 IPv4 网络的范围中。
  • false:其他情况。
  • null:如果两个 IPv4 字符串之一转换不成功。

示例

使用字符串列表时的语法

print Result=ipv4_is_in_any_range('192.168.1.6', '192.168.1.1/24', '10.0.0.1/8', '127.1.0.1/16')

输出

结果

使用动态数组时的语法

print Result=ipv4_is_in_any_range("127.0.0.1", dynamic(["127.0.0.1", "192.168.1.1"]))

输出

结果

使用 IPv4 范围检查扩展表

let LocalNetworks=dynamic([
    "192.168.1.1/16",
    "127.0.0.1/8",
    "10.0.0.1/8"
]);
let IPs=datatable(IP:string) [
    "10.1.2.3",
    "192.168.1.5",
    "123.1.11.21",
    "1.1.1.1"
];
IPs
| extend IsLocal=ipv4_is_in_any_range(IP, LocalNetworks)

输出

IP IsLocal
10.1.2.3
192.168.1.5
123.1.11.21 false
1.1.1.1 false