如何找到与一个主机关联的所有ips?

时间:2012-12-08 20:39:07

标签: php linux tcp dns ip

我想找到特定主机的所有IP,例如yahoo.com或facebook.com我知道他们有多个IP。什么是最好的方式?

3 个答案:

答案 0 :(得分:1)

我认为您在PHP中寻找的是dns_get_record。它将获得实际的DNS记录,可以包含多个IP地址(A记录)。请注意,由于基于DNS的负载平衡解决方案,这可能并不总能为您提供所有 IP。

来自PHP.net的示例:

<?php
$result = dns_get_record("php.net");
print_r($result);
?>

输出:

Array
(
    [0] => Array
        (
            [host] => php.net
            [type] => MX
            [pri] => 5
            [target] => pair2.php.net
            [class] => IN
            [ttl] => 6765
        )

    [1] => Array
        (
            [host] => php.net
            [type] => A
            [ip] => 64.246.30.37
            [class] => IN
            [ttl] => 8125
        )

)

答案 1 :(得分:0)

您可以做的只是查找A和AAAA记录。我假设你想用Linux做这个,因为那是标签之一。为此,您可以运行dig yahoo.com之类的命令。有关详细信息,请查看man dig。如果您没有安装dig,则可以使用软件包管理器进行安装。

对于PHP,请查看dns_get_record()函数。

请注意,有时候,大公司会为多台计算机使用相同的IP。

答案 2 :(得分:0)

你应该尝试挖掘,这是BIND诉讼的一部分。它是探索域名系统的绝佳工具。

绑定到特定域的IP地址列在ANSWER SECTION下。此外,您还会获得相关DNS服务器及其地址的列表。

示例:

$ dig yahoo.com
...

;; QUESTION SECTION:
;yahoo.com.             IN  A

;; ANSWER SECTION:
yahoo.com.      2131    IN  A   98.138.253.109
yahoo.com.      2131    IN  A   98.139.183.24
yahoo.com.      2131    IN  A   72.30.38.140

;; AUTHORITY SECTION:
yahoo.com.      65928   IN  NS  ns4.yahoo.com.
...

ns4.yahoo.com.  65928   IN  A   68.142.196.63
...