Partager via


ipv6_is_match()

S’applique à : ✅Microsoft Fabric✅Azure Data ExplorerAzure MonitorMicrosoft Sentinel

Correspond à deux chaînes d’adresses réseau IPv6 ou IPv4. Les deux chaînes IPv6/IPv4 sont analysées et comparées tout en tenant compte du masque combiné de préfixe IP calculé à partir des préfixes d’argument et de l’argument facultatif prefix .

Remarque

La fonction peut accepter et comparer des arguments représentant les adresses réseau IPv6 et IPv4. Si l’appelant sait que les arguments sont au format IPv4, utilisez la fonction ipv4_is_match(). Cette fonction entraîne de meilleures performances d’exécution.

Syntaxe

ipv6_is_match(préfixe ip1,ip2[ ,])

En savoir plus sur les conventions de syntaxe.

Paramètres

Nom Type Requise Description
ip1, ip2 string ✔️ Expression représentant une adresse IPv6 ou IPv4. Les chaînes IPv6 et IPv4 peuvent être masquées à l’aide de la notation de préfixe IP.
prefix int Entier compris entre 0 et 128 représentant le nombre de bits les plus significatifs pris en compte.

Notation de préfixe IP

La notation de préfixe IP (également appelée notation CIDR) est un moyen concis de représenter une adresse IP et son masque réseau associé. Le format est <base IP>/<prefix length>, où la longueur du préfixe est le nombre de 1 bits de début dans le masque net. La longueur du préfixe détermine la plage d’adresses IP qui appartiennent au réseau.

Pour IPv4, la longueur du préfixe est un nombre compris entre 0 et 32. Ainsi, la notation 192.168.2.0/24 représente l’adresse IP 192.168.2.0 avec un masque netmask de 255.255.255.255.0. Ce masque net a 24 bits de début 1 ou une longueur de préfixe de 24.

Pour IPv6, la longueur du préfixe est un nombre compris entre 0 et 128. Ainsi, la notation fe80 ::85d :e82c :9446:7994/120 représente l’adresse IP fe80 ::85d :e82c :9446:7994 avec un masque net de ffff :ffff :ffff :ffff :ffff :ff00. Ce masque net a 120 bits de début 1 ou une longueur de préfixe de 120.

Retours

  • true: si la représentation longue du premier argument de chaîne IPv6/IPv4 est égale au deuxième argument de chaîne IPv6/IPv4.
  • false:Autrement.
  • null: Si la conversion pour l’une des deux chaînes IPv6/IPv4 n’a pas réussi.

Exemples

Cas d’égalité de comparaison IPv6/IPv4 : notation de préfixe IP spécifiée à l’intérieur des chaînes IPv6/IPv4

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)

Sortie

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

Cas d’égalité de comparaison IPv6/IPv4 : notation de préfixe IP spécifiée à l’intérieur des chaînes IPv6/IPv4 et comme argument supplémentaire de la ipv6_is_match() fonction

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)

Sortie

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