ip2location:获取属于域的所有ip(s)

时间:2016-01-08 09:14:19

标签: php cakephp dns ip2location

我希望所有的ip都属于域名,例如google.com,我最近看了一下,https://github.com/ip2location/ip2location-cakephp。所以,我要做的就是这样:

<?php
// clientIp() will iterate from 1.1.1.1 to 255.255.255.255
App::uses('IP2LocationCore', 'IP2Location.Model');
$IP2Location = new IP2LocationCore();
$record = $IP2Location->get($this->request->clientIp());

if(strcmp($record->domainName, 'google.com')) {
// log the ip to a text file
}
?>

我的问题是:这个解决方案是否可行?,无论如何还要比这更好?

2 个答案:

答案 0 :(得分:1)

我不是一个PHP人,所以在我的回复中考虑一下!

似乎ip2location的作用是获取IP地址,并为您提供其位置。它通过编译来自各种数据源的信息来实现这一点(我想)。

但是,您需要从IP地址开始,它将为您提供与之关联的反向域。这可能与前向查找地址不同。

例如,我有一个主机名vm.example.com,我用它来指向Azure上的远程桌面会话。如果您对该地址进行反向查找,则不会获得有关我的域的任何信息,您将获得Azure域,因为这是反向注册的地方。

据我所知,除非启用了区域传输,否则无法获取域中的所有主机名。至少在没有递增整个域的情况下。

您是否有特定原因需要这样做?

答案 1 :(得分:-1)

尝试使用PHP函数gethostbynamel

<?php
$hosts = gethostbynamel('google.com');
print_r($hosts);
?>

这将返回:

Array
(
    [0] => 173.194.113.35
    [1] => 173.194.113.41
    [2] => 173.194.113.46
    [3] => 173.194.113.34
    [4] => 173.194.113.40
    [5] => 173.194.113.39
    [6] => 173.194.113.33
    [7] => 173.194.113.37
    [8] => 173.194.113.32
    [9] => 173.194.113.38
    [10] => 173.194.113.36
)