我构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,使得更难得到任何额外的信息。