如何获得**全部**域的IP地址?

我构build了http://beej.us/guide/bgnet/output/html/multipage/syscalls.html#getaddrinfo提供的getaddrinfo()示例

当我在一个示例域上运行它,例如facebook.com,它列出了三(3)个IP地址:

IPv4: 69.63.189.11 IPv4: 69.63.189.16 IPv4: 69.63.181.12 

我知道,但是,有如下的答案表明有更多的地址(至less20)为facebook.com:

http://wiki.answers.com/Q/Discuss:What_is_the_IP_address_for_Facebook

这个答案是及时的,可以在将来改变。 我希望能够实现一些代码,列出运行该代码时域所使用的所有 IP地址。

有没有办法做到这一点? 如果是这样,怎么样?

您可以使用计算机上游的透明代理。

对于单台计算机,我还使用hosts文件和特殊的DNS服务器,通过为facebook.com和www.facebook.com创build一个虚假条目来毒化DNSlogging。 我把它指向某个页面上的一个页面,上面写着“你已经被破坏了”。

这工作正常,直到你的用户弄清楚如何使用匿名代理。

经过几个步骤,这真的成为一个人的问题。 如果在一个企业,它成为一个商业政策,属于人力资源。 如果在家里,注意你的孩子的电脑时间。

没有,因为这可能是facebook.com的DNS服务器只为你提供这三个:它只是没有告诉你其他人。

这样做的原因有很多:一些服务器位于您的地理位置附近,因此DNS服务器将优先考虑这些IP给您。 作为遏制潜在的DoS攻击的措施,DNS服务器将确保没有人能够知道facebook.com所使用的“全部”IP。

但主要是关于负载平衡。 在一个小时内再试一次,你可能会得到三个不同的 IP地址。 这是因为他们想要在所有服务器上传播负载,所以DNS会优先考虑没有获得更多stream量的主机。

根据dns设置,可能无法获得所有的ips。 有些服务不公开所有位置的主机条目。 也就是说,即使您获得了域的所有DNS条目,您也只能获得与您的特定位置相关的条目。

而且我正要增加循环的情况,但是正如Dean所说的,如果你再试一次,你可能会得到另外三个ips。 我也在facebook.com上做了一个快速查找,他们有一些额外的DNS安全function,使得更难得到任何额外的信息。