ipv4_lookup plugin
Plugin-programmet ipv4_lookup
letar upp ett IPv4-värde i en uppslagstabell och returnerar rader med matchade värden. Plugin-programmet anropas med operatorn evaluate
.
Syntax
T|
evaluate
ipv4_lookup(
LookupTable,
SourceIPv4Key,
IPv4LookupKey [,
ExtraKey1 [.. ,
ExtraKeyN [,
return_unmatched ]]] )
Parametrar
Namn | Typ | Obligatorisk | Beskrivning |
---|---|---|---|
T | string |
✔️ | Tabellindata vars kolumn SourceIPv4Key används för IPv4-matchning. |
LookupTable | string |
✔️ | Tabell- eller tabelluttryck med IPv4-uppslagsdata, vars kolumn LookupKey används för matchning av IPv4. IPv4-värden kan maskeras med IP-prefixnotation. |
SourceIPv4Key | string |
✔️ | Kolumnen I T med IPv4-strängen som ska slås upp i LookupTable. IPv4-värden kan maskeras med IP-prefixnotation. |
IPv4LookupKey | string |
✔️ | Kolumnen i LookupTable med IPv4-strängen som matchas mot varje SourceIPv4Key-värde . |
ExtraKey1 .. ExtraKeyN | string |
Ytterligare kolumnreferenser som används för uppslagsmatchningar. join Liknar åtgärden: poster med samma värden betraktas som matchande. Kolumnnamnsreferenser måste finnas både är källtabellen T och LookupTable . |
|
return_unmatched | bool |
En boolesk flagga som definierar om resultatet ska innehålla alla eller endast matchande rader (standard: false – endast matchande rader som returneras). |
IP-prefixnotation
IP-prefixnotation (kallas även CIDR-notation) är ett koncist sätt att representera en IP-adress och dess associerade nätverksmask. Formatet är <base IP>/<prefix length>
, där prefixets längd är antalet inledande 1 bitar i nätmasken. Prefixets längd avgör intervallet med IP-adresser som tillhör nätverket.
För IPv4 är prefixets längd ett tal mellan 0 och 32. Notationen 192.168.2.0/24 representerar alltså IP-adressen 192.168.2.0 med en nätmask på 255.255.255.0. Den här nätmasken har 24 inledande 1 bitar eller en prefixlängd på 24.
För IPv6 är prefixets längd ett tal mellan 0 och 128. Så notationen fe80::85d:e82c:9446:7994/120 representerar IP-adressen fe80::85d:e82c:9446:7994 med en netmask av ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffffff:ffffff:ffffff:ffff:ffffff:ffffff:ffffff:ffffff:ffff00. Den här nätmasken har 120 inledande 1 bitar eller en prefixlängd på 120.
Returer
Plugin-programmet ipv4_lookup
returnerar ett resultat av koppling (uppslag) baserat på IPv4-nyckel. Schemat för tabellen är en union av källtabellen och uppslagstabellen, ungefär som resultatet av operatornlookup
.
Om argumentet return_unmatched är inställt på true
innehåller den resulterande tabellen både matchade och omatchade rader (fyllda med nullvärden).
Om argumentet return_unmatched anges till false
eller utelämnas (standardvärdet false
för används) har den resulterande tabellen lika många poster som matchande resultat. Den här varianten av sökningen har bättre prestanda jämfört med return_unmatched=true
körning.
Anteckning
- Det här plugin-programmet beskriver scenariot med IPv4-baserad koppling, förutsatt att en liten uppslagstabellstorlek (100 000–200 000 rader) har en större storlek.
- Prestanda för plugin-programmet beror på storleken på uppslags- och datakälltabellerna, antalet kolumner och antalet matchande poster.
Exempel
IPv4-sökning – endast matchande rader
// IP lookup table: IP_Data
// Partial data from: https://raw.githubusercontent.com/datasets/geoip2-ipv4/master/data/geoip2-ipv4.csv
let IP_Data = datatable(network:string, continent_code:string ,continent_name:string, country_iso_code:string, country_name:string)
[
"111.68.128.0/17","AS","Asia","JP","Japan",
"5.8.0.0/19","EU","Europe","RU","Russia",
"223.255.254.0/24","AS","Asia","SG","Singapore",
"46.36.200.51/32","OC","Oceania","CK","Cook Islands",
"2.20.183.0/24","EU","Europe","GB","United Kingdom",
];
let IPs = datatable(ip:string)
[
'2.20.183.12', // United Kingdom
'5.8.1.2', // Russia
'192.165.12.17', // Unknown
];
IPs
| evaluate ipv4_lookup(IP_Data, ip, network)
Resultat
Ip | network | continent_code | continent_name | country_iso_code | country_name |
---|---|---|---|---|---|
2.20.183.12 | 2.20.183.0/24 | EU | Europa | GB | Storbritannien |
5.8.1.2 | 5.8.0.0/19 | EU | Europa | RU | Ryssland |
IPv4-sökning – returnerar både matchande och icke matchande rader
// IP lookup table: IP_Data
// Partial data from:
// https://raw.githubusercontent.com/datasets/geoip2-ipv4/master/data/geoip2-ipv4.csv
let IP_Data = datatable(network:string,continent_code:string ,continent_name:string ,country_iso_code:string ,country_name:string )
[
"111.68.128.0/17","AS","Asia","JP","Japan",
"5.8.0.0/19","EU","Europe","RU","Russia",
"223.255.254.0/24","AS","Asia","SG","Singapore",
"46.36.200.51/32","OC","Oceania","CK","Cook Islands",
"2.20.183.0/24","EU","Europe","GB","United Kingdom",
];
let IPs = datatable(ip:string)
[
'2.20.183.12', // United Kingdom
'5.8.1.2', // Russia
'192.165.12.17', // Unknown
];
IPs
| evaluate ipv4_lookup(IP_Data, ip, network, return_unmatched = true)
Resultat
Ip | network | continent_code | continent_name | country_iso_code | country_name |
---|---|---|---|---|---|
2.20.183.12 | 2.20.183.0/24 | EU | Europa | GB | Storbritannien |
5.8.1.2 | 5.8.0.0/19 | EU | Europa | RU | Ryssland |
192.165.12.17 |
IPv4-sökning – med källan i external_data()
let IP_Data = external_data(network:string,geoname_id:long,continent_code:string,continent_name:string ,country_iso_code:string,country_name:string,is_anonymous_proxy:bool,is_satellite_provider:bool)
['https://raw.githubusercontent.com/datasets/geoip2-ipv4/master/data/geoip2-ipv4.csv'];
let IPs = datatable(ip:string)
[
'2.20.183.12', // United Kingdom
'5.8.1.2', // Russia
'192.165.12.17', // Sweden
];
IPs
| evaluate ipv4_lookup(IP_Data, ip, network, return_unmatched = true)
Resultat
Ip | network | geoname_id | continent_code | continent_name | country_iso_code | country_name | is_anonymous_proxy | is_satellite_provider |
---|---|---|---|---|---|---|---|---|
2.20.183.12 | 2.20.183.0/24 | 2635167 | EU | Europa | GB | Storbritannien | 0 | 0 |
5.8.1.2 | 5.8.0.0/19 | 2017370 | EU | Europa | RU | Ryssland | 0 | 0 |
192.165.12.17 | 192.165.8.0/21 | 2661886 | EU | Europa | SE | Sverige | 0 | 0 |
IPv4-sökning – använda extra kolumner för matchning
let IP_Data = external_data(network:string,geoname_id:long,continent_code:string,continent_name:string ,country_iso_code:string,country_name:string,is_anonymous_proxy:bool,is_satellite_provider:bool)
['https://raw.githubusercontent.com/datasets/geoip2-ipv4/master/data/geoip2-ipv4.csv'];
let IPs = datatable(ip:string, continent_name:string, country_iso_code:string)
[
'2.20.183.12', 'Europe', 'GB', // United Kingdom
'5.8.1.2', 'Europe', 'RU', // Russia
'192.165.12.17', 'Europe', '', // Sweden is 'SE' - so it won't be matched
];
IPs
| evaluate ipv4_lookup(IP_Data, ip, network, continent_name, country_iso_code)
Resultat
Ip | continent_name | country_iso_code | network | geoname_id | continent_code | country_name | is_anonymous_proxy | is_satellite_provider |
---|---|---|---|---|---|---|---|---|
2.20.183.12 | Europa | GB | 2.20.183.0/24 | 2635167 | EU | Storbritannien | 0 | 0 |
5.8.1.2 | Europa | RU | 5.8.0.0/19 | 2017370 | EU | Ryssland | 0 | 0 |
Relaterat innehåll
- Översikt över IPv4/IPv6-funktioner
- Översikt över IPv4-textmatchningsfunktioner
Feedback
https://aka.ms/ContentUserFeedback.
Kommer snart: Under hela 2024 kommer vi att fasa ut GitHub-problem som feedbackmekanism för innehåll och ersätta det med ett nytt feedbacksystem. Mer information finns i:Skicka och visa feedback för