国別「IPv4/IPv6アドレスリスト」をデュアルスタックサーバで公開
Linuxサーバ、FirewallアプライアンスでIPアドレスを国レベルで遮断を行いたい場合、
RIRが公開しているIPアドレスリストをスクリプトに食わす場合がある。
この元となるRIR公開ファイルが曲者で、IPアドレスがCIDRで記載されていない為、
自力でCIDR形式に修正するか、別途CIDR形式に直してある有志が公開したファイルを使うかになる。
今まで、筆者も修正済みファイルを利用していたのだが、
仮想サーバ台数が増えてきたり、ラズパイからも取得したかったり、IPv6網から取得したかったりと、
色々と要望が増えてきたが全てを満たすサイトが中々見つからなかった。
という事で、今回は国別IPv4/IPv6アドレスリストを自力で生成し、
IPv4/IPv6デュアルスタック運用している自鯖で公開してみた。
あと、ついでにリスト生成に使っているスクリプトも手前味噌だが公開してみた。
wiki:CountryCode IPList
IPアドレスリストのダウンロードURLやスクリプト仕様などは、上記のwikiを参照してください。
処理速度優先&本気で書くならば、C++辺りで記載するのが良いのだろうが、
今回は可読性維持したまま、サクッとスクリプト処理したかったので使い慣れているPerlを採用。
スクリプト内の変数初期化が重複していたり、処理が冗長な箇所もあるがキニスルナ
使う事の多そうな「テキスト・圧縮形式(3種)」を用意してみた。
ただ、転送容量が増えすぎたり負荷が上がる様なら公開ファイル形式を減らしたり、
別のレンタルサーバに移動するかも…
ただ、どの程度のサーバ負荷がかかるか未知数な所もあるので、
暫くの間は動作ログを確認しながら経過観察して考える事にする。