各サーバーには、ルーターを介してサーバーに直接割り当てられるパブリックIPアドレスがあります。このパブリックIPアドレスを使用して、サーバーの地理的位置を特定できます。これには、大陸、国、さらにはサーバーの推定緯度と経度などの情報が含まれます。
IPアドレスに基づいてリモートLinuxマシンの地理的な場所を特定する必要がある状況はたくさんあります。 Webブラウザを介してサーバーのジオロケーションを見つける方法を知っているかもしれませんが、今日は、Debianオペレーティングシステムのターミナルアプリケーションを介してサーバーのジオロケーションを見つける方法を説明します。この記事では、システムのパブリックIPアドレスを見つけて、ipinfo.ioの2つのオープンAPIを使用してそのジオロケーションを取得する方法を説明します。
ジオロケーション情報は、いくつかの方法で使用できます。いくつかの使用例を以下に示します:
- サイバーセキュリティ
- デジタル広告
- コンテンツのパーソナライズ
- ジオマーケティング
- 法の執行
この記事に記載されているコマンドと手順をDebian11で実行しました。
端末上のIPアドレスの地理的位置を表示する
サーバーの地理的な場所を取得するには、CurlダウンローダーとJQコマンドラインツールが必要です。このツールを使用すると、インターネット上のジオロケーションAPIから必要なデータを取得して処理できます。これらのツールをインストールし、マシンのパブリックIPを使用して必要な位置情報を取得するには、次の手順に従ってください。
ステップ1:curlとjqをインストールする
DebianOSでターミナルを起動します。そのためには、アクティビティにアクセスしてください デスクトップの左上隅にあるタブ。次に、検索バーに「ターミナル」と入力します 。ターミナルアイコンが表示されたら、それをクリックして起動します。
ターミナルで次のコマンドを使用してDebianOSのスーパーユーザーアカウントに切り替え、必要なパスワードを入力します。
$ su
次に、ターミナルで次のコマンドを実行して、システムのリポジトリインデックスを更新します。
$ apt-get update
CurlはHTTPリクエストの作成に使用され、jqはジオロケーションAPIからのJSONデータの処理に使用されます。 Curlとjqは公式のDebianリポジトリで利用できるので、ターミナルでapt-getコマンドを使用してインストールできます。
ターミナルで次のコマンドを実行して、curlとjqをインストールします。
$ apt get insntall curl jq
システムはY/ nを提供します インストールプロセスを続行またはキャンセルするオプション。 Yと入力します 次にEnterキーを押します。その後、上記のツールのインストールが完了するまでしばらく待ちます。
ステップ2:Debianマシン/サーバーのパブリックIPを見つける
サーバーの地理的位置データを見つけるには、サーバーのパブリックIPアドレスが必要です。これは、ISPによってサーバーまたはルーターに割り当てられたアドレスです。インターネット上のすべてのサーバーは、これらのIPアドレスによって認識されます。パブリックIPアドレスを取得するには、 ipinfo.ioが提供するAPIを使用します 。
ipinfo.io へのAPI呼び出しを行うには、curlコマンドを使用する必要があります 。これを行うには、ターミナルを開き、次のコマンドを実行します。
$ curl https://ipinfo.io/ip
上記の出力(プライバシー上の懸念からここではぼやけています)は、インターネットの世界で接続および認識されるサーバーのパブリックIPです。
ステップ3:パブリックIPに基づいてジオロケーションを取得する
サーバーのパブリックIPアドレスを取得したので、 ipinfo.io’sにリクエストを送信します。 サーバーのジオロケーションデータを取得するためのAPI。この目的でcurlコマンドを使用します。次の詳細を取得します。
- 大陸
- 国
- 州/県
- 市
- 緯度と経度
ターミナルで以下のコマンドを実行して、 ipinfo.io’sからジオロケーションデータを取得します カールを使用したAPI:
$ curl https://ipinfo.io/<Public_IP>
代替IPジオロケーションプロバイダー:
curl http://api.geoiplookup.net/?query=<Public_IP>
curl https://json.geoiplookup.io/<Public_IP>
Bashスクリプトを使用して地理的位置を印刷する
サーバーの地理的な場所を確認する必要があるたびに、上記のすべての手順を実行する必要があります。これの代わりに、bashスクリプトを作成することでこのプロセスを自動化できます。このスクリプトを使用すると、1つのコマンドを実行するだけで、サーバーの地理的な場所を取得できます。以下の手順に従ってスクリプトを作成してください。
スクリプトは、任意のテキストエディタを使用して作成できます。現在のシナリオでは、nanoエディターを使用しているため、 nanoと入力します。 その後にスクリプト名が続きます(好きな名前を付けてください)。
$ nano geolocation.sh
次に、右クリックメニューを使用して次の行をコピーして貼り付けます。
$ curl -s https://ipinfo.io/$(curl -s https://ipinfo.io/ip) | jq '.data.latitude, .data.longitude, .data.city_name, .data.country_name'
Ctrl + oを押します スクリプトとCtrl+ xを保存します 終了する
次に、実行可能権限を付与することにより、上記のスクリプトを実行可能にします。これを行うには、ターミナルで次のコマンドを実行します。
$ chmod +x geo_location.sh
これで、スクリプトをテストする準備が整いました。ターミナルで次のコマンドを実行して、スクリプトを実行します。
$ ./geo_location.sh
上記の出力から、スクリプトがサーバーの緯度、経度、都市、国の名前をターミナルにきちんと印刷していることがわかります。
今のところ以上です! Debianターミナルを使用してサーバーの地理的な場所を見つける方法を学びました。 IPの地理的位置は、国、都市、緯度、経度の名前で構成される有用な情報を提供します。この情報は、上記の記事で説明したように、いくつかの方法で使用できます。