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