如何merge CIDR

上一篇"高效率的iptables GEOIP模組"的留言有人問到,如何去合併CIDR?用人工計算是一件非常痛苦的事情,資料一多當然就變的天方夜譚,這麼苦命的事情當然是交給電腦去做囉。

要合併CIDR,Perl提供了非常簡單的方法,程式碼如下:

#!/usr/bin/perl
use Net::CIDR::Lite;
my $cidr = Net::CIDR::Lite->new;

$cidr->add("202.38.175.0/24");
$cidr->add("202.38.174.0/24");
$cidr->add("202.38.173.0/24");
$cidr->add("202.38.172.0/24");
$cidr->add("202.38.171.0/24");
$cidr->add("202.38.170.0/24");
$cidr->add("202.38.169.0/24");
$cidr->add("202.38.168.0/24");

print "$_\n" for $cidr->list;

執行後,會輸出合併後的結果:

202.38.168.0/21

輕鬆寫意阿~

本篇發表於 技術 並標籤為 , 。將永久鏈結加入書籤。

如何merge CIDR 有 2 則回應

  1. linux新人 說道:

    請教朋友:我可以從下載回來的geoip csv檔案提取某個國家的ip,並且刪除其它國家的ip嗎?這樣執行起來效率不是更好嗎?

  2. clyang 說道:

    不好意思,現在才回覆,效率上是沒有差別的,不管是原始或是修改過的geoip模組,在處理國家的部分都是分開處理的,即使你原始的csv檔案包含一堆國家,也不會影響到處理的效率,真正的瓶頸是卡在我文章內所提到的ip網段比對這一塊。

發表迴響

您的電子郵件位址並不會被公開。 必要欄位標記為 *

*

您可以使用這些 HTML 標籤與屬性: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>