Linux便利コマンド : mmdblookup

うめだ
2026-07-21
2026-07-21
目次

はじめに

みなさま、mmdblookupコマンドを活用されていますでしょうか?

運用しているWebサーバーが突然のアクセス集中にみまわれて、いくつかのIPアドレスから
大量にアクセスされていといったケースが最近増えている気がします。

IPアドレスの国を確認して、海外の場合は、一時的に対象IPアドレスをドロップするといった
対応をとります。

この際の、IPアドレスから国を確認するために利用するのがmmdblookupというコマンドです。

なお、geoiplookupというコマンドもありますが、古い形式のデータベースを利用しており、
現在は更新もされていないことからmmdblookupの方が精度が高いと思われます。

そんな、mmdblookupコマンドについて、紹介させていただきます。

環境

OS : AlmaLinux 9
mmdblookupバージョン : 1.5.2

使い方

まずは事前の準備です。IPアドレスの検索用のデータベースを利用するためには、
MaxMaindのWebサイトにアカウントを登録する必要があります。

https://www.maxmind.com/en/geolite2/signup

必要事項を入力の上、登録を行います。

必要事項を入力の上、登録を行います。
登録ができたら、サインインからログインします。

https://www.maxmind.com/en/home

ログインしたら、MY ACCOUNT から Manage license keys  にて、ライセンスキーと作成します。 


ライセンスキーを作成できたら、アカウントIDとライセンスキーを控えておきます。

続いて、データベースを取得するために、geoipupdateコマンドをインストールします。

GitbubからRPMファイルをダウンロードしてきて、インストールします。

$ curl -s https://api.github.com/repos/maxmind/geoipupdate/releases/latest | grep browser_download_url
      "browser_download_url": "https://github.com/maxmind/geoipupdate/releases/download/v8.0.0/geoipupdate_8.0.0_checksums.txt"
      "browser_download_url": "https://github.com/maxmind/geoipupdate/releases/download/v8.0.0/geoipupdate_8.0.0_darwin_amd64.tar.gz"
      "browser_download_url": "https://github.com/maxmind/geoipupdate/releases/download/v8.0.0/geoipupdate_8.0.0_darwin_arm64.tar.gz"
      "browser_download_url": "https://github.com/maxmind/geoipupdate/releases/download/v8.0.0/geoipupdate_8.0.0_freebsd_386.tar.gz"
      "browser_download_url": "https://github.com/maxmind/geoipupdate/releases/download/v8.0.0/geoipupdate_8.0.0_freebsd_amd64.tar.gz"
      "browser_download_url": "https://github.com/maxmind/geoipupdate/releases/download/v8.0.0/geoipupdate_8.0.0_linux_386.deb"
      "browser_download_url": "https://github.com/maxmind/geoipupdate/releases/download/v8.0.0/geoipupdate_8.0.0_linux_386.rpm"
      "browser_download_url": "https://github.com/maxmind/geoipupdate/releases/download/v8.0.0/geoipupdate_8.0.0_linux_386.tar.gz"
      "browser_download_url": "https://github.com/maxmind/geoipupdate/releases/download/v8.0.0/geoipupdate_8.0.0_linux_amd64.deb"
      "browser_download_url": "https://github.com/maxmind/geoipupdate/releases/download/v8.0.0/geoipupdate_8.0.0_linux_amd64.rpm"
      "browser_download_url": "https://github.com/maxmind/geoipupdate/releases/download/v8.0.0/geoipupdate_8.0.0_linux_amd64.tar.gz"
      "browser_download_url": "https://github.com/maxmind/geoipupdate/releases/download/v8.0.0/geoipupdate_8.0.0_linux_arm64.deb"
      "browser_download_url": "https://github.com/maxmind/geoipupdate/releases/download/v8.0.0/geoipupdate_8.0.0_linux_arm64.rpm"
      "browser_download_url": "https://github.com/maxmind/geoipupdate/releases/download/v8.0.0/geoipupdate_8.0.0_linux_arm64.tar.gz"
      "browser_download_url": "https://github.com/maxmind/geoipupdate/releases/download/v8.0.0/geoipupdate_8.0.0_linux_armv6.deb"
      "browser_download_url": "https://github.com/maxmind/geoipupdate/releases/download/v8.0.0/geoipupdate_8.0.0_linux_armv6.rpm"
      "browser_download_url": "https://github.com/maxmind/geoipupdate/releases/download/v8.0.0/geoipupdate_8.0.0_linux_armv6.tar.gz"
      "browser_download_url": "https://github.com/maxmind/geoipupdate/releases/download/v8.0.0/geoipupdate_8.0.0_openbsd_386.tar.gz"
      "browser_download_url": "https://github.com/maxmind/geoipupdate/releases/download/v8.0.0/geoipupdate_8.0.0_openbsd_amd64.tar.gz"
      "browser_download_url": "https://github.com/maxmind/geoipupdate/releases/download/v8.0.0/geoipupdate_8.0.0_windows_386.zip"
      "browser_download_url": "https://github.com/maxmind/geoipupdate/releases/download/v8.0.0/geoipupdate_8.0.0_windows_amd64.zip"
