単一の式で/ 16 IPアドレス範囲を書き込むには?

単一の式で/ 16 IPアドレス範囲を書き込むには?

nginxでは、次の範囲の中国のIPアドレスを禁止したいと思います。

 '223.64.0.0 - 223.117.255.255'

各範囲を抑制する方法を知っています/16。たとえば、次のようになります。

deny 223.64.0.0/16;

ただし、範囲223.64 - 223.117全体を含めるには多くの行が必要です。これを一行で行う略式表記法はありますか?

ベストアンサー1

IP計算ipcalcDebianのパッケージ)が役に立つかもしれません解重合範囲を複数の一致に分割する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

同じ他のipcalcipcalc-ngDebianのパッケージとコマンド名):

$ 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;

おすすめ記事