私はIPSetを使って何万ものIPv4 CIDR /ネットマスク範囲を管理していましたが、それらはその後IPTablesルールにリンクされます。この設定はうまく機能していますが、IPSetがクライアントのレポート目的で機能するIPホストアドレスの概要を正確に把握したいと思います。
IPSetエントリのフォーマットは一貫して次のようになっています。
123.456.0.0/16 timeout 86400
だから私は持っている行にgrepすることができます timeout
エントリに含まれるCIDR /ネットマスク範囲に基づいて動作する値を取得します。
たとえば、IPSetの出力を(次のようにして)保存したとします。 ipset -L -n > ipset-20181228.txt
)というテキストファイルに ipset-20181228.txt
そして、の組み合わせを実行します grep
そして wc -l
このような:
grep "timeout" ipset-20181228.txt | wc -l
39,000以上のCIDR /ネットマスクの範囲に相当する39,000以上の項目があります。しかし、それは(もちろん)CIDR /ネットマスクの範囲を数えるだけで、その範囲のIPホストアドレスの全数を数えることはできません。
使用しようとしました prips
grepを使用して、CIDR /ネットマスクの範囲をBIDで実際のIPアドレスに拡張します(CIDR /ネットマスクの値を実際のIPアドレスに拡張します)。
grep -oE '(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\/([0-9]{1,2})' ipset-20181228.txt | awk 'NF { system( "prips " $0) }' | wc -l
そして、2018年のMacBook Airで(ファンがキックして)なんと20〜30分後(!!!)、得た数は736,000,000+であり、これは私が考えているものです…しかし、20〜30分は長すぎます。私はこれを可能な限りスクリプト可能で邪魔にならないようにしたいと思います。また、リソースを消費することなく本番サーバーで実行するようなコマンドを信頼することはできません。私の地元の2018年のMacBook Air開発環境でそれがどのように振る舞うのかを見ることを意味します。
単にCIDR /ネットマスク値に基づいてCIDR /ネットマスク範囲カウントを計算する方法はありますか?私は、コマンドラインツール、または私が使用している既存のツールの中のオプションしかないことを願っています。
2^(32-mask)-2
。マスクはネットビットを表すので、他の部分はホストビットを表します。 -2
ネットアドレスとブロードキャストIPアドレス用です。あなたが持っている場合 ipcalc
インストールして実行するとそれらの情報が表示されます。 (あなたの質問を誤解した場合は申し訳ありません)。
2^(32-mask)
アドレスとそれだけです。
2^(32-mask)
。
1.2.3.0/24
に1.2.3.0-1.2.3.255
オプションB1.2.3.0-1.2.3.255
に1.2.3.0/24
。 Nmap、tracerouteにはいくつかの機能があります。