$

現時点では、v8.0.0が最新版のようなので、環境に合わせてgeoipupdate_8.0.0_linux_amd64.rpmをダウンロードしてインストールします。

$ curl -LO https://github.com/maxmind/geoipupdate/releases/download/v8.0.0/geoipupdate_8.0.0_linux_amd64.rpm

$ sudo dnf install ./g
eoipupdate_8.0.0_linux_amd64.rpm

/etc/GeoIP.conf を編集して、控えていたアカウントIDとライセンスキー記述します。

$cat /etc/GeoIP.conf

# GeoIP.conf file for `geoipupdate` program, for versions >= 3.1.1.
# Used to update GeoIP databases from https://www.maxmind.com.
# For more information about this config file, visit the docs at
# https://dev.maxmind.com/geoip/updating-databases.

# `AccountID` is from your MaxMind account.
AccountID XXXXXXXX

# `LicenseKey` is from your MaxMind account.
LicenseKey XXXXXXXXXXXXXXXX

# `EditionIDs` is from your MaxMind account.
EditionIDs GeoLite2-ASN GeoLite2-City GeoLite2-Country

$

この状態で、geoipupdateを実行すればデータベースファイルがダウンロードされます。

$ sudo geoipupdate
$
$ ls -la /usr/share/GeoIP/*mmdb
-rw-r--r-- 1 root root 12138498 Jul 18 18:31 /usr/share/GeoIP/GeoLite2-ASN.mmdb
-rw-r--r-- 1 root root 65977666 Jul 18 17:30 /usr/share/GeoIP/GeoLite2-City.mmdb
-rw-r--r-- 1 root root  8809422 Jul 18 17:30 /usr/share/GeoIP/GeoLite2-Country.mmdb
$

mmdblookupコマンドは、libmaxminddb パッケージをインストールすれば使えるようになります。

これで事前の準備が整いましたので、試してみましょう。

$ mmdblookup -f /usr/share/GeoIP/GeoLite2-Country.mmdb -i 8.8.8.8 country iso_code

  "US" <utf8_string>

$

GoogleのパブリックDNSのIPアドレスを指定して、国コードを確認してみました。

-f で参照するデータベースファイルを指定して、-i で対象のIPアドレスを指定します。
確認結果はJSON形式で出力されますが、これだけの指定だと他の情報も出力されます。

加えて、cuntory iso_code を指定することで、知りたい国コードのみが出力されます。

まとめ

いかがでしたか?

実際の運用では、指定する引数が多いので、IPのみ指定で確認できるよう、ラッパースクリプトを作成して活用しています。

なお、データベースを定期的に更新しておく必要があります。geoipupdateコマンドをcronに登録して、自動更新できるようにしておきましょう。

ぜひとも、mmdblookupコマンドを活用してみてください。