如何在终端中查找Linux服务器地理位置?

出于安全性,网络犯罪调查,政府合规性或出于好奇的目的,我们可能需要跟踪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"