歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> Linux教程 >> 如何通過命令行查找一個IP的地理位置信息

如何通過命令行查找一個IP的地理位置信息

日期:2017/2/28 14:34:23   编辑:Linux教程

如果你想查找一個IP地址在地球上的實際地理位置,現在已經有好多在線的GeoIp查找服務你可以利用(例如geoiptool.com)。這些在線服務大多數都是由免費的像MaxMind這樣的GeoIP數據庫提供支持。在使用這些基於網頁的服務同時,這裡也有一些不同的方法來查詢GeoIP數據庫,尤其是Linux命令行。

在這篇教程裡,我想展示一下如何通過Linux命令行獲取IP地址的實際地理位置

方法一

第一種方法是使用geoiplookup工具,它是一個用於查詢MaxMind的GeoIP數據庫的命令行客戶端。geoiplookup允許你查詢一個IP地址(或域名)的地理信息或者網絡信息。你可以通過以下命令安裝它(它自帶了免費的GeoIP數據庫)。

在Debian,Ubuntu或Linux Mint上安裝geoiplookup:

sudo apt-get install geoip-bin

在Fedora上安裝:

sudo yum install geoip

要在CentOS上安裝,需要先打開EPEL源,然後使用yum命令:

sudo yum install geoip

默認情況下安裝的geoiplookup以及GeoIP.dat數據庫文件位於/usr/share/GeoIP。這個數據庫只能查詢到國家信息。

geoiplookup 23.66.166.151

GeoIP Country Edition: US, United States

你可以從MaxMind上下載額外的GeoIP數據庫,它將會告訴你更詳細的信息而不僅僅是國家。你也可以從這個網站上下載到許多最新的GeoIP.dat數據庫。我推薦你這麼做因為從Linux源上安裝的GeoIP.dat可能已經過時了。MaxMind上的GeoIP數據庫每月更新一次。

要從MaxMind上安裝GeoIP數據庫,按照下面的方法。你可能想添加一個cronjob(crontab任務,crontab是Unix和類Unix系統中用於周期性執行任務的指令,譯注)來使這個過程自動化。

wget http://geolite.maxmind.com/download/geoip/database/GeoLiteCountry/GeoIP.dat.gz
wget http://geolite.maxmind.com/download/geoip/database/GeoLiteCity.dat.gz
wget http://download.maxmind.com/download/geoip/database/asnum/GeoIPASNum.dat.gz
gunzip GeoIP.dat.gz
gunzip GeoIPASNum.dat.gz
gunzip GeoLiteCity.dat.gz
sudo cp GeoIP.dat GeoIPASNum.dat GeoLiteCity.dat /usr/share/GeoIP/

現在如果你重新執行geoiplookup,你將會看到額外的自治系統編號(AS Number)信息。這將會讓你大致了解這個IP地址是屬於哪個管理域(administrative domain)。

geoiplookup 128.112.119.209

GeoIP Country Edition: US, United States
GeoIP ASNum Edition: AS88 Princeton University

如果在運行命令時不帶任何參數,geoiplookup工具將只自動的使用GeoIP.dat和GeoIPASNum.dat,而不會用GeoLiteCity.dat。後面將教你查看城市一級的信息。

要獲取城市一級的地理位置信息,需要顯式的告訴geoiplookup使用GeoLiteCity.dat數據庫。

geoiplookup -f /usr/share/GeoIP/GeoLiteCity.dat 23.66.166.151

GeoIP City Edition, Rev 1: US, MA, Cambridge, 02142, 42.362598, -71.084297, 506, 617

輸出包括州,城市,郵政編碼,緯度和經度。所指示不同國家和網絡地址的准確性因地而異。例如,寬帶IP地址的地理位置信息要比移動網絡准確。

方法二

如果你想免去安裝和升級GeoIP數據庫的煩惱,你可以試試ipinfo.io在線服務。和其他的服務不同,ipinfo.io提供了基於JSON的地理信息API,所以你可以很容易的在命令行使用像curl之類的工具獲取地理信息。

curl ipinfo.io/23.66.166.151

需要注意的是它們的API限制每天最高1,000次請求。

Copyright © Linux教程網 All Rights Reserved