GeoIP2データベースの更新を自動化する

GeoIP2データベースの更新を自動化する プログラミング

GeoIP2を使えば、IPアドレスから住所を特定することができます。
そのための方法は、以下の記事で解説しています。

ただ、GeoIP2で利用するデータベースは毎週更新されていきます。
正確なデータを必要とするなら、それに合わせてダウンロードしないといけません。

でも、その作業を毎週人の手でやるのは面倒です。
そこで、そのダウンロードを自動化したくなります。

そのための仕組みが、MaxMind社から公開されています。
その仕組みは、GeoIP Updateというプログラムです。

本記事の内容

  • ライセンスキーの作成
  • GeoIP Updateのインストール
  • GeoIP.confの準備
  • GeoIP Updateの動作確認
  • GeoIP Updateのcron設定

それでは、上記に沿って解説していきましょう。

ライセンスキーの作成

MaxMindログイン
https://www.maxmind.com/en/account/login

まず、上記にアクセスしてログインします。
ログインすると、「Account Summary」画面が表示されます。

そして、画面の左側にメニューが表示されていることを確認できます。
その中から、次のメニューを探してクリック。

「License Keys」画面に遷移。
この画面でライセンスキーを作成することができます。

無償利用でもライセンスキーを発行することはできます。
では、「Generate new licence key」ボタンをクリック。

画面が、以下の発行画面に切り替わります。

今回は、GeoIP2から新規で利用するケースを想定しています。
そのため、ラジオボタンは「No」を選択します。

「No」を選択すると、「Confirm」ボタンがクリックできるようになります。
あと、「License key description」を変更したい場合は、各自で適当に変更してください。

問題なければ、「Confirm」ボタンをクリック。
ライセンスキーが作成できたら、次の画面で内容を確認できます。

「License key」の値は、あとで利用します。
コピーして保存しておきます。

以上で、ライセンスキーの作成が完了です。

GeoIP Updateのインストール

MaxMindが提供するプログラムが、以下で公開されています。
https://github.com/maxmind/geoipupdate/releases

2021年3月13日時点では、4.6.0が最新バージョンです。

各OS毎に用意されています。
今回は、Linux(Ubuntu)にインストールします。

そのため、「geoipupdate_4.6.0_linux_amd64.deb」をダウンロード。

$ wget "https://github.com/maxmind/geoipupdate/releases/download/v4.6.0/geoipupdate_4.6.0_linux_amd64.deb"

ダウンロードしたパッケージをインストール。

$ sudo dpkg -i geoipupdate_4.6.0_linux_amd64.deb

インストールはすぐに完了します。
インストールされたか確認しましょう。

$ dpkg --list geoipupdate
要望=(U)不明/(I)インストール/(R)削除/(P)完全削除/(H)保持
| 状態=(N)無/(I)インストール済/(C)設定/(U)展開/(F)設定失敗/(H)半インストール/(W)トリガ待ち/(T)トリガ保留
|/ エラー?=(空欄)無/(R)要再インストール (状態,エラーの大文字=異常)
||/ 名前               バージョン     アーキテクチャ 説明
+++-==================-==============-==============-==========================================
ii  geoipupdate        4.6.0          amd64          Program to perform automatic  updates of Ge

パッケージがインストールされていることを確認できます。
念のために、以下のコマンドでも確認します。

$ geoipupdate -V
geoipupdate 4.6.0

問題ありませんね。
次は、GeoIP Updateの設定ファイルを設置しましょう。

GeoIP.confの準備

GeoIP.confは、GeoIP Updateの設定ファイルです。
以下の二つに分けて、GeoIP.confの準備を説明していきます。

  • GeoIP.confの作成
  • GeoIP.confの設置

以下でそれぞれを説明します。

GeoIP.confの作成

GeoIP.confには、以下の情報を記入します。

  • AccountID
  • LicenseKey
  • EditionIDs

AccountIDは、「License Keys」画面で確認できます。
上記の「ライセンスキーの作成」項目でその画面にアクセスしています。

LicenseKeyは、作成したライセンスキーのことです。
失くした場合は、再作成すればよいでしょう。

EditionIDsが、ちょっとわかりづらいかもしれません。
EditionIDsとは、ダウンロードできるデータの種類になります。

無料版の場合は、EditionIDsには以下を設定可能です。

  • GeoLite2-ASN
  • GeoLite2-City
  • GeoLite2-Country

以上が、記入できる情報の説明でした。
そして、それらの情報をGeoIP.confには以下のようにして記入します。

# GeoIP.conf file - used by geoipupdate program to update databases
# from http://www.maxmind.com
AccountID YOUR_ACCOUNT_ID_HERE
LicenseKey YOUR_LICENSE_KEY_HERE
EditionIDs YOUR_EDITION_IDS_HERE

ただ、一からGeoIP.confを作成することはおススメされていません。
以下URLからダウンロードして使った方がいいでしょう。
https://www.maxmind.com/en/accounts/current/license-key/GeoIP.conf

もちろん、ログインした状態でアクセスしないと適切に表示されません。
それでも、「YOUR_LICENSE_KEY_HERE」は自分で置き換える必要があります。

GeoIP.confの設置

GeoIP.confは、すでに「/etc/GeoIP.conf」に存在しています。
GeoIP Updateをインストールした際に、自動的に作成されています。

なお、GeoIP.confのパスはインストールした環境により異なります。
GeoIP.confのパスを確認するには、以下のコマンドを実行します。

$ geoipupdate -v
geoipupdate version 4.6.0
Using config file /etc/GeoIP.conf
Using database directory /usr/share/GeoIP

各自の情報に基づいて、GeoIP.confを上書き保存しましょう。
これでGeoIP.confの設置までが完了です。

次に、GeoIP.confの動作確認を行います。

GeoIP Updateの動作確認

試しに動かしてみましょう。

$ sudo geoipupdate

成功の場合、何も表示されません。
作成されたデータベースは、「/usr/share/GeoIP」を確認します。
データベースの保存先は、以下のコマンドで確認できました。

$ geoipupdate -v

では、結果を確認します。

$ ls  /usr/share/GeoIP
GeoIP.dat  GeoIPv6.dat  GeoLite2-ASN.mmdb  GeoLite2-City.mmdb  GeoLite2-Country.mmdb

データベースが、作成されていますね。
それでは、最後にGeoIP Updateが自動で動くように設定しましょう。

GeoIP Updateのcron設定

データベースには、毎週更新がかかるようです。
それなら、1週間に1度動けばOKということですね。

直近では、2021年3月9日(火) にデータが更新されています。
翌日だと回線が込む可能性があります。
実際は、そんなことはないでしょうけど。

火曜日の翌々日に動くように設定しましょう。
時間は、夜中3時ぐらいにしておきます。

よって、毎週木曜日の3時に起動するように設定します。

0 3 * * 4 /usr/bin/geoipupdate

念のため、geoipupdateはフルパスにしておきます。
cronの設定に関しては、以下の記事を参考にしてください。

以上、GeoIP Updateのcron設定でした。

タイトルとURLをコピーしました