#author("2017-12-11T23:43:52+09:00","default:nowsky","nowsky")
#author("2017-12-13T23:16:57+09:00","default:nowsky","nowsky")
*CountryCode IPList [#d36c24e3]
グローバルIPv4アドレス、ユニキャストIPv6アドレスは、
地域インターネットレジストリ(RIR:Regional Internet Registry)で管理している。
現在は5つのRIRが活動しており、それぞれの管轄地域にIP割当てを行っている。
-ARIN:American Registry for Internet Numbers
-RIPE NCC:RIPE Network Coordination Centre
-APNIC:Asia-Pacific Network Information Centre
-LACNIC:Latin American and Caribbean Internet Address Registry
-AfriNIC:African Network Information Centre
5つの地域インターネットレジストリ(RIR:Regional Internet Registry)で管理を行っており、
RIRで国別に割り当てたIPアドレスリストは都度更新される形でインターネット公開されている。
-[[ARIN:+https://www.arin.net/]]:American Registry for Internet Numbers
-[[RIPE NCC:+https://www.ripe.net/]]:RIPE Network Coordination Centre
-[[APNIC:+https://www.apnic.net/]]:Asia-Pacific Network Information Centre
-[[LACNIC:+https://www.lacnic.net/]]:Latin American and Caribbean Internet Address Registry
-[[AfriNIC:+https://www.afrinic.net/]]:African Network Information Centre

Linuxのスクリプト監査、Firewallポリシーの自動生成を行う際、
国別IPアドレスリストが必要になる場合がある。
国別IPアドレスリストが必要になりRIRの公開しているファイルを利用する事があるのだが、
セグメント情報がCIDR形式で記載されていない為、利用する際に工夫が必要となる。
 
RIRが公開しているIP割当てリストからCIDR形式に修正した物を公開しているサイトは多数あるが、
IPv4/IPv6を両方生成しつつ、デュアルスタックで公開しているサイトは無さそうなので公開。
これら配布ファイルをCIDR形式に修正して一般公開しているサイトは多数あるのだが、
ファイルをIPv4/IPv6両方生成しつつ、デュアルスタックで配布サイト運営している所が無かったので実施。
~
*注意事項 [#hb126ce1]
+ 当ファイルの利用による損益について、一切の責任を負いません
+ ファイルのURL変更、ファイル公開の停止をする場合があります
+ 午前0時30分にファイルを自動更新しますが、更新が遅れる事もあります
+ ファイルを自動取得する場合、負荷軽減の為に圧縮ファイルをご利用下さい
+ ファイル利用による損益について、&color(#ff0000){一切の責任を負いません};
+ 配布状況によって、ダウンロードURLの変更・ファイルの公開停止をする場合があります
+ 毎日深夜1時頃にファイルを更新しますが、メンテナンスで更新が遅れる事もあります
+ ファイルを自動取得する場合、負荷軽減の為に&color(#ff0000){圧縮ファイルをご利用下さい};
~
* 実ファイル [#fed9af0e]
* ファイル [#fed9af0e]
#block
|LEFT:80|CENTER:100|CENTER:100|c
|CENTER:~Format|~IPv4|~IPv6|
|text|hoge.txt|hoge.txt|
|gzip|hoge.txt|hoge.txt|
|bzip2|hoge.txt|hoge.txt|
|xz|hoge.txt|hoge.txt|
|md5|hoge.txt|hoge.txt|
~

#block(next)
|LEFT:80|CENTER:100|CENTER:100|c
|CENTER:~RIR|~オリジナルファイル|
|ARIN| http://ftp.arin.net/pub/stats/arin/delegated-arin-extended-latest|
|RIPE NCC|http://ftp.ripe.net/pub/stats/ripencc/delegated-ripencc-extended-latest|
|APNIC|http://ftp.apnic.net/pub/stats/apnic/delegated-apnic-extended-latest|
|LACNIC|http://ftp.lacnic.net/pub/stats/lacnic/delegated-lacnic-extended-latest|
|AFRINIC|http://ftp.afrinic.net/pub/stats/afrinic/delegated-afrinic-extended-latest|
#block(end)
 

----

* スクリプト [#of6df150]
IPアドレスリストの生成に利用している自作スクリプトも公開。
今回はPerlでスクリプトを作成し、Linux上でcronによる自動実行方式とする。
* スクリプト [#tc5b9b72]
IPアドレスリストをCIDR形式に整形するスクリプトも、実際に利用している物を公開。
今回はLinuxでの実行を前提にPerlでスクリプトを作成してみました。
 
自分が作成したスクリプトは好きに改変して大丈夫ですが、
外部ライブラリを利用している箇所については、ライブラリ配布元に帰属。
筆者が作成した整形スクリプトは好きに改変して大丈夫ですが、
&color(#ff0000){外部ライブラリのライセンスについてはライブラリ配布元に帰属とします。);

* 参考サイト [#p360c105]
- [[Mark Suter:+https://zwitterion.org/software/aggregate-cidr-addresses/]]
- [[AbacusTechnologies:+https://kana.me/entry/ip-ranges-by-country]]
- [[てくにかるむ:+http://multix.jp/delegated-apnic-acl/]]

* 初期設定 [#qb8d13b2]
スクリプトにヘルプを埋め込んであるので「./script.pl --help」で確認しつつ初期設定を行う。
ただし、スクリプトの実行パス・ファイルの保存先は固定設定にしている為、
下記説明に従って各スクリプトの直書き変数を書き換える。
スクリプトにヘルプを埋め込んであるので「./script.pl --help」で確認しつつ初期設定をして下さい。
ただし、スクリプトの実行パス・ファイル保存先などは変数に直書きしている為、
下記解説に従って該当箇所を書き換えてください。
 
#region(&color(#ff0000){hoge.pl};)
 hogehoge
#region(&color(#ff0000){make-country-iplist.pl};)
 用途:スクリプト全体の統括処理、レポートメールの送信
 ---
 
#endregion
 
#region(&color(#ff0000){make-country-getrir.pl};)
 用途:RIRのIPアドレスリスト取得
 ---
#endregion
 
#region(&color(#ff0000){make-country-modify.pl};)
 用途:IPアドレスリストをCIDR形式に整形
 ---
#endregion
 
#region(&color(#ff0000){make-country-output.pl};)
 用途:整形済IPアドレスリストの出力、ファイル結合処理
#endregion
 
#region(&color(#ff0000){make-country-webdir.pl};)
 用途:整形済IPアドレスリストの圧縮、WEBディレクトリに複製
#endregion

* 実行コマンド [#f18f6174]