Partilhar via


ipv4_is_in_any_range()

Verifica se o endereço de cadeia IPv4 está em qualquer um dos intervalos de endereços IPv4 especificados.

Syntax

ipv4_is_in_any_range(Endereço Ipv4,Ipv4Range [ ,Ipv4Range ...] )

ipv4_is_in_any_range(Endereço Ipv4,Ipv4Ranges)

Saiba mais sobre as convenções de sintaxe.

Parâmetros

Nome Tipo Necessário Descrição
Endereço Ipv4 string ✔️ Uma expressão que representa um endereço IPv4.
Ipv4Range string ✔️ Um intervalo IPv4 ou uma lista de intervalos IPv4 escritos com notação de prefixo IP.
Ipv4Ranges dynamic ✔️ Uma matriz dinâmica que contém intervalos IPv4 escritos com notação de prefixo IP.

Nota

É necessária uma ou mais cadeias IPv4Range ou uma matriz dinâmica IPv4Ranges .

Notação de prefixo IP

A notação de prefixo IP (também conhecida como notação CIDR) é uma forma concisa de representar um endereço IP e a máscara de rede associada. O formato é <base IP>/<prefix length>, em que o comprimento do prefixo é o número de 1 bits à esquerda na máscara de rede. O comprimento do prefixo determina o intervalo de endereços IP que pertencem à rede.

Para IPv4, o comprimento do prefixo é um número entre 0 e 32. Assim, a notação 192.168.2.0/24 representa o endereço IP 192.168.2.0 com uma máscara de rede de 255.255.255.0. Esta máscara de rede tem 24 bits à esquerda ou um comprimento de prefixo de 24.

Para IPv6, o comprimento do prefixo é um número entre 0 e 128. Assim, a notação fe80::85d:e82c:9446:7994/120 representa o endereço IP fe80::85d:e82c:9446:7994 com um netmask de ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff:ff00. Esta máscara de rede tem 120 bits à esquerda ou um comprimento de prefixo de 120.

Devoluções

  • true: se o endereço IPv4 estiver no intervalo de qualquer uma das redes IPv4 especificadas.
  • false: caso contrário.
  • null: se a conversão para uma das duas cadeias IPv4 não tiver sido bem-sucedida.

Exemplos

Sintaxe com a lista de cadeias

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')

Saída

Resultado
true

Sintaxe com matriz dinâmica

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

Saída

Resultado
true

Expandir tabela com verificação de intervalo 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)

Saída

IP IsLocal
10.1.2.3 true
192.168.1.5 true
123.1.11.21 false
1.1.1.1 false