実施環境: Splunk Free 8.2.2
0. 概要
IP アドレスの表記で、以下のようなものを見たことがある人は多いと思います。
198.1.32.0/28
細かい説明は省きますが、これは CIDR (サイダー)表記といい、 IP アドレスの範囲を記述する表記法の1種です。
Splunk の検索では、この CIDR 表記での条件指定も使用できます。
1. search コマンドの場合
search コマンドでは、特別なオプションなどなしに CIDR 表記での検索が可能です。
CIDR 表記を記載した文字列をイコール(=)で指定すれば、 CIDR 表記で検索できます。
Splunk
| makeresults count=10
| streamstats count AS CNT
| eval IPV4 = "10.20.30." . CNT
| search IPV4 = "10.20.30.4/30"
IPv4 アドレスだけでなく、 IPv6 アドレスにも対応しています。
Splunk
| makeresults count=10
| streamstats count AS CNT
| eval IPV6 = "2022::" . CNT
| search IPV6 = "2022::4/126"
この search コマンドは SPL 文の先頭で省略して使用されることがほとんどです。
無論、コマンドが省略されている場合でも CIDR 表記での検索は可能です。
Splunk
index="_internal" ip_address="127.0.0.0/24"
| table ip_address
2. where コマンドの場合
eval コマンドや where コマンドでは、 cidrmatch という評価関数を使用することで CIDR 表記が扱えます。
引数は以下の通りです。
cidrmatch( CIDR 表記の IP アドレス範囲, IP アドレス )
Splunk
| makeresults count=10
| streamstats count AS CNT
| eval IPV4 = "10.20.30." . CNT
| where cidrmatch("10.20.30.4/30", IPV4)
こちらも IPv4 アドレスだけでなく、 IPv6 アドレスにも対応しています。
Splunk
| makeresults count=10
| streamstats count AS CNT
| eval IPV6 = "2020::" . CNT
| where cidrmatch("2020::1/127", IPV6)