Ubuntu

IPアドレスから地域を調べる

今日、コンタクトからスパムメッセージが投稿された。
以前から、定期的に投稿されるこのメッセージ、気になったのでどこから送られてきているのか調べてみることにした。



広告


WhoisサーバーやDNSに尋ねてみれば、ある程度の情報は得られるのだけれど、もう少し場所を絞ってみたいと考えた。
ということで、IPアドレスからロケーションを調べてみる。

データーベースの入手

以前から、MaxMind社が提供しているGeoIP2 Liteを使わせていただいている。
GeoIP2 Liteデーターベースは無償だが、利用するためには登録が必要で、精度は製品版より下がるとのこと。

過去に登録を済ませており、定期的にデーターベースをアップデートしているので、これを利用する。

APIの導入

IPアドレスの情報を調べるためには、バイナリーのデーターベースファイルを検索する必要があり、それにはいくつかの手段が提供されていた。
GeoIP2 and GeoLite2 Database Documentation

色々な言語でライブラリが作られていたが、C言語で書かれたものを確認したところ、Ubuntu向けにはリポジトリも提供されていて簡単に思われた。
Github / maxmind / libmaxminddb

まず、リポジトリを追加。

$ sudo add-apt-repository ppa:maxmind/ppa

 More info: https://launchpad.net/~maxmind/+archive/ubuntu/ppa
Press [ENTER] to continue or Ctrl-c to cancel adding it.
[Enter]キーを押して続行

パッケージのインストール。

$ sudo apt install libmaxminddb0 libmaxminddb-dev mmdb-bin

コマンドのバージョンを見てみる。

$ mmdblookup --version

  mmdblookup version 1.7.1

manページも用意されているので、使い方は分かる。

ロケーションを調べてみる

データーベースファイルとIPアドレスを指定して、ロケーションを調べてみる。

$ mmdblookup -f /var/lib/GeoIP/GeoLite2-City.mmdb -i nnn.nnn.nnn.nnn

  {
    "city":
      {
        "geoname_id":
          nnnnnnn <uint32>
        "names":
          {
            "de":
              "Paris" <utf8_string>
            "en":
              "Paris" <utf8_string>
…

※IPアドレスはnでマスク。スパムコメントを投稿してきたIPアドレスを入れてみている。

IPアドレスにはIPv6を指定することもできる。

当サイトのIPアドレスを調べてみたところ、以前は割と近いところを指していたが、今日は国内のとても遠い場所が示されていた。
悪いことをしているわけではないが、あまりにお手軽に調べられるので、個人的にはある程度離れた場所が示さるのは良いと思った。
※もちろん、プロバイダーはちゃんと情報を持っているから、「インターネットが匿名ではない」ことはいうまでもない。

それと、モバイル回線からのアクセスは都内のとある場所を指していた。今いる場所とは全然違っているが、少なくとも国は間違っていない。

高い精度を求めるならば、有償のデーターベースを使うのだろう(購入していないので精度は分からないけれど…)。

さいごに

インターネットに口を開けていると、日々「色々な」アクセスを受ける。

大量にスパムコメントを送りつけてくる国があって、それには「とある範囲」のアクセス禁止で対応している。その国の人がやっているのか、ハッキングされているのかは分からないけれども、効果てきめんだった。

今回のスパムメッセージは…たまに送られてくる程度だから、しばらくは放っておこう。

広告

コメントはこちらから お気軽にどうぞ ~ 投稿に関するご意見・感想・他