Ip
如何在單個表達式中寫入 /16 個 IP 地址範圍?
我想在nginx中禁止這個範圍的中文IP地址:
'223.64.0.0 - 223.117.255.255'
我知道如何禁止每個
/16
範圍,例如:deny 223.64.0.0/16;
但是要包含整個
223.64 - 223.117
範圍需要很多行。是否有一種簡寫符號可以在一行中執行此操作?
ipcalc(
ipcalc
Debian 上的包)可以幫助您將一個範圍分解為多個匹配的CIDR:$ ipcalc -r 223.64.0.0 - 223.117.255.255 deaggregate 223.64.0.0 - 223.117.255.255 223.64.0.0/11 223.96.0.0/12 223.112.0.0/14 223.116.0.0/15
與其他 ipcalc相同(
ipcalc-ng
Debian 上的包和命令名稱):$ ipcalc-ng -d '223.64.0.0 - 223.117.255.255' [Deaggregated networks] Network: 223.64.0.0/11 Network: 223.96.0.0/12 Network: 223.112.0.0/14 Network: 223.116.0.0/15
那一個有更多的選擇來改變輸出格式:
$ ipcalc-ng --no-decorate -d '223.64.0.0 - 223.117.255.255' 223.64.0.0/11 223.96.0.0/12 223.112.0.0/14 223.116.0.0/15
包括 json 如果與以下工具結合使用,則可以提供無限的重新格式化可能性
jq
:$ ipcalc-ng -j -d '223.64.0.0 - 223.117.255.255' | jq -r '.DEAGGREGATEDNETWORK[]|"deny " + . + ";"' deny 223.64.0.0/11; deny 223.96.0.0/12; deny 223.112.0.0/14; deny 223.116.0.0/15;
$ ipcalc-ng -j -d '223.64.0.0 - 223.117.255.255' | jq -r '"deny " + (.DEAGGREGATEDNETWORK|join(" ")) + ";"' deny 223.64.0.0/11 223.96.0.0/12 223.112.0.0/14 223.116.0.0/15;