ipv6_is_match()
Gilt für: ✅Microsoft Fabric✅Azure Data Explorer✅Azure Monitor✅Microsoft Sentinel
Entspricht zwei IPv6- oder IPv4-Netzwerkadressenzeichenfolgen. Die beiden IPv6/IPv4-Zeichenfolgen werden analysiert und verglichen, wobei die kombinierte IP-Präfixmaske anhand von Argumentpräfixen und dem optionalen prefix
Argument berechnet wird.
Hinweis
Die Funktion kann Argumente akzeptieren und vergleichen, die sowohl IPv6- als auch IPv4-Netzwerkadressen darstellen. Wenn der Aufrufer weiß, dass sich Argumente im IPv4-Format befinden, verwenden Sie die Funktion ipv4_is_match() Diese Funktion führt zu einer besseren Laufzeitleistung.
Syntax
ipv6_is_match(
ip1,
ip2-Präfix[ ,
])
Erfahren Sie mehr über Syntaxkonventionen.
Parameter
Name | Type | Erforderlich | Beschreibung |
---|---|---|---|
ip1, ip2 | string |
✔️ | Ein Ausdruck, der eine IPv6- oder IPv4-Adresse darstellt. IPv6- und IPv4-Zeichenfolgen können mithilfe der IP-Präfixnotation maskiert werden. |
Präfix | int |
Eine ganze Zahl zwischen 0 und 128, die die Anzahl der wichtigsten Bits darstellt, die berücksichtigt werden. |
IP-Präfixnotation
Ip-Präfixnotation (auch als CIDR-Notation bezeichnet) ist eine präzise Möglichkeit, eine IP-Adresse und die zugehörige Netzwerkmaske darzustellen. Das Format ist <base IP>/<prefix length>
, wobei die Präfixlänge die Anzahl der führenden 1 Bits in der Netzmaske ist. Die Präfixlänge bestimmt den Bereich der IP-Adressen, die zum Netzwerk gehören.
Bei IPv4 ist die Präfixlänge eine Zahl zwischen 0 und 32. Die Notation 192.168.2.0/24 stellt also die IP-Adresse 192.168.2.0 mit einer Netmask von 255.255.255.255.0 dar. Diese Netmaske hat 24 führende 1 Bit oder eine Präfixlänge von 24.
Bei IPv6 ist die Präfixlänge eine Zahl zwischen 0 und 128. Daher stellt die Notation fe80::85d:e82c:9446:7994/120 die IP-Adresse fe80::85d:e82c:9446:7994 mit einer Netmaske von ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff:ff00 dar. Diese Netmaske hat 120 führende 1 Bit oder eine Präfixlänge von 120.
Gibt zurück
true
: Wenn die lange Darstellung des ersten IPv6/IPv4-Zeichenfolgenarguments dem zweiten IPv6/IPv4-Zeichenfolgenargument entspricht.false
:Sonst.null
: Wenn die Konvertierung für eine der beiden IPv6/IPv4-Zeichenfolgen nicht erfolgreich war.
Beispiele
IPv6/IPv4-Vergleichsgleichgleichfall – IP-Präfixnotation, die in den IPv6/IPv4-Zeichenfolgen angegeben ist
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)
Output
ip1_string | ip2_string | result |
---|---|---|
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-Vergleichsgleichstellung – IP-Präfixnotation innerhalb der IPv6/IPv4-Zeichenfolgen und als zusätzliches Argument der ipv6_is_match()
Funktion
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)
Output
ip1_string | ip2_string | prefix | result |
---|---|---|---|
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 |