次の方法で共有


ipv6_is_match()

適用対象: ✅Microsoft FabricAzure データ エクスプローラーAzure MonitorMicrosoft Sentinel

2 つの IPv6 または IPv4 ネットワーク アドレス文字列を照合します。 2 つの IPv6/IPv4 文字列は、引数のプレフィックスと省略可能な prefix 引数から計算された複合 IP プレフィックス マスクを考慮しながら解析され、比較されます。

Note

関数は、IPv6 と IPv4 の両方のネットワーク アドレスを表す引数を受け入れて比較できます。 呼び出し元が引数が IPv4 形式であることを認識している場合は、 ipv4_is_compare () 関数を使用します。 この関数を実行すると、実行時のパフォーマンスが向上します。

構文

ipv6_is_match(ip1,ip2[ ,prefix])

構文規則について詳しく知る。

パラメーター

件名 タイプ Required 説明
ip1ip2 string ✔️ IPv6 または IPv4 アドレスを表す式。 IPv6 および IPv4 文字列は IP プレフィックス表記を使用してマスクできます。
prefix int 考慮される最上位ビットの数を表す 0 ~ 128 の整数。

IP - プレフィックスの表記

IP プレフィックス表記 (CIDR 表記とも呼ばれます) は、IP アドレスとそれに関連付けられているネットワーク マスクを表す簡潔な方法です。 形式は <base IP>/<prefix length>で、プレフィックスの長さはネットマスク内の先頭の 1 ビットの数です。 プレフィックスの長さは、ネットワークに属する IP アドレスの範囲を決定します。

IPv4 の場合、プレフィックスの長さは 0 から 32 までの数値です。 したがって、表記 192.168.2.0/24 は、255.255.255.0 のネットマスクを持つ IP アドレス 192.168.2.0 を表します。 このネットマスクには、先頭に 1 ビットが 24 個、プレフィックスの長さが 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 ビット、プレフィックス長は 120 です。

返品

  • true: 最初の IPv6/IPv4 文字列引数の長文表現が 2 番目の IPv6/IPv4 文字列引数と等しい場合。
  • false: それ以外の場合。
  • null: IPv6/IPv4 文字列のいずれかの変換が成功しなかった場合。

Ipv6/IPv4 等値比較のケース - IPv6/IPv4 文字列内で指定された IP プレフィックス表記

datatable(ip1_string:string, ip2_string:string)
[
 // IPv4 are compared as IPv6 addresses
 '192.168.1.1',    '192.168.1.1',       // Equal IPs
 '192.168.1.1/24', '192.168.1.255',     // 24 bit IP4-prefix is used for comparison
 '192.168.1.1',    '192.168.1.255/24',  // 24 bit IP4-prefix is used for comparison
 '192.168.1.1/30', '192.168.1.255/24',  // 24 bit IP4-prefix is used for comparison
  // IPv6 cases
 'fe80::85d:e82c:9446:7994', 'fe80::85d:e82c:9446:7994',         // Equal IPs
 'fe80::85d:e82c:9446:7994/120', 'fe80::85d:e82c:9446:7998',     // 120 bit IP6-prefix is used for comparison
 'fe80::85d:e82c:9446:7994', 'fe80::85d:e82c:9446:7998/120',     // 120 bit IP6-prefix is used for comparison
 'fe80::85d:e82c:9446:7994/120', 'fe80::85d:e82c:9446:7998/120', // 120 bit IP6-prefix is used for comparison
 // Mixed case of IPv4 and IPv6
 '192.168.1.1',      '::ffff:c0a8:0101', // Equal IPs
 '192.168.1.1/24',   '::ffff:c0a8:01ff', // 24 bit IP-prefix is used for comparison
 '::ffff:c0a8:0101', '192.168.1.255/24', // 24 bit IP-prefix is used for comparison
 '::192.168.1.1/30', '192.168.1.255/24', // 24 bit IP-prefix is used for comparison
]
| extend result = ipv6_is_match(ip1_string, ip2_string)

出力

ip1_string ip2_string 結果
192.168.1.1 192.168.1.1 1
192.168.1.1/24 192.168.1.255 1
192.168.1.1 192.168.1.255/24 1
192.168.1.1/30 192.168.1.255/24 1
fe80::85d:e82c:9446:7994 fe80::85d:e82c:9446:7994 1
fe80::85d:e82c:9446:7994/120 fe80::85d:e82c:9446:7998 1
fe80::85d:e82c:9446:7994 fe80::85d:e82c:9446:7998/120 1
fe80::85d:e82c:9446:7994/120 fe80::85d:e82c:9446:7998/120 1
192.168.1.1 ::ffff:c0a8:0101 1
192.168.1.1/24 ::ffff:c0a8:01ff 1
::ffff:c0a8:0101 192.168.1.255/24 1
::192.168.1.1/30 192.168.1.255/24 1

IPv6/IPv4 等価比較のケース - IPv6/IPv4 文字列内で指定された IP プレフィックス表記と、ipv6_is_match() 関数の追加引数を使用

datatable(ip1_string:string, ip2_string:string, prefix:long)
[
 // IPv4 are compared as IPv6 addresses 
 '192.168.1.1',    '192.168.1.0',   31, // 31 bit IP4-prefix is used for comparison
 '192.168.1.1/24', '192.168.1.255', 31, // 24 bit IP4-prefix is used for comparison
 '192.168.1.1',    '192.168.1.255', 24, // 24 bit IP4-prefix is used for comparison
   // IPv6 cases
 'fe80::85d:e82c:9446:7994', 'fe80::85d:e82c:9446:7995',     127, // 127 bit IP6-prefix is used for comparison
 'fe80::85d:e82c:9446:7994/127', 'fe80::85d:e82c:9446:7998', 120, // 120 bit IP6-prefix is used for comparison
 'fe80::85d:e82c:9446:7994/120', 'fe80::85d:e82c:9446:7998', 127, // 120 bit IP6-prefix is used for comparison
 // Mixed case of IPv4 and IPv6
 '192.168.1.1/24',   '::ffff:c0a8:01ff', 127, // 127 bit IP6-prefix is used for comparison
 '::ffff:c0a8:0101', '192.168.1.255',    120, // 120 bit IP6-prefix is used for comparison
 '::192.168.1.1/30', '192.168.1.255/24', 127, // 120 bit IP6-prefix is used for comparison
]
| extend result = ipv6_is_match(ip1_string, ip2_string, prefix)

出力

ip1_string ip2_string prefix 結果
192.168.1.1 192.168.1.0 31 1
192.168.1.1/24 192.168.1.255 31 1
192.168.1.1 192.168.1.255 24 1
fe80::85d:e82c:9446:7994 fe80::85d:e82c:9446:7995 127 1
fe80::85d:e82c:9446:7994/127 fe80::85d:e82c:9446:7998 120 1
fe80::85d:e82c:9446:7994/120 fe80::85d:e82c:9446:7998 127 1
192.168.1.1/24 ::ffff:c0a8:01ff 127 1
::ffff:c0a8:0101 192.168.1.255 120 1
::192.168.1.1/30 192.168.1.255/24 127 1