CountryCode IPList

グローバルIPv4アドレス、ユニキャストIPv6アドレスは、
5つの地域インターネットレジストリ(RIR:Regional Internet Registry)で管理を行っており、
RIRで国別に割り当てたIPアドレスリストは都度更新される形でインターネット公開されている。

 
スクリプトで国別IPアドレスリストが必要になり、RIRのアドレスリストを利用する事があるのだが、
セグメント情報がCIDR形式で記載されていない為、利用する際に工夫が必要となる。
これら配布ファイルをCIDR形式に修正して一般公開しているサイトは多数あるのだが、
ファイルをIPv4/IPv6両方生成しつつ、デュアルスタックで配布サイト運営している所が無かったので公開しました。

参考サイト

注意事項

  1. ファイル利用による損益について、一切の責任を負いません
  2. 状況に応じて、アクセス制限・ダウンロードURLの変更・ファイルの公開停止をする場合があります
  3. 毎日深夜0時30分頃にファイルを生成しますが、メンテナンスで更新の遅れる事があります
  4. ファイルを自動取得する場合、サーバ負荷軽減の為に圧縮ファイルをご利用下さい
  5. CC・セグメント間はタブ区切り、順序はCC・セグメントを昇順でソートしています

ファイル

Your borwser is not supporting object tag. Please use one of the latest browsers.
Go to https://www.ns-lab.org/iplist/

  • 展開コマンド
    $ gzip    -cd cidr_ipv4.gz  > cidr_ipv4.txt
    $ bunzip2 -cd cidr_ipv4.bz2 > cidr_ipv4.txt
    $ xzcat   -cd cidr_ipv4.xz  > cidr_ipv4.txt


説明

IPアドレスリストをCIDR形式に整形するスクリプトについて、当サーバで利用している物を公開。
スクリプトはLinuxでの実行を前提にPerlで作成してあります。
ライセンスについて、筆者が作成したスクリプトは好きに改変して問題ありませんが、
外部ライブラリのライセンスについてはライブラリ配布元に帰属とします。

参考サイト

スクリプト

公開日FILESIZEMD5更新内容
2017/12/17iplist_20171217.zip9.9KB6aed24625f0aea04a4e4888a53560f7dIPリストの圧縮処理を変更
2017/12/15iplist_20171215.zip9.9KBb1d878a9d2f8472891b0a24b6b779d25初公開


初期設定

実行パス・ファイル保存先は変数に直書きしている為、下記に従って実行前に該当箇所を書き換えてください。
また、スクリプトにヘルプも埋め込んであるので、必要に応じて「./script.pl --help」で確認してください。
 

 make-country-iplist.pl
 make-country-getrir.pl
 make-country-modify.pl
 make-country-output.pl
 make-country-webdir.pl


実行コマンド

スクリプト変数を下記内容に設定し、未記載の変数をデフォルトとした場合の実行例。
CPU処理速度にも左右されますが処理完了まで5分程時間が必要となります。
外部ライブラリ(aggregate-cidr-addresses)は、IPv6対応の為に1行書き換えてください。

  • 変数設定例
    $CIDR_ROOT_DIR   = "/var/iplist";
    $SCRIPT_ROOT_DIR = "/usr/local/bin/iplist";
    $CIDR_SCRIPT     = "/usr/local/bin/iplist/aggregate-cidr-addresses";
    $IPLIST_OWNER    = "www";
    $IPLIST_GROUP    = "www";
    $IPLIST_PERMIT   = "644";
    $WEB_ROOT_PATH   = "/var/www/htdocs";

  • 実行準備
    # cd /usr/local/bin/iplist
    # wget "https://zwitterion.org/software/aggregate-cidr-addresses/aggregate-cidr-addresses"
    # diff aggregate-cidr-addresses.orig aggregate-cidr-addresses
      89c89
      <     print $_->prefix(), "\n";
      ---
      >     print 6 eq $_->version ? $_->print() : $_->prefix(), "\n";
    
    # mkdir /var/iplist
    # chmod 755 make-country-*.pl aggregate-cidr-addresses
    # ls
      aggregate-cidr-addresses  make-country-iplist.pl  make-country-output.pl
      make-country-getrir.pl    make-country-modify.pl  make-country-webdir.pl

  • 実行方法
    ローカル用IPリストの生成(WEB公開無し)
    $ ./make-country-iplist.pl
     
    WEB公開用IPリストの生成
    $ ./make-country-iplist.pl --web
     
    ヘルプの表示
    $ ./make-country-iplist.pl --help