◇はじめに
企業はもちろんですが個人でVPNや自宅サーバーのセキュリティーを高めるために国外からのアクセスを制限を設ける事は非常に有用です。
私の場合、実際に不正アクセスの履歴を追うと特定の国からのアクセスだけで日本国内からの不正アクセスはありませんでした。
不正アクセスを防止する方法としては
- 不正アクセスを遮断
- 国外からのアクセスを遮断
が有効且つ有名な方法です。
アクセス制限をするためにはipアドレスがどの国の物なのか記録したIPアドレスリストが必要になります。
しかし「世界の国別 IPv4 アドレス割り当てリスト」は注意書きにもあるとおり公開を停止してしまうことがありえます。
そこでサーバー内でリストを自作してしまうのが本プログラムとなります。
◇Pythonで実装
・RIR to CIDR
※Qiitaの埋め込み表示制限により200行までしか表示されません。
全体はリンク先を直接見てください。
RIRからCIDRへ変換するプログラムです。
IPv4、IPv6の両方を変換、リストを作成します。
高速化を狙って並列ダウンロートなど並列処理をしています。
2026/01/21
なるべくシンプルになるよう全体を見直しました。
サイズは3分2ほどになり処理も早くなった気がします。
loggerなど使わなくなった関数もあるのでオリジナルも残してあります。
それぞれ作成されるファイルについて説明いたします。
今回の目的である「世界の国別 IPv4 アドレス割り当てリスト」からダウンロードできるcidr.txtと同等のファイルは\ip-lists\ipv4\_CIDR.ipv4です。
プログラムファイルと同階層に\ip-lists\フォルダが作成されます。
直下にダウンロードした5つのファイルがあります。
ファイル名はdelegated-********-extended-latest("*"はRIRの管理団体名)
次にCIDRに変換されたファイルですが、ファルダはIPv4とIPv6に分かれます。
それぞれのフォルダ下にCIDRへ変換されたアルファベット2桁の国名に分かれたファイルと統合されたファイルがあります。
統合されたファイルは_CIDR.ipv4と_CIDR.ipv6です。
・IPv4 Same Checker
IPv4のみですが重複アドレスをチェックするプログラムです。
プログレスバーによる進捗表示を実装しています。
IPアドレスは管理する5つの団体同士で譲渡されることがあります。
その際に日によって同じIPアドレスが同時に別の国に存在することがあります。
(数日で解消されます)
それをチェックします。
検出結果は_Same_RIR.ipv4に保存されます。
◇おわりに
最初にアップした記事は蛇足が多すぎたので大幅に加筆修正させていただきました。
最後までお読みいただきありがとうございました!