nginxでは、次の範囲の中国のIPアドレスを禁止したいと思います。
'223.64.0.0 - 223.117.255.255'
各範囲を抑制する方法を知っています/16
。たとえば、次のようになります。
deny 223.64.0.0/16;
ただし、範囲223.64 - 223.117
全体を含めるには多くの行が必要です。これを一行で行う略式表記法はありますか?
ベストアンサー1
IP計算(ipcalc
Debianのパッケージ)が役に立つかもしれません解重合範囲を複数の一致に分割するCIDRS:
$ 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;