出于安全性,网络犯罪调查,政府合规性或出于好奇的目的,我们可能需要跟踪Linux服务器在互联网中的地理位置,或者至少跟踪将Internet流量转移到我们感兴趣的服务器的服务器位置。它涉及获取服务器的IP地址并使用Web中提供的某些第三方服务来映射该IP地址以获取位置。在本文中,我们将看到实现该目标的步骤。
步骤1-安装curl jq
curl软件包将向服务器发出http请求,并且需要jq处理从API接收的JSON数据,以将IP地址映射到地理位置。以下步骤显示了如何安装这些工具。
sudo apt-get install curl jq
运行上面的代码给我们以下结果-
$ sudo apt-get install curl jq Reading package lists... Done Building dependency tree Reading state information... Done curl is already the newest version (7.47.0-1ubuntu2.14). The following NEW packages will be installed: jq libonig2 … .. Setting up libonig2:amd64 (5.9.6-1ubuntu0.1) ... Setting up jq (1.5+dfsg-1ubuntu0.1) ... Processing triggers for libc-bin (2.23-0ubuntu11) .
步骤2-查找服务器的IP地址
如果您知道服务器提供的域名,则可以使用nslookup查找服务器的IP地址。在下面的示例中,我们看到如何使用nslookup命令获取域名的IP地址。让我们以oracle.com为例。
使用以下curl命令获取服务器IP地址。Ipinfo.io是提供IP详细信息的Web服务。
$ nslookup www.oracle.com
运行上面的代码给我们以下结果-
Server:127.0.1.1 Address:127.0.1.1#53 Non-authoritative answer: www.oracle.comcanonical name = ds-www.oracle.com.edgekey.net. ds-www.oracle.com.edgekey.netcanonical name = e870.dscx.akamaiedge.net. Name:e870.dscx.akamaiedge.net Address: 104.80.62.56
步骤3-查找有关IP地址的信息
接下来,我们使用IP info.in获取与此IP地址相关的详细信息。这些细节以JSON的形式返回,列出了主机名,城市,州,国家等。
$ curl https://ipinfo.io/104.80.62.56
运行上面的代码将为我们提供以下结果:
{
   "ip": "104.80.62.56",
   "hostname": "a104-80-62-56.deploy.static.akamaitechnologies.com",
   "city": "New York City",
   "region": "New York",
   "country": "US",
   "loc": "40.7143,-74.0060",
   "org": "AS20940 Akamai International B.V.",
   "postal": "10004",
   "timezone": "America/New_York",
   "readme": "https://ipinfo.io/missingauth"
}现在,当我们需要诸如纬度和经度之类的其他详细信息时,可以使用另一个名为ipvigilante.com的地理位置服务提供商。然后,我们使用jq工具从API调用返回的JSON结构中获取格式化的响应。
$curl -s https://ipvigilante.com/104.80.62.56 | jq '.data.latitude, .data.longitude, .data.city_name, .data.country_name'
运行上面的代码给我们以下结果-
"42.36260" "-71.08430" "Cambridge" "United States